19 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: field
20 CHARACTER(*),
INTENT(IN) :: file_name
21 INTEGER,
OPTIONAL :: opt_it
22 CHARACTER(len=4) :: tit
23 CHARACTER(len=3) :: st_it
24 INTEGER :: unit_file, l, lblank, start, i, j, nit
25 #include "petsc/finclude/petsc.h"
26 petscerrorcode :: ierr
27 petscmpiint :: rank, nb_procs
30 CALL mpi_comm_rank(comm,rank,ierr)
31 CALL mpi_comm_size(comm,nb_procs,ierr)
33 IF (present(opt_it))
THEN
34 WRITE(st_it,
'(i3)') opt_it
47 OPEN (unit=unit_file, file=file_name//
'.visit',
form =
'formatted', status =
'unknown')
48 WRITE(unit_file,
'(A,i7)')
'!NBLOCKS ', nb_procs
56 WRITE(unit_file,
'(A)') file_name//
'_'//tit(start:)//
'_'//st_it//
'.vtk'
60 OPEN (unit=unit_file, file=file_name//
'.pvd',
form =
'formatted', status =
'unknown')
62 WRITE(unit_file,
'(A)')
'<?xml version="1.0"?>'
63 WRITE(unit_file,
'(A)')
'<VTKFile type="Collection" version="0.1" '// &
64 'byte_order="BigEndian" compressor="vtkZLibDataCompressor">'
65 WRITE(unit_file,
'(A)')
'<Collection>'
67 DO j = 1, 3+(nit-1)*nb_procs
78 WRITE(unit_file,
'(A)')
'<DataSet timestep="'//st_it//
'" group="" '// &
79 'part="'//tit(2:)//
'" file="./'//file_name//
'_'//tit(start:)//
'_'//st_it//
'.vtu'//
'"/>'
81 WRITE(unit_file,
'(A)')
'</Collection>'
82 WRITE(unit_file,
'(A)')
'</VTKFile>'
87 IF (
SIZE(field,1)==0)
RETURN
89 WRITE(tit,
'(I4)') rank
97 OPEN (unit=unit_file, file=file_name//
'_'//tit(start:)//
'_'//st_it//
'.vtk', &
98 form =
'formatted', status =
'unknown')
99 WRITE(unit_file,
'(A)')
'# vtk DataFile Version 3.0'
100 WRITE(unit_file,
'(A)')
'vtk '//file_name//
''
101 WRITE(unit_file,
'(A)')
'ASCII'
102 WRITE(unit_file,
'(A)')
'DATASET UNSTRUCTURED_GRID'
104 WRITE(unit_file,
'(A,I7,A)')
'POINTS ', mesh%np,
' float'
105 WRITE(*,*)
'points ...'
107 WRITE(unit_file,
'(2(e14.7,2x),A)') mesh%rr(1,i), &
108 mesh%rr(2,i),
' 0.0 '
110 WRITE(*,*)
'cells ...'
111 IF (mesh%gauss%n_w==3)
THEN
112 WRITE(unit_file,
'(A,I7,I8)')
'CELLS ', mesh%me, mesh%me*4
114 WRITE(unit_file,
'(A,3(I8,1x))')
'3 ', mesh%jj(1,i)-1, mesh%jj(2,i)-1, mesh%jj(3,i)-1
116 WRITE(unit_file,
'(A,I7)')
'CELL_TYPES ', mesh%me
118 WRITE(unit_file,
'(A)')
'5'
120 ELSE IF (mesh%gauss%n_w==6)
THEN
121 WRITE(unit_file,
'(A,I7,I8)')
'CELLS ', 4*mesh%me, 4*mesh%me*4
123 WRITE(unit_file,
'(A,3(I8,1x))')
'3 ', mesh%jj(1,i)-1, mesh%jj(6,i)-1, mesh%jj(5,i)-1
124 WRITE(unit_file,
'(A,3(I8,1x))')
'3 ', mesh%jj(2,i)-1, mesh%jj(4,i)-1, mesh%jj(6,i)-1
125 WRITE(unit_file,
'(A,3(I8,1x))')
'3 ', mesh%jj(3,i)-1, mesh%jj(5,i)-1, mesh%jj(4,i)-1
126 WRITE(unit_file,
'(A,3(I8,1x))')
'3 ', mesh%jj(6,i)-1, mesh%jj(4,i)-1, mesh%jj(5,i)-1
128 WRITE(unit_file,
'(A,I7)')
'CELL_TYPES ', 4*mesh%me
131 WRITE(unit_file,
'(A)')
'5'
135 WRITE(*,*)
'data ...'
136 WRITE(unit_file,
'(A,I7)')
'POINT_DATA ',mesh%np
137 WRITE(unit_file,
'(A)')
'SCALARS scalars float 1'
138 WRITE(unit_file,
'(A)')
'LOOKUP_TABLE default'
140 WRITE(unit_file,
'(e14.7,2x)') field(i)
147 CHARACTER(LEN=200),
DIMENSION(:),
POINTER :: file_list
148 CHARACTER(LEN=200),
DIMENSION(:),
POINTER :: dummy_list
149 INTEGER,
DIMENSION(SIZE(file_list)) :: check_mylist
150 INTEGER :: check, n, count
151 #include "petsc/finclude/petsc.h"
152 mpi_comm :: communicator
153 petscmpiint :: rank, nb_procs
154 petscerrorcode :: ierr
155 CALL mpi_comm_rank(communicator, rank, ierr)
156 CALL mpi_comm_size(communicator, nb_procs, ierr)
158 CALL mpi_allgather(check, 1, mpi_integer, check_mylist, 1, &
159 mpi_integer, communicator, ierr)
162 DO n = 1,
SIZE(file_list)
163 IF (check_mylist(n)==0) cycle
166 ALLOCATE(dummy_list(count))
168 DO n = 1,
SIZE(file_list)
169 IF (check_mylist(n)==0) cycle
171 dummy_list(count) = file_list(n)
173 DEALLOCATE(file_list)
174 ALLOCATE(file_list(count))
175 file_list = dummy_list
180 CHARACTER(*),
DIMENSION(:),
INTENT(IN) :: file_list
181 CHARACTER(*),
INTENT(IN) :: file_header, what
182 INTEGER,
INTENT(IN) :: time_step
183 INTEGER :: unit_file=789, j
184 CHARACTER(len=5) :: tit, tit_part
186 IF (what==
'new')
THEN
187 OPEN (unit=unit_file, file=file_header//
'.pvd',
form =
'formatted', &
188 access =
'append', status =
'replace')
189 WRITE(unit_file,
'(A)')
'<?xml version="1.0"?>'
190 WRITE(unit_file,
'(A)')
'<VTKFile type="Collection" version="0.1"'// &
191 ' byte_order="LittleEndian" compressor="vtkZLibDataCompressor">'
192 WRITE(unit_file,
'(A)')
'<Collection>'
194 OPEN (unit=unit_file, file=file_header//
'.pvd',
form =
'formatted', &
195 access =
'append', status =
'old')
199 WRITE(tit,
'(I5)') time_step
200 DO j = 1,
SIZE(file_list)
201 WRITE(tit_part,
'(I5)') j
202 WRITE(unit_file,
'(A)')
'<DataSet timestep="'//trim(adjustl(tit))//&
203 '" group="" part="'// &
204 trim(adjustl(tit_part))//
'" file="./'//trim(adjustl(file_list(j)))//&
207 WRITE(unit_file,
'(A)')
'</Collection>'
208 WRITE(unit_file,
'(A)')
'</VTKFile>'
217 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: field
218 CHARACTER(*),
INTENT(IN) :: file_name, field_name
219 INTEGER :: unit_file=789, m, i, type_cell
221 IF (
SIZE(field)==0)
RETURN
223 OPEN (unit=unit_file, file=file_name//
'.vtu',&
224 form =
'formatted', status =
'unknown')
226 WRITE(unit_file,
'(A)')
'<VTKFile type="UnstructuredGrid" version="0.1"'// &
227 ' byte_order="LittleEndian">'
228 WRITE(unit_file,
'(A)')
'<UnstructuredGrid>'
230 WRITE(unit_file,
'(A,I9,A,I9,A)')
'<Piece NumberOfPoints="', mesh%np, &
231 '" NumberOfCells="', mesh%me,
'">'
233 WRITE(unit_file,
'(A)')
'<PointData Scalars="truc">'
236 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//
'" format="ascii">'
238 WRITE(unit_file,
'(e14.7)') field(i)
240 WRITE(unit_file,
'(A)')
'</DataArray>'
241 WRITE(unit_file,
'(A)')
'</PointData>'
245 WRITE(unit_file,
'(A)')
'<CellData>'
246 WRITE(unit_file,
'(A)')
'</CellData>'
250 WRITE(unit_file,
'(A)')
'<Points>'
251 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="Points" '//&
252 'NumberOfComponents="3" format="ascii">'
254 WRITE(unit_file,
'(e14.7,A,e14.7)') mesh%rr(1,i), &
255 ' 0.0 ', mesh%rr(2,i)
257 WRITE(unit_file,
'(A)')
'</DataArray>'
258 WRITE(unit_file,
'(A)')
'</Points>'
262 IF (mesh%gauss%n_w==3)
THEN
264 ELSE IF (mesh%gauss%n_w==6)
THEN
267 WRITE(unit_file,
'(A)')
'<Cells>'
268 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="connectivity" format="ascii">'
270 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(1:3,m)-1
271 IF (type_cell==22)
THEN
272 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(6,m)-1 , mesh%jj(4,m)-1 , mesh%jj(5,m)-1
275 WRITE(unit_file,
'(A)')
'</DataArray>'
276 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="offsets" format="ascii">'
278 WRITE(unit_file,
'(I8)') m*mesh%gauss%n_w
280 WRITE(unit_file,
'(A)')
'</DataArray>'
281 WRITE(unit_file,
'(A)')
'<DataArray type="UInt8" Name="types" format="ascii">'
283 WRITE(unit_file,
'(I8)') type_cell
285 WRITE(unit_file,
'(A)')
'</DataArray>'
286 WRITE(unit_file,
'(A)')
'</Cells>'
289 WRITE(unit_file,
'(A)')
'</Piece>'
290 WRITE(unit_file,
'(A)')
'</UnstructuredGrid>'
291 WRITE(unit_file,
'(A)')
'</VTKFile>'
300 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: field
301 CHARACTER(*),
INTENT(IN) :: file_name
302 INTEGER :: unit_file=789, m, i, type_cell
303 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: opt_st
304 CHARACTER(LEN=200) :: field_name
306 IF (present(opt_st))
THEN
312 IF (
SIZE(field)==0)
RETURN
313 OPEN (unit=unit_file, file=file_name//
'.vtu',&
314 form =
'formatted', status =
'unknown')
316 WRITE(unit_file,
'(A)')
'<VTKFile type="UnstructuredGrid" version="0.1"'// &
317 ' byte_order="LittleEndian">'
318 WRITE(unit_file,
'(A)')
'<UnstructuredGrid>'
320 WRITE(unit_file,
'(A,I9,A,I9,A)')
'<Piece NumberOfPoints="', mesh%np, &
321 '" NumberOfCells="', mesh%me,
'">'
323 WRITE(unit_file,
'(A)')
'<PointData>'
324 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//&
325 '_cos" format="ascii" NumberOfComponents="3">'
327 WRITE(unit_file,
'(e14.7)') field(i,1), field(i,3), field(i,5)
329 WRITE(unit_file,
'(A)')
'</DataArray>'
330 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//&
331 '_sin" format="ascii" NumberOfComponents="3">'
333 WRITE(unit_file,
'(e14.7)') field(i,2), field(i,4), field(i,6)
335 WRITE(unit_file,
'(A)')
'</DataArray>'
336 WRITE(unit_file,
'(A)')
'</PointData>'
340 WRITE(unit_file,
'(A)')
'<CellData>'
341 WRITE(unit_file,
'(A)')
'</CellData>'
345 WRITE(unit_file,
'(A)')
'<Points>'
346 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="Points" '//&
347 'NumberOfComponents="3" format="ascii">'
349 WRITE(unit_file,
'(e14.7,A,e14.7)') mesh%rr(1,i),
' 0.0 ' , &
352 WRITE(unit_file,
'(A)')
'</DataArray>'
353 WRITE(unit_file,
'(A)')
'</Points>'
357 IF (mesh%gauss%n_w==3)
THEN
359 ELSE IF (mesh%gauss%n_w==6)
THEN
362 WRITE(unit_file,
'(A)')
'<Cells>'
363 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="connectivity" format="ascii">'
365 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(1:3,m)-1
366 IF (type_cell==22)
THEN
367 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(6,m)-1 , mesh%jj(4,m)-1 , mesh%jj(5,m)-1
370 WRITE(unit_file,
'(A)')
'</DataArray>'
371 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="offsets" format="ascii">'
373 WRITE(unit_file,
'(I8)') m*mesh%gauss%n_w
375 WRITE(unit_file,
'(A)')
'</DataArray>'
376 WRITE(unit_file,
'(A)')
'<DataArray type="UInt8" Name="types" format="ascii">'
378 WRITE(unit_file,
'(I8)') type_cell
380 WRITE(unit_file,
'(A)')
'</DataArray>'
381 WRITE(unit_file,
'(A)')
'</Cells>'
384 WRITE(unit_file,
'(A)')
'</Piece>'
385 WRITE(unit_file,
'(A)')
'</UnstructuredGrid>'
386 WRITE(unit_file,
'(A)')
'</VTKFile>'
396 CHARACTER(*),
INTENT(IN) :: header
397 CHARACTER(*),
INTENT(IN) :: field_name, what
398 INTEGER,
OPTIONAL,
INTENT(IN) :: opt_it
399 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: field
401 CHARACTER(LEN=200),
DIMENSION(:),
POINTER :: file_list
402 CHARACTER(LEN=3) :: st_rank, st_it
403 #include "petsc/finclude/petsc.h"
404 petscerrorcode :: ierr
405 petscmpiint :: rank, nb_procs
406 mpi_comm :: communicator
407 CALL mpi_comm_rank(communicator, rank, ierr)
408 CALL mpi_comm_size(communicator, nb_procs, ierr)
409 ALLOCATE(file_list(nb_procs))
410 IF (present(opt_it))
THEN
412 WRITE(st_it,
'(I3)') it
414 WRITE(st_rank,
'(I3)') j
415 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))//&
416 '_it_'//trim(adjustl(st_it))
420 WRITE(st_rank,
'(I3)') j
421 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))
425 CALL
check_list(communicator, file_list, mesh%np)
427 IF (present(opt_it))
THEN
435 IF (
SIZE(field,2) == 6)
THEN
437 ELSE IF (
SIZE(field,2) == 1)
THEN
439 ELSE IF (
SIZE(field,2) .GT. 0)
THEN
442 CALL
error_petsc(
'Bug in make_vtu_file_2D: field needs at least one component')
452 CHARACTER(*),
INTENT(IN) :: header
453 CHARACTER(*),
INTENT(IN) :: field_name, what
454 INTEGER,
INTENT(IN) :: num_vp
455 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: field
456 CHARACTER(LEN=200),
DIMENSION(1) :: file_list
457 CHARACTER(LEN=3) :: st_rank
458 #include "petsc/finclude/petsc.h"
459 petscerrorcode :: ierr
460 petscmpiint :: rank, nb_procs
461 mpi_comm :: communicator
462 CALL mpi_comm_rank(communicator, rank, ierr)
463 CALL mpi_comm_size(communicator, nb_procs, ierr)
465 WRITE(st_rank,
'(I3)') num_vp
466 file_list(1) = trim(header)//
'_eigen_'//trim(adjustl(st_rank))
471 IF (
SIZE(field,2) == 6)
THEN
473 ELSE IF (
SIZE(field,2) == 1)
THEN
475 ELSE IF (
SIZE(field,2) .GT. 0)
THEN
478 CALL
error_petsc(
'Bug in make_vtu_file_arpack: field needs at least one component')
484 field, field_name, what, opt_it)
489 CHARACTER(*),
INTENT(IN) :: header
490 CHARACTER(*),
INTENT(IN) :: field_name, what
491 INTEGER,
OPTIONAL,
INTENT(IN) :: opt_it
492 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(IN) :: field
494 CHARACTER(LEN=200),
DIMENSION(:),
POINTER :: file_list
495 CHARACTER(LEN=3) :: st_rank
496 #include "petsc/finclude/petsc.h"
497 petscerrorcode :: ierr
498 petscmpiint :: rank, nb_procs
499 mpi_comm :: communicator
500 CALL mpi_comm_rank(communicator, rank, ierr)
501 CALL mpi_comm_size(communicator, nb_procs, ierr)
502 ALLOCATE(file_list(nb_procs))
504 WRITE(st_rank,
'(I3)') j
505 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))
507 CALL
check_list(communicator, file_list, mesh%np)
509 IF (present(opt_it))
THEN
526 REAL(KIND=8),
DIMENSION(:,:,:),
INTENT(IN) :: field
527 CHARACTER(*),
INTENT(IN) :: file_name
528 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: opt_st
529 CHARACTER(LEN=200) :: field_name
530 REAL(KIND=8) ::
theta, pi, dtheta
531 INTEGER :: unit_file=789, m, i, type_cell, &
534 IF (
SIZE(field,2)==0)
RETURN
536 IF (present(opt_st))
THEN
542 nb_angle =
SIZE(field,1)
544 dtheta = 2*pi/nb_angle
546 OPEN (unit=unit_file, file=file_name//
'.vtu',&
547 form =
'formatted', status =
'unknown')
549 WRITE(unit_file,
'(A)')
'<VTKFile type="UnstructuredGrid" version="0.1"'// &
550 ' byte_order="LittleEndian">'
551 WRITE(unit_file,
'(A)')
'<UnstructuredGrid>'
553 WRITE(unit_file,
'(A,I9,A,I9,A)')
'<Piece NumberOfPoints="', nb_angle*mesh%np, &
554 '" NumberOfCells="', nb_angle*mesh%me,
'">'
556 WRITE(unit_file,
'(A)')
'<PointData Scalars="truc">'
558 IF (
SIZE(field,2)==1)
THEN
559 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//&
563 WRITE(unit_file,
'(e14.7)') field(k, 1, i)
567 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//&
568 '" format="ascii" NumberOfComponents="3">'
571 WRITE(unit_file,
'(3(e14.7,x))') field(k, 1, i), field(k, 2, i), field(k, 3, i)
576 WRITE(unit_file,
'(A)')
'</DataArray>'
577 WRITE(unit_file,
'(A)')
'</PointData>'
581 WRITE(unit_file,
'(A)')
'<CellData>'
582 WRITE(unit_file,
'(A)')
'</CellData>'
586 WRITE(unit_file,
'(A)')
'<Points>'
587 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="Points" '//&
588 'NumberOfComponents="3" format="ascii">'
592 WRITE(unit_file,
'(3(e14.7,2x))') mesh%rr(1,i)*cos(
theta), &
593 mesh%rr(1,i)*sin(
theta), mesh%rr(2,i)
596 WRITE(unit_file,
'(A)')
'</DataArray>'
597 WRITE(unit_file,
'(A)')
'</Points>'
602 WRITE(unit_file,
'(A)')
'<Cells>'
603 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="connectivity" format="ascii">'
606 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(1:3,m)-1+(k-1)*mesh%np
607 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(1:3,m)-1+k*mesh%np
612 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(1:3,m)-1+(k-1)*mesh%np
613 WRITE(unit_file,
'(3(I8,1x))') mesh%jj(1:3,m)-1
615 WRITE(unit_file,
'(A)')
'</DataArray>'
616 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="offsets" format="ascii">'
617 DO m = 1, nb_angle*mesh%me
618 WRITE(unit_file,
'(I8)') 6*m
620 WRITE(unit_file,
'(A)')
'</DataArray>'
621 WRITE(unit_file,
'(A)')
'<DataArray type="UInt8" Name="types" format="ascii">'
622 DO m = 1, nb_angle*mesh%me
623 WRITE(unit_file,
'(I8)') type_cell
625 WRITE(unit_file,
'(A)')
'</DataArray>'
626 WRITE(unit_file,
'(A)')
'</Cells>'
629 WRITE(unit_file,
'(A)')
'</Piece>'
630 WRITE(unit_file,
'(A)')
'</UnstructuredGrid>'
631 WRITE(unit_file,
'(A)')
'</VTKFile>'
638 field, field_name, what, opt_it)
643 CHARACTER(*),
INTENT(IN) :: header
644 CHARACTER(*),
INTENT(IN) :: field_name, what
645 INTEGER,
OPTIONAL,
INTENT(IN) :: opt_it
646 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: field
648 CHARACTER(LEN=200),
DIMENSION(:),
POINTER :: file_list
649 CHARACTER(LEN=3) :: st_rank, st_it
650 #include "petsc/finclude/petsc.h"
651 petscerrorcode :: ierr
652 petscmpiint :: rank, nb_procs
653 mpi_comm :: communicator
654 CALL mpi_comm_rank(communicator, rank, ierr)
655 CALL mpi_comm_size(communicator, nb_procs, ierr)
656 ALLOCATE(file_list(nb_procs))
658 IF (present(opt_it))
THEN
660 WRITE(st_it,
'(I3)') it
662 WRITE(st_rank,
'(I3)') j
663 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))//&
664 '_it_'//trim(adjustl(st_it))
668 WRITE(st_rank,
'(I3)') j
669 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))
673 CALL
check_list(communicator, file_list, mesh%np)
675 IF (present(opt_it))
THEN
694 REAL(KIND=8),
DIMENSION(:,:),
INTENT(IN) :: field
695 CHARACTER(*),
INTENT(IN) :: file_name
696 CHARACTER(*),
OPTIONAL,
INTENT(IN) :: opt_st
697 CHARACTER(LEN=200) :: field_name
698 INTEGER :: unit_file=789, m, n, type_cell, stride
700 IF (
SIZE(field,2)==0)
RETURN
702 IF (
SIZE(mesh%jj,1)==6)
THEN
705 ELSE iF (
SIZE(mesh%jj,1)==15)
THEN
709 CALL
error_petsc(
'Bug in create_vtu_file_3D: SIZE(mesh%jj,1) is wrong')
712 IF (present(opt_st))
THEN
718 OPEN (unit=unit_file, file=file_name//
'.vtu',&
719 form =
'formatted', status =
'unknown')
721 WRITE(unit_file,
'(A)')
'<VTKFile type="UnstructuredGrid" version="0.1"'// &
722 ' byte_order="LittleEndian">'
723 WRITE(unit_file,
'(A)')
'<UnstructuredGrid>'
725 WRITE(unit_file,
'(A,I9,A,I9,A)')
'<Piece NumberOfPoints="', mesh%np, &
726 '" NumberOfCells="', mesh%me,
'">'
728 WRITE(unit_file,
'(A)')
'<PointData Scalars="truc">'
730 IF (
SIZE(field,1)==1)
THEN
731 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//&
734 WRITE(unit_file,
'(e14.7)') field(1,n)
737 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="'//trim(adjustl(field_name))//&
738 '" format="ascii" NumberOfComponents="3">'
740 WRITE(unit_file,
'(3(e14.7,x))') field(1,n), field(2,n), field(3,n)
744 WRITE(unit_file,
'(A)')
'</DataArray>'
745 WRITE(unit_file,
'(A)')
'</PointData>'
749 WRITE(unit_file,
'(A)')
'<CellData>'
750 WRITE(unit_file,
'(A)')
'</CellData>'
754 WRITE(unit_file,
'(A)')
'<Points>'
755 WRITE(unit_file,
'(A)')
'<DataArray type="Float32" Name="Points" '//&
756 'NumberOfComponents="3" format="ascii">'
758 WRITE(unit_file,
'(3(e14.7,x))') mesh%rr(1,n), mesh%rr(2,n), mesh%rr(3,n)
760 WRITE(unit_file,
'(A)')
'</DataArray>'
761 WRITE(unit_file,
'(A)')
'</Points>'
765 WRITE(unit_file,
'(A)')
'<Cells>'
766 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="connectivity" format="ascii">'
768 WRITE(unit_file,
'(15(I8,1x))') mesh%jj(:,m)-1
770 WRITE(unit_file,
'(A)')
'</DataArray>'
771 WRITE(unit_file,
'(A)')
'<DataArray type="Int64" Name="offsets" format="ascii">'
773 WRITE(unit_file,
'(I8)') stride*m
775 WRITE(unit_file,
'(A)')
'</DataArray>'
776 WRITE(unit_file,
'(A)')
'<DataArray type="UInt8" Name="types" format="ascii">'
778 WRITE(unit_file,
'(I8)') type_cell
780 WRITE(unit_file,
'(A)')
'</DataArray>'
781 WRITE(unit_file,
'(A)')
'</Cells>'
784 WRITE(unit_file,
'(A)')
'</Piece>'
785 WRITE(unit_file,
'(A)')
'</UnstructuredGrid>'
786 WRITE(unit_file,
'(A)')
'</VTKFile>'
794 INTEGER :: code, nb_procs, dg
795 #include "petsc/finclude/petsc.h"
796 CALL mpi_comm_size(petsc_comm_world,nb_procs,code)
798 IF (nb_procs>9999)
THEN
802 IF (nb_procs < 10)
THEN
804 ELSE IF (nb_procs < 99)
THEN
806 ELSE IF (nb_procs < 999)
THEN
808 ELSE IF (nb_procs < 9999)
THEN
821 CHARACTER(*),
INTENT(IN) :: header
822 CHARACTER(*),
INTENT(IN) :: field_name, what
823 INTEGER,
OPTIONAL,
INTENT(IN) :: opt_it
824 REAL(KIND=8),
DIMENSION(:),
INTENT(IN) :: field
826 CHARACTER(LEN=200),
DIMENSION(:),
POINTER :: file_list
827 CHARACTER(LEN=3) :: st_rank, st_it
828 #include "petsc/finclude/petsc.h"
829 petscerrorcode :: ierr
830 petscmpiint :: rank, nb_procs
832 CALL mpi_comm_rank(comm, rank, ierr)
833 CALL mpi_comm_size(comm, nb_procs, ierr)
834 ALLOCATE(file_list(nb_procs))
835 IF (present(opt_it))
THEN
837 WRITE(st_it,
'(I3)') it
839 WRITE(st_rank,
'(I3)') j
840 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))//&
841 '_it_'//trim(adjustl(st_it))
845 WRITE(st_rank,
'(I3)') j
846 file_list(j) = trim(header)//
'_proc_'//trim(adjustl(st_rank))
852 IF (present(opt_it))
THEN
859 CALL
create_vtu_scal_file(field, mesh, trim(adjustl(file_list(rank+1))), trim(adjustl(field_name)))
subroutine, public create_vtu_file_3d(field, mesh, file_name, opt_st)
subroutine, public create_vtu_file_axi3d(field, mesh, file_name, opt_st)
subroutine, public create_vtu_vect_file(field, mesh, file_name, opt_st)
integer function eval_blank(len_str, string)
section doc_intro_frame_work_num_app Numerical approximation subsection doc_intro_fram_work_num_app_Fourier_FEM Fourier Finite element representation The SFEMaNS code uses a hybrid Fourier Finite element formulation The Fourier decomposition allows to approximate the problem’s solutions for each Fourier mode modulo nonlinear terms that are made explicit The variables are then approximated on a meridian section of the domain with a finite element method The numerical approximation of a function f $f f is written in the following generic theta
subroutine, public make_vtu_file_2d(communicator, mesh, header, field, field_name, what, opt_it)
subroutine, public make_vtu_file_axi3d(communicator, mesh, header, field, field_name, what, opt_it)
subroutine, public check_list(communicator, file_list, check)
subroutine, public make_vtu_file_scalar_2d(comm, mesh, header, field, field_name, what, opt_it)
subroutine, public make_vtu_file_arpack(communicator, mesh, header, field, field_name, what, num_vp)
subroutine, public make_vtu_file_3d(communicator, mesh, header, field, field_name, what, opt_it)
integer function nb_digit()
subroutine, public create_pvd_file(file_list, file_header, time_step, what)
subroutine error_petsc(string)
subroutine, public create_vtk_file(comm, field, mesh, file_name, opt_it)
subroutine, public create_vtu_scal_file(field, mesh, file_name, field_name)
section doc_intro_frame_work_num_app Numerical approximation subsection doc_intro_fram_work_num_app_Fourier_FEM Fourier Finite element representation The SFEMaNS code uses a hybrid Fourier Finite element formulation The Fourier decomposition allows to approximate the problem’s solutions for each Fourier mode modulo nonlinear terms that are made explicit The variables are then approximated on a meridian section of the domain with a finite element method The numerical approximation of a function f $f f is written in the following generic form