vtk_fortran_pvtk_file.f90 Source File


This file depends on

sourcefile~~vtk_fortran_pvtk_file.f90~~EfferentGraph sourcefile~vtk_fortran_pvtk_file.f90 vtk_fortran_pvtk_file.f90 sourcefile~befor64.f90 befor64.F90 sourcefile~vtk_fortran_pvtk_file.f90->sourcefile~befor64.f90 sourcefile~penf.f90 penf.F90 sourcefile~vtk_fortran_pvtk_file.f90->sourcefile~penf.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_ascii_local.f90 vtk_fortran_vtk_file_xml_writer_ascii_local.f90 sourcefile~vtk_fortran_pvtk_file.f90->sourcefile~vtk_fortran_vtk_file_xml_writer_ascii_local.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90 vtk_fortran_vtk_file_xml_writer_abstract.f90 sourcefile~vtk_fortran_pvtk_file.f90->sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90 sourcefile~befor64.f90->sourcefile~penf.f90 sourcefile~befor64_pack_data_m.f90 befor64_pack_data_m.F90 sourcefile~befor64.f90->sourcefile~befor64_pack_data_m.f90 sourcefile~penf_global_parameters_variables.f90 penf_global_parameters_variables.F90 sourcefile~penf.f90->sourcefile~penf_global_parameters_variables.f90 sourcefile~penf_b_size.f90 penf_b_size.F90 sourcefile~penf.f90->sourcefile~penf_b_size.f90 sourcefile~penf_stringify.f90 penf_stringify.F90 sourcefile~penf.f90->sourcefile~penf_stringify.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_ascii_local.f90->sourcefile~penf.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_ascii_local.f90->sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90 sourcefile~stringifor.f90 stringifor.F90 sourcefile~vtk_fortran_vtk_file_xml_writer_ascii_local.f90->sourcefile~stringifor.f90 sourcefile~vtk_fortran_dataarray_encoder.f90 vtk_fortran_dataarray_encoder.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_ascii_local.f90->sourcefile~vtk_fortran_dataarray_encoder.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90->sourcefile~penf.f90 sourcefile~vtk_fortran_parameters.f90 vtk_fortran_parameters.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90->sourcefile~vtk_fortran_parameters.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90->sourcefile~stringifor.f90 sourcefile~foxy.f90 foxy.f90 sourcefile~vtk_fortran_vtk_file_xml_writer_abstract.f90->sourcefile~foxy.f90 sourcefile~befor64_pack_data_m.f90->sourcefile~penf.f90 sourcefile~penf_b_size.f90->sourcefile~penf_global_parameters_variables.f90 sourcefile~vtk_fortran_parameters.f90->sourcefile~penf.f90 sourcefile~stringifor.f90->sourcefile~penf.f90 sourcefile~stringifor_string_t.f90 stringifor_string_t.F90 sourcefile~stringifor.f90->sourcefile~stringifor_string_t.f90 sourcefile~penf_stringify.f90->sourcefile~penf_global_parameters_variables.f90 sourcefile~penf_stringify.f90->sourcefile~penf_b_size.f90 sourcefile~vtk_fortran_dataarray_encoder.f90->sourcefile~befor64.f90 sourcefile~vtk_fortran_dataarray_encoder.f90->sourcefile~penf.f90 sourcefile~foxy.f90->sourcefile~penf.f90 sourcefile~foxy_xml_file.f90 foxy_xml_file.f90 sourcefile~foxy.f90->sourcefile~foxy_xml_file.f90 sourcefile~foxy_xml_tag.f90 foxy_xml_tag.F90 sourcefile~foxy.f90->sourcefile~foxy_xml_tag.f90 sourcefile~stringifor_string_t.f90->sourcefile~befor64.f90 sourcefile~stringifor_string_t.f90->sourcefile~penf.f90 sourcefile~face.f90 face.F90 sourcefile~stringifor_string_t.f90->sourcefile~face.f90 sourcefile~foxy_xml_file.f90->sourcefile~penf.f90 sourcefile~foxy_xml_file.f90->sourcefile~foxy_xml_tag.f90 sourcefile~foxy_xml_tag.f90->sourcefile~penf.f90 sourcefile~foxy_xml_tag.f90->sourcefile~stringifor.f90

Files dependent on this one

sourcefile~~vtk_fortran_pvtk_file.f90~~AfferentGraph sourcefile~vtk_fortran_pvtk_file.f90 vtk_fortran_pvtk_file.f90 sourcefile~vtk_fortran.f90 vtk_fortran.f90 sourcefile~vtk_fortran.f90->sourcefile~vtk_fortran_pvtk_file.f90 sourcefile~vtk_fortran_write_vtr.f90 vtk_fortran_write_vtr.f90 sourcefile~vtk_fortran_write_vtr.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_write_vts.f90 vtk_fortran_write_vts.f90 sourcefile~vtk_fortran_write_vts.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_write_vtu_tensor.f90 vtk_fortran_write_vtu_tensor.f90 sourcefile~vtk_fortran_write_vtu_tensor.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_write_vtm.f90 vtk_fortran_write_vtm.f90 sourcefile~vtk_fortran_write_vtm.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_write_vtu.f90 vtk_fortran_write_vtu.f90 sourcefile~vtk_fortran_write_vtu.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_write_volatile.f90 vtk_fortran_write_volatile.f90 sourcefile~vtk_fortran_write_volatile.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_use_module_basic.f90 vtk_fortran_use_module_basic.f90 sourcefile~vtk_fortran_use_module_basic.f90->sourcefile~vtk_fortran.f90 sourcefile~vtk_fortran_write_pvts.f90 vtk_fortran_write_pvts.f90 sourcefile~vtk_fortran_write_pvts.f90->sourcefile~vtk_fortran.f90

Contents


Source Code

!< Parallel (partioned) VTK file class.
module vtk_fortran_pvtk_file
!< Parallel (partioned) VTK file class.
use befor64
use penf
use vtk_fortran_vtk_file_xml_writer_abstract
use vtk_fortran_vtk_file_xml_writer_ascii_local

implicit none
private
public :: pvtk_file

type :: pvtk_file
  !< VTK parallel (partioned) file class.
  private
  class(xml_writer_abstract), allocatable, public :: xml_writer !< XML writer.
  contains
    procedure, pass(self) :: initialize !< Initialize file.
    procedure, pass(self) :: finalize   !< Finalize file.
endtype pvtk_file
contains
  function initialize(self, filename, mesh_topology, mesh_kind, nx1, nx2, ny1, ny2, nz1, nz2) result(error)
  !< Initialize file (writer).
  !<
  !< @note This function must be the first to be called.
  !<
  !<### Supported topologies are:
  !<
  !<- PRectilinearGrid;
  !<- PStructuredGrid;
  !<- PUnstructuredGrid.
  !<
  !<### Example of usage
  !<
  !<```fortran
  !< type(pvtk_file) :: pvtk
  !< integer(I4P)    :: nx1, nx2, ny1, ny2, nz1, nz2
  !< ...
  !< error = pvtk%initialize('XML_RECT_BINARY.pvtr','PRectilinearGrid',nx1=nx1,nx2=nx2,ny1=ny1,ny2=ny2,nz1=nz1,nz2=nz2)
  !< ...
  !<```
  !< @note The file extension is necessary in the file name. The XML standard has different extensions for each
  !< different topologies (e.g. *pvtr* for rectilinear topology). See the VTK-standard file for more information.
  class(pvtk_file), intent(inout)         :: self          !< VTK file.
  character(*),     intent(in)            :: filename      !< File name.
  character(*),     intent(in)            :: mesh_topology !< Mesh topology.
  character(*),     intent(in)            :: mesh_kind     !< Kind of mesh data: Float64, Float32, ecc.
  integer(I4P),     intent(in),  optional :: nx1           !< Initial node of x axis.
  integer(I4P),     intent(in),  optional :: nx2           !< Final node of x axis.
  integer(I4P),     intent(in),  optional :: ny1           !< Initial node of y axis.
  integer(I4P),     intent(in),  optional :: ny2           !< Final node of y axis.
  integer(I4P),     intent(in),  optional :: nz1           !< Initial node of z axis.
  integer(I4P),     intent(in),  optional :: nz2           !< Final node of z axis.
  integer(I4P)                            :: error         !< Error status.

  if (.not.is_initialized) call penf_init
  if (.not.is_b64_initialized) call b64_init
  if (allocated(self%xml_writer)) deallocate(self%xml_writer)
  allocate(xml_writer_ascii_local :: self%xml_writer)
  error = self%xml_writer%initialize(format='ascii', filename=filename, mesh_topology=mesh_topology, &
                                     nx1=nx1, nx2=nx2, ny1=ny1, ny2=ny2, nz1=nz1, nz2=nz2, mesh_kind=mesh_kind)
  endfunction initialize

  function finalize(self) result(error)
  !< Finalize file (writer).
  class(pvtk_file), intent(inout) :: self  !< VTK file.
  integer(I4P)                    :: error !< Error status.

  error = 1
  if (allocated(self%xml_writer)) error = self%xml_writer%finalize()
  endfunction finalize
endmodule vtk_fortran_pvtk_file