As NetCDF is shipped with ncdump and ncgen to handle NetCDF files, ETSF_IO is shipped with its own binary program etsf_io. This utility is made to handle some high level actions on ETSF files.
etsf_io man page
etsf_io is called with the mandatory -a option (or --action) to define what action will be done by the program. Follows the little help returned by etsf_io --help:
Usage: etsf_io [-h | -a action] [[-i file]...] [[-f flag]...]
[-o file] [arguments]
Handle ETSF files, see --action option.
-h --help : show this little help.
-a --action value : give the action to perform.
Possible action may be:
* 'merge' to gather several files that
have been splitted.
* 'content' to get the name of
specifications the file matches.
* 'check' to check the validity of
the file against specifications.
-o --output-file file : give the path to the output ETSF file.
-i --input-file file : give the path for an input file. This
option can be used one or several times.
-l --list : when action is check, it give the list
of available flags.
-f --flag value : give a flag name (get valid names from
-l option).
Examples:
Merge three files, etsf_io -a merge -i file1.nc -i file2.nc
-i file3.nc -o output.nc
Get the contents of file test.nc, etsf_io -a contents test.nc
Get the list of flags for validity checks, etsf_io -a check -l
Checks with two flags, etsf_io -a check -f flag1 -f flag2 test.nc
Action merge
The merge action can read several ETSF files and create a new one, copying all variables that are not splitted and merging those that have a split definition. If there is not enough input file to create a full unsplitted array, the new file will contains some new split informations resulting from the merge. This routine also copy headers and attributes, as for all none-ETSF variables and dimensions.
An example of usage could be:
$ ./etsf_io -a merge -i output_proc1-etsf.nc -i output_proc2-etsf.nc -o output-etsf.nc
where output_proc1-etsf.nc and output_proc2-etsf.nc are two files generated by a distributed run on two processors.
Action content
The file is analised by etsf_io and produce a human readable list of matching specifications for the given file. When a specification is not matched, a reason is given.
An example of usage could be:
$ ./etsf_io -a content output-etsf.nc
Analyse file 'output-etsf.nc'
- No - wavefunctions_data.
given reason, 'primitive_vectors' -> Variable not found
- No - scalar_field_data.
given reason, 'primitive_vectors' -> Variable not found
- No - crystallographic_data.
given reason, 'primitive_vectors' -> Variable not found
Action check
Check if the given file match a given specification. It raise an error if there is an error and return 1 (or should since Fortran has no return value). It returns 0 if the file matches (or shouild because of Fortran). These problems make this action unusable at the present time.