Appearance
vtk_fortran_vtk_file
VTK file class.
Source: src/lib/vtk_fortran_vtk_file.f90
Dependencies
Contents
Derived Types
vtk_file
VTK file class.
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
xml_writer | class(xml_writer_abstract) | allocatable | XML writer. |
xml_reader | type(xml_reader) | XML reader (initialize(..., action='read')). | |
is_reading | logical | The file is open for reading. |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
get_xml_volatile | pass(self) | Return the eventual XML volatile string file. |
initialize | pass(self) | Initialize file. |
finalize | pass(self) | Finalize file. |
free | pass(self) | Free allocated memory. |
Subroutines
get_xml_volatile
Return the eventual XML volatile string file.
Attributes: pure
fortran
subroutine get_xml_volatile(self, xml_volatile, error)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(vtk_file) | in | VTK file. | |
xml_volatile | character(len=:) | out | allocatable | XML volatile file. |
error | integer(kind=I4P) | out | optional | Error status. |
Call graph
free
Free allocated memory.
Attributes: elemental
fortran
subroutine free(self, error)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(vtk_file) | inout | VTK file. | |
error | integer(kind=I4P) | out | optional | Error status. |
Call graph
Functions
initialize
Initialize file: open it for writing (default) or for reading.
@note This function must be the first to be called.
Reading
With action='read' only filename is used: the file is indexed and its data are then read through the xml_reader component (get_info, read_piece, read_geo, read_connectivity, read_polydata_cells, get_dataarray_names, get_dataarray_info, read_dataarray); finalize frees it. Its format, topology, header type and compressor come from the file. The error codes of reading are listed in the vtk_fortran_vtk_file_xml_reader module.
fortran
type(vtk_file) :: vtk
real(R8P), allocatable :: x(:), y(:), z(:), pressure(:)
error = vtk%initialize(filename='mesh.vtu', action='read')
error = vtk%xml_reader%read_geo(x=x, y=y, z=z)
error = vtk%xml_reader%read_dataarray(location='node', data_name='pressure', x=pressure)
error = vtk%finalize()Writing
format and mesh_topology are required.
Supported output formats are (the passed specifier value is case insensitive):
- ASCII: data are saved in ASCII format;
- BINARY: data are saved in base64 encoded format;
- RAW: data are saved in raw-binary format in the appended tag of the XML file;
- RAW-ZLIB: shorthand of RAW with
compressor='zlib'; - BINARY-APPENDED: data are saved in base64 encoded format in the appended tag of the XML file.
Compression of binary data
The optional compressor compresses the data of the binary formats (BINARY, RAW, BINARY-APPENDED) as VTK does (vtkZLibDataCompressor, blocks of 32 KiB): none (default) or zlib, case insensitive; it is ignored by the ASCII format. zlib needs the library built with VTKFORTRAN_USE_ZLIB: otherwise, as for an unknown compressor, initialize returns a non-zero error. RAW-ZLIB with compressor='none' is an error too.
Bytes count header of binary data
Each binary DataArray (formats BINARY, RAW, RAW-ZLIB, BINARY-APPENDED) is prefixed by its bytes count (by the header of its compressed blocks, when compressed). The optional header_type selects its width: UInt32 (default) limits each DataArray to 2 GiB (larger ones stop the execution with an explicit error), UInt64 lifts the limit; it is case insensitive and ignored by the ASCII format.
Supported topologies are:
- RectilinearGrid;
- StructuredGrid;
- UnstructuredGrid;
- ImageData: a regular grid, defined by the extents and the
origin,spacing(both required) anddirection(optional) arguments; the point of indexes (i,j,k) is atorigin + direction . ([i,j,k] * spacing). No geometry is written (write_geois not used). - PolyData: points (
write_geo(np, nc, x, y, z)) and up to four cell blocks (vertices, lines, triangle strips, polygons) written withwrite_polydata_cells; the piece is opened withwrite_piece(np, nverts, nlines, nstrips, npolys).
Example of usage
fortran
type(vtk_file) :: vtk
integer(I4P) :: nx1, nx2, ny1, ny2, nz1, nz2
...
error = vtk%initialize('BINARY','XML_RECT_BINARY.vtr','RectilinearGrid',nx1=nx1,nx2=nx2,ny1=ny1,ny2=ny2,nz1=nz1,nz2=nz2)
...
error = vtk%initialize('BINARY','XML_UNST_ZLIB.vtu','UnstructuredGrid',compressor='zlib')
...@note The file extension is necessary in the file name. The XML standard has different extensions for each different topologies (e.g. vtr for rectilinear topology). See the VTK-standard file for more information.
Returns: integer(kind=I4P)
fortran
function initialize(self, format, filename, mesh_topology, is_volatile, nx1, nx2, ny1, ny2, nz1, nz2, origin, spacing, direction, header_type, compressor, action) result(error)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(vtk_file) | inout | VTK file. | |
format | character(len=*) | in | optional | File format: ASCII, BINARY, RAW, RAW-ZLIB or BINARY-APPENDED. |
filename | character(len=*) | in | File name. | |
mesh_topology | character(len=*) | in | optional | Mesh topology. |
is_volatile | logical | in | optional | Write into memory (get_xml_volatile): ascii and binary only. |
nx1 | integer(kind=I4P) | in | optional | Initial node of x axis. |
nx2 | integer(kind=I4P) | in | optional | Final node of x axis. |
ny1 | integer(kind=I4P) | in | optional | Initial node of y axis. |
ny2 | integer(kind=I4P) | in | optional | Final node of y axis. |
nz1 | integer(kind=I4P) | in | optional | Initial node of z axis. |
nz2 | integer(kind=I4P) | in | optional | Final node of z axis. |
origin | real(kind=R8P) | in | optional | Origin of ImageData: coordinates of the point of indexes (0,0,0). |
spacing | real(kind=R8P) | in | optional | Spacing of ImageData along each axis. |
direction | real(kind=R8P) | in | optional | Axes directions of ImageData, row-major 3x3 matrix (default identity). |
header_type | character(len=*) | in | optional | Bytes count header of binary data: UInt32 (default) or UInt64. |
compressor | character(len=*) | in | optional | Compressor of binary data: none (default) or zlib. |
action | character(len=*) | in | optional | Action: write (default) or read, case insensitive. |
Call graph
upper_case
Return a string in upper case (ASCII letters only).
Attributes: pure
Returns: character(len=len(string))
fortran
function upper_case(string) result(upper)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
string | character(len=*) | in | Input string. |
Call graph
finalize
Finalize file: close the writer, or free the reader.
Returns: integer(kind=I4P)
fortran
function finalize(self) result(error)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(vtk_file) | inout | VTK file. |
Call graph