Version 16 (modified by maronga, 10 years ago) (diff)

--

NetCDF data output

PALM is able to output data of different quantities as time series, vertical profiles (usually horizontally averaged), two-dimensional cross sections or 3d-volume data. Depending on the kind of output (time series, profiles, etc.) and the output format (ASCII or binary) data are written to different files (file descriptions can be found here). By default, all data output files are in netCDF format (http://www.unidata.ucar.edu/software/netcdf/), which can be processed by many public domain and commercial (graphic) software. Data from netCDF files can also be easily read from FORTRAN programs provided that a netCDF library is available.

Due to historical reasons, PALM can also output data in other formats suitable for some special graphic software. The exact format of these files corresponds to the requirements of the respective software. Still available at IMUK is AVS (e.g. iso-surfaces of 3d volume data). A description of the usage of the AVS software is given here?.

In the following pages, steering of the different data output and how to create plots of the data is described by some examples. Not all details of steering are mentioned. If necessary, these can be found within the description of the respective parameters. For most purposes it should be sufficient to read Generation of a PALM netCDF file? and Example of a PALM netCDF data set which explains the PALM-netCDF-output.

The standard data output of PALM is netCDF (network Common Data Form) in 64-bit offset format. netCDF is an interface to a library of data access functions for storing and retrieving data in the form of arrays. netCDF is an abstraction that supports a view of data as a collection of self-describing, portable objects that can be accessed through a simple interface (protable means that netCDF data files can be read on any machine regardless of where they have been created). Array values may be accessed directly, without knowing details of how the data are stored. Auxiliary information about the data, such as what units are used, may be stored with the data. Generic utilities and application programs can access netCDF datasets (files) and transform, combine, analyze, or display specified fields of the data, e.g. the contents of a netCDF dataset can be viewed using the command ncdump (see further below). Many (public domain) graphic software has built in interfaces to read netCDF datasets (e.g. ferret or NCL (see here)). The complete netCDF documentation is available from the netCDF homepage (netCDF). The netCDF tutorial for FORTRAN90 can also be found at the netCDF homepage (netCDF for FORTRAN90).

The general output format of PALM data is determined by the runtime-parameter data_output_format (data_output_format = 'netcdf', by default). For historical reasons, some alternative formats can be selected. The accuracy of the netCDF output data can be set with parameter netcdf_precision. By default, data have single (4 byte) precision. Runtime-parameter data_output_format can be used to choose between the different netCDF file formats (classic, 64-bit offset, netCDF4/HDF5). The 64-bit offset format allows creating large files (file size only limited by the underlying file system), but each output variable (array) is still limited to 2GB. In netCDF4 format, there is no limit for the size of variables, and it also allows parallel I/O into one output file. However, some (graphic) software still does not support netCDF4 format.

PALM allows the output of various data (e.g. cross sections, vertical profiles, timeseries, etc.) into different files. The following table gives an overview about the different kind of netCDF output data offered by PALM. In addition to the local names of the files, the table also lists the minimum parameter settings which are necessary to switch on the output, as well as the parameters to be used to control the output.

Kind of data Local filename Parameter settings necessary
to switch on output
Further parameters for
output control

vertical profiles

DATA_1D_PR_NETCDF

data_output_pr, dt_data_output (or dt_dopr)

averaging_interval, (or averaging_interval_pr), data_output_format, dt_averaging_input, dt_averaging_input_pr, skip_time_data_output (or skip_time_dopr), statistic_regions

timeseries

DATA_1D_TS_NETCDF

dt_dots

data_output_format, statistic_regions

spectra

DATA_1D_SP_NETCDF

comp_spectra_level, data_output_sp, dt_data_output (or dt_dosp), spectra_direction

averaging_interval (or averaging_interval_sp), data_output_format, dt_averaging_input_pr, skip_time_data_output (or skip_time_dosp)

2d cross section (xy)

DATA_2D_XY_NETCDF

data_output (or data_output_user), dt_data_output (or dt_do2d_xy), section_xy

data_output_format, data_output_2d_on_each_pe, do2d_at_begin, skip_time_data_output (or skip_time_do2d_xy)

2d cross section (xy), time-averaged

DATA_2D_XY_AV_NETCDF

data_output (or data_output_user), dt_data_output (or dt_data_output_av or dt_do2d_xy), section_xy

averaging_interval, dt_averaging_input, data_output_format, data_output_2d_on_each_pe, do2d_at_begin, skip_time_data_output (or skip_time_data_output_av, or skip_time_do2d_xy)

2d cross section (xz)

DATA_2D_XZ_NETCDF

data_output (or data_output_user), dt_data_output (or dt_do2d_xz), section_xz

data_output_format, data_output_2d_on_each_pe, do2d_at_begin, skip_time_data_output, (skip_time_do2d_xz

2d cross section (xz), time-averaged

DATA_2D_XZ_AV_NETCDF

data_output (or data_output_user), dt_data_output (or dt_data_output_av or dt_do2d_xz), section_xz

averaging_interval, dt_averaging_input, data_output_format, data_output_on_each_pe, do2d_at_begin, skip_time_data_output (or skip_time_data_output_av, or doc/app/d3par)

2d cross section (yz)

DATA_2D_YZ_NETCDF

data_output, (or data_output_user), dt_data_output (or dt_do2d_yz, section_yz

data_output_format, data_output_2d_on_each_pe, do2d_at_begin, skip_time_data_output (or skip_time_do2d_yz

2d cross section (yz), time-averaged

DATA_2D_YZ_AV_NETCDF

data_output (or data_output_user), dt_data_output (or dt_data_output_av or dt_do2d_yz), section_yz

averaging_interval, dt_averaging_input, data_output_format, data_output_2d_on_each_pe, do2d_at_begin, skip_time_data_output (or skip_time_data_output_av, or skip_time_do2d_yz, or skip_time_do2d_yz)

3d volume

DATA_3D_NETCDF

data_output (or data_output_user), or dt_data_output (or dt_do3d)

data_output_format, do3d_at_begin, nz_do3d, skip_time_data_output (or skip_time_do3d)

3d volume, time-averaged

DATA_3D_AV_NETCDF

data_output, (or data_output_user), dt_data_output (or dt_data_output_av or dt_do3d)

averaging_interval, dt_averaging_input, data_output_format, do3d_at_begin, nz_do3d, skip_time_data_output (or skip_time_data_output_av, or skip_time_do3d)

particle timeseries

DATA_1D_PTS_NETCDF

dt_data_output (or dt_dopts)

particle attributes

DATA_PRT_NETCDF

dt_write_particle_data

In addition to the kinds of data mentioned above, it is possible to output quantities at arbitrary locations by using the masked data output.