version 4.2 authored by Udo Ziegler's avatar Udo Ziegler
![logo_short_small](uploads/1e4ee858ca174663b210647640da0976/logo_short_small.png) `4.1` ## Purpose
CAIVS is a converter for NIRVANA snapshot files (`NIR#.#`; cf. The purpose of CAIVS is to convert NIRVANA output data, i.e. snapshot
[NIRVANA: snapshot files](https://gitlab.aip.de/ziegler/NIRVANA/-/wikis/3-NIRVANA-user-guide/3.3-Output-data#snapshot-files)) into data files `NIR#.#` (cf. [NIRVANA: snapshot
formats that are more suitable for visualization and postprocessing. files](https://gitlab.aip.de/ziegler/NIRVANA/-/wikis/3-NIRVANA-user-guide/3.3-Output-data#snapshot-files)),
Various output formats are supported for data readers of visualization into a data format which is more suitable for visualization and
tools like postprocessing. Various output formats are possible supporting data
reading in visualization tools like
[IDL](https://www.l3harrisgeospatial.com/Software-Technology/IDL), [IDL](https://www.l3harrisgeospatial.com/Software-Technology/IDL),
[VisIt](https://wci.llnl.gov/simulation/computer-codes/visit) or [VisIt](https://wci.llnl.gov/simulation/computer-codes/visit) or
[ParaView](https://www.paraview.org/). [ParaView](https://www.paraview.org/).
Physical variables contained in a NIRVANA Physical variables contained in a NIRVANA snapshot file can be
snapshot can be individually selected for output in the CAIVS user interface. A user can also define own variables derived from individually selected for processing. A user can, in addition, define
the imported snapshot variables. Different options exist to operate on own variables derivable from the imported variables and add it to the
the input mesh before ouput data is produced. For instance, data output. Moreover, different options exist to operate on the input mesh
conversion can be restricted to a user-defined subdomain or, to name a before ouput data is produced. For instance, data conversion can be
second example, an adaptive mesh can be transformed onto a unigrid with restricted to a user-defined spatial subdomain, or an adaptive mesh can
resolution equivalent to some refinement level of the original mesh. be transformed onto a uniform mesh with resolution equivalent to a
specified refinement level of the original mesh (if the resulting grid
Output files produced by CAIVS get names `#.format` where `#` is a size fits memory).
user-specified number, and the suffix `format`∈{`nir`,`silo`,`csv`,`h5`,`raw`}
stands for one of the possible output formats. If variables are Output files produced by CAIVS are named `#.format` where `#` is a
requested to be written out in separate files (cf. user-specified number (usually chosen to be identical with the timestep
[Specification of parameters](4.2-User-interfaces#specification-of-parameters)) number of the input snapshot file), and the suffix
the output file name reads `#.variable_name.format` where `variable_name` `format`$\in${`nir`,`silo`,`csv`,`h5`,`raw`} stands for one of the
represents the name of the selected variable. possible output formats described below. Variables can also be requested
to be written out in separate files named `#.variable_name.format` where
the additional attribute `variable_name` marks the variable.
CAIVS currently supports the following output formats: CAIVS currently supports the following output formats:
#### CAIVS native format (`#.nir`) #### CAIVS native format (`#.nir` files)
The CAIVS native file format is a proprietary, self-describing data The CAIVS native file format is a proprietary, self-describing data
format with a textual header containing metadata about the mesh format with a textual header containing metadata about the mesh
structure followed by physical data in binary form. structure followed by physical data in binary form. This format is the
authors preferred format for importing data in IDL.
The NIRVANA software provides an IDL reader for the native data format CAIVS provides an IDL reader called `readNIR.pro` which is located in
called `readNIR.pro`. The IDL procedure `readNIR.pro` is located in the the subdirectory `/caivs/idl`. `readNIR.pro` is able to import
subdirectory `/caivs/idl`. `readNIR.pro` is able to import multi-block multi-block data from an AMR simulation. However, visualization of AMR
data resulting from an AMR simulation. However, visualization of AMR data in IDL is non-trivial. CAIVS provides a few prototype routines,
data in IDL is non-trivial. NIRVANA provides a few prototype procedures located in `/caivs/idl`, to show how AMR data could be dealed with,
in `/caivs/idl` to show how AMR data imported by `readNIR.pro` could be e.g., a wrapper for a multi-block contour plot.
handled including a wrapper for a multi-block contour plot.
#### Silo (`#.silo`) #### Silo (`#.silo` files)
The [Silo](https://wci.llnl.gov/simulation/computer-codes/silo) data The [Silo](https://wci.llnl.gov/simulation/computer-codes/silo) data
format is a self-describing format developed at the Lawrence Livermore format is a self-describing format developed at the Lawrence Livermore
National Laboratory. The CAIVS Silo export module was developed on basis National Laboratory. The CAIVS Silo export module was developed on basis
of version 4.8 of the Silo library using the low-level storage driver of version 4.8 of the Silo library using the low-level storage driver
PDB. Silo is the favorit import format in VisIt. PDB. Silo is one favorit import format for VisIt.
*Note: The Silo output option requires the installation of the Silo Using Silo output requires the installation of the Silo library and the
library and the configuration of the CAIVS makefile `Makefile_CAIVS` configuration of the CAIVS makefile `Makefile_CAIVS`, the latter located
located in directory `/caivs/bin` (cf. in directory `/caivs/bin` (cf. [Quick
[Quick tutorial](2-Getting-started#quick-tutorial)).* tutorial](https://gitlab.aip.de/ziegler/NIRVANA/-/wikis/2-Getting-started#quick-tutorial))
#### CSV-like (`#.csv`) #### CSV-like (`#.csv` files)
The Comma-Separated-Variables-like format is a text file in form of a The Comma-Separated-Variables-like format is a text file in form of a
table. The produced file is not strictly CSV because the first two rows table. The produced file is not strictly CSV because the first two rows
do not store datapoints. Also entries are not separated by commas but by do not store datapoints. Furthermore, entries are not separated by
blanks. The first row contains information in the order: timestep cycle commas but by blanks. The first row contains information in the order:
number, physical time, problem dimension, coord geometry, geometry of timestep number, physical time, problem dimension, type of coordinate
vector variables, number of columns and, finally, number of datapoints. system, geometry of vector variables, number of columns, number of
The second row contains column labels. Physical data actually starts datapoints. The second row contains column labels. Physical data
with the third row. Data rows are of the form actually starts with the third row. Data rows are of the form
x y [z] variable1 variable2 .... x y [z] variable1 variable2 ....
Data from 2D simulations store only the *x*- and *y*-coordinate. The Data from 2D simulations store only the $x$- and $y$-coordinate. The
number of data rows equals the number of cells (or cell nodes) in the number of data rows equals the number of cells (or cell nodes) in the
output mesh. output mesh.
The NIRVANA software provides an IDL reader for the CSV-like data format CAIVS provides an IDL reader for the CSV-like data format called
called `readCSV.pro`. The IDL procedure `readCSV.pro` is located in the `readCSV.pro` which is located in the subdirectory `/caivs/idl`.
subdirectory `/caivs/idl`.
*Note: CSV-like files are usually larger in size and slower to read than CSV-like files are usually larger in size and slower to read in IDL than
native format files.* CAIVS native format files. CSV outout is only useful for smaller data
sets.
#### HDF5 (`#.h5`) #### HDF5 (`#.h5` files)
Output files of this type are formatted according to the Output files of this type are formatted according to the
[HDF5](https://www.hdfgroup.org/solutions/hdf5/) standard. Like the [HDF5](https://www.hdfgroup.org/solutions/hdf5/) standard. Like the
CAIVS native and Silo formats HDF5 is a self-describing file format. In CAIVS native and Silo formats HDF5 is a self-describing file format. In
contrast to these formats, however, HDF5 does not adhere to a fixed contrast to the former formats, however, HDF5 does not adhere to a fixed
layout by definition. This means that CAIVS produces its own flavoured layout by definition. This means that CAIVS produces its own flavoured
HDF5 format. Therefore, the HDF5 data file `#.h5` is accompanied by a HDF5 format. Therefore, the HDF5 data file `#.h5` is accompanied by a
[XDMF2](https://www.xdmf.org/index.php/Xdmf2\_Model\_and\_Format\_Archive) [XDMF2](https://www.xdmf.org/index.php/Xdmf2_Model_and_Format_Archive)
file named `#.h5.xmf`. The XDMF2 file is a XML-like descriptor which file named `#.h5.xmf`. The XDMF2 file is a XML-like descriptor which
determines that the output data file is a HDF5 file and deposits the deposits the applied HDF5 layout. Visualization tools like VisIt or
applied HDF5 layout. Visualization tools like VisIt or ParaView usually ParaView usually provide an XDMF reader in order to import associated
provide an XDMF reader in order to import associated HDF5 data. HDF5 data.
*Note: The HDF5 output option requires the installation of the HDF5 The HDF5 output option requires the installation of the HDF5 library and
library and the configuration of the CAIVS makefile `Makefile_CAIVS` the configuration of the CAIVS makefile `Makefile_CAIVS` located in
located in directory `/caivs/bin` (cf. directory `/caivs/bin` (cf. [Quick
[Quick tutorial](2-Getting-started#quick-tutorial)).* tutorial](https://gitlab.aip.de/ziegler/NIRVANA/-/wikis/2-Getting-started#quick-tutorial))
#### RAW (`#.raw`) #### RAW (`#.raw` files)
In the RAW output file format data arrays of variables are written out in binary In the RAW output file format data arrays of variables are written out
form without any metadata and without grid structure information. This output in binary form without any metadata and without grid structure
format may be only useful for data from uniform grid simulations information. This output format may be only useful for data from uniform
using a visualization tool which allows to separately specify grid information grid simulations using a visualization tool which allows to specify grid
by hand information by hand (e.g. [Vapor](https://www.vapor.ucar.edu) ).
(e.g. [Vapor](https://www.vapor.ucar.edu)).
 
PREV: [3.6 Code limitations](https://gitlab.aip.de/ziegler/NIRVANA/-/wikis/3-NIRVANA-user-guide/3.6-Code-limitations)       NEXT: [4.2 User interfaces](https://gitlab.aip.de/ziegler/NIRVANA/-/wikis/4-CAIVS-user-guide/4.2-User-interfaces)