Save mesh data into VTK file.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(block_object), | intent(inout) | :: | self | Block. |
||
| character(len=*), | intent(in) | :: | file_name | Output file name. |
||
| logical, | intent(in), | optional | :: | ascii | Ascii/binary output. |
|
| logical, | intent(in), | optional | :: | metrics | Save also metrics data. |
subroutine save_file_grid_vtk(self, file_name, ascii, metrics)
!< Save mesh data into VTK file.
class(block_object), intent(inout) :: self !< Block.
character(*), intent(in) :: file_name !< Output file name.
logical, intent(in), optional :: ascii !< Ascii/binary output.
logical, intent(in), optional :: metrics !< Save also metrics data.
logical :: ascii_ !< Ascii/binary output.
logical :: metrics_ !< Save also metrics data.
type(vtk_file) :: vtk !< VTK file.
ascii_ = .false. ; if (present(ascii )) ascii_ = ascii
metrics_ = .false. ; if (present(metrics)) metrics_ = metrics
associate(node=>self%node, ni=>self%signature%ni, nj=>self%signature%nj, nk=>self%signature%nk, &
nn=>self%nodes_number(with_ghosts=.false.))
if (ascii_) then
self%error%status = vtk%initialize(format='ascii', &
filename=trim(adjustl(file_name)), mesh_topology='StructuredGrid', &
nx1=0, nx2=ni, ny1=0, ny2=nj, nz1=0, nz2=nk)
else
self%error%status = vtk%initialize(format='raw', &
filename=trim(adjustl(file_name)), mesh_topology='StructuredGrid', &
nx1=0, nx2=ni, ny1=0, ny2=nj, nz1=0, nz2=nk)
endif
self%error%status = vtk%xml_writer%write_piece(nx1=0, nx2=ni, ny1=0, ny2=nj, nz1=0, nz2=nk)
self%error%status = vtk%xml_writer%write_geo(n=nn, x=node(0:ni, 0:nj, 0:nk)%vertex%x, &
y=node(0:ni, 0:nj, 0:nk)%vertex%y, &
z=node(0:ni, 0:nj, 0:nk)%vertex%z)
if (metrics_) then
self%error%status = vtk%xml_writer%write_dataarray(location='cell', action='open')
self%error%status = vtk%xml_writer%write_dataarray(data_name='volume', x=self%cell(1:ni, 1:nj, 1:nk)%volume, &
one_component=.true.)
self%error%status = vtk%xml_writer%write_dataarray(data_name='area_i', x=self%face_i(1:ni, 1:nj, 1:nk)%area, &
one_component=.true.)
self%error%status = vtk%xml_writer%write_dataarray(data_name='area_j', x=self%face_j(1:ni, 1:nj, 1:nk)%area, &
one_component=.true.)
self%error%status = vtk%xml_writer%write_dataarray(data_name='area_k', x=self%face_k(1:ni, 1:nj, 1:nk)%area, &
one_component=.true.)
self%error%status = vtk%xml_writer%write_dataarray(data_name='normals_i', x=self%face_i(1:ni, 1:nj, 1:nk)%normal%x, &
y=self%face_i(1:ni, 1:nj, 1:nk)%normal%y, &
z=self%face_i(1:ni, 1:nj, 1:nk)%normal%z)
self%error%status = vtk%xml_writer%write_dataarray(data_name='normals_j', x=self%face_j(1:ni, 1:nj, 1:nk)%normal%x, &
y=self%face_j(1:ni, 1:nj, 1:nk)%normal%y, &
z=self%face_j(1:ni, 1:nj, 1:nk)%normal%z)
self%error%status = vtk%xml_writer%write_dataarray(data_name='normals_k', x=self%face_k(1:ni, 1:nj, 1:nk)%normal%x, &
y=self%face_k(1:ni, 1:nj, 1:nk)%normal%y, &
z=self%face_k(1:ni, 1:nj, 1:nk)%normal%z)
self%error%status = vtk%xml_writer%write_dataarray(location='cell', action='close')
endif
self%error%status = vtk%xml_writer%write_piece()
self%error%status = vtk%finalize()
endassociate
endsubroutine save_file_grid_vtk