source: palm/trunk/DOC/app/chapter_4.5.1.html @ 48

Last change on this file since 48 was 48, checked in by raasch, 17 years ago

preliminary version, several changes to be explained later

File size: 40.5 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html><head>
3<meta content="text/html; charset=windows-1252" http-equiv="CONTENT-TYPE"><title>PALM chapter 4.5.1</title> <meta content="StarOffice 7 (Win32)" name="GENERATOR"> <meta content="Siegfried Raasch" name="AUTHOR"> <meta content="20041022;12155949" name="CREATED"> <meta content="20041117;11232134" name="CHANGED"> <meta content="parallel LES model" name="KEYWORDS"> <style>
4<!--
5@page { size: 21cm 29.7cm }
6-->
7</style></head>
8<body style="direction: ltr;" lang="en-US"><h4 style="line-height: 100%;"><font size="4">4.5.1
9NetCDF data output&nbsp;<span style="color: rgb(255, 0, 0);"></span></font></h4>
10<p style="line-height: 100%;">The standard data output of
11PALM is NetCDF (<span style="font-weight: bold;">Net</span>work
12<span style="font-weight: bold;">C</span>ommon <span style="font-weight: bold;">D</span>ata <span style="font-weight: bold;">F</span>orm). NetCDF is an
13interface to a library of data access functions<br>for
14storing and retrieving data in the form of arrays. NetCDF is an
15abstraction that supports a view of data as a collection of
16self-describing, <span style="font-weight: bold;">portable</span>
17objects that can be accessed through a simple interface (protable means
18that NetCDF data files can be read on any machine regardless of where they
19have been created). Array values may be accessed directly, without
20knowing details of how the data are stored. Auxiliary information about
21the data, such as what units are used, may be stored with the data.
22Generic utilities and application programs can access NetCDF datasets
23(files) and transform, combine, analyze, or display specified fields of
24the data, e.g. the contents of a NetCDF dataset can be viewed using the
25command <span style="font-family: monospace;">ncdump</span>
26(see <a href="#ncdump">further below</a>).
27Many (public domain) graphic software has built in interfaces to read
28NetCDF datasets (e.g. <span style="font-weight: bold;">ferret</span> or <span style="font-weight: bold;">NCL</span>). The complete NetCDF documentation
29is available from the <a href="http://www.unidata.ucar.edu/packages/netcdf/docs.html">NetCDF
30homepage</a>. The NetCDF tutorial for FORTRAN90 can also be found
31on <a href="http://www.muk.uni-hannover.de/%7Eraasch/PALM_group/manual/netcdf/netcdf-3_f90_tutorial.pdf">our
32web server</a>.</p><p style="line-height: 100%;">The
33output format of PALM data is determined by the runtime-parameter <a href="chapter_4.2.html#data_output_format">data_output_format</a>
34(<span style="font-weight: bold;">data_output_format</span>
35= <span style="font-style: italic;">'netcdf'</span>,
36by default). For historical reasons, some alternative formats can be
37selected (see <a href="chapter_4.2.html#data_output_format">data_output_format</a>).
38The accuracy of the NetCDF output data can be set with parameter <a href="chapter_4.1.html#netcdf_precision">netcdf_precision</a>.
39By default, data have single (4 byte) precision. Also by default,
40NetCDF datasets (files) are not allowed to be larger than 2 GByte.
41Larger datasets can be created&nbsp;by setting <a href="chapter_4.2.html#netcdf_64bit">netcdf_64bit</a>
42= <span style="font-style: italic;">.TRUE.</span>.
43These files then have the so-called 64bit-offset format. However,
44currently, many of the existing application programs may not support
45this 64-bit offset format.<br></p>PALM allows the output of
46various
47data (e.g. cross sections, vertical profiles, timeseries, etc.) into
48different files. The following table gives an overview about the
49different kind of NetCDF output data offered by PALM. Beside the local
50names of the files, the table also lists the minimum parameter settings which
51are necessary to switch on the output, as well as the parameters to be
52used to control the output.<br><br><table style="text-align: left; width: 750px; height: 226px;" border="1" cellpadding="2" cellspacing="2"><tbody><tr><td align="left" valign="top"><span style="font-weight: bold;">kind of data</span></td><td align="left" valign="top"><span style="font-weight: bold;">local filename</span></td><td align="left" valign="top"><span style="font-weight: bold;">parameter settings necessary to
53switch on output</span></td><td align="left" valign="top"><span style="font-weight: bold;">further
54parameters for output control</span></td></tr><tr><td align="left" valign="top">vertical profiles</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_1D_PR_NETCDF">DATA_1D_PR_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output_pr">data_output_pr</a>,
55<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
56(or <a href="chapter_4.2.html#dt_dopr">dt_dopr</a>)</td><td align="left" valign="top"><a href="chapter_4.2.html#averaging_interval">averaging_interval</a>,
57(or <a href="chapter_4.2.html#averaging_interval_pr">averaging_interval_pr</a>),
58<a href="chapter_4.2.html#data_output_format">data_output_format</a>,
59<a href="chapter_4.2.html#dt_averaging_input">dt_averaging_input</a>,
60<a href="chapter_4.2.html#dt_averaging_input_pr">dt_averaging_input_pr</a>,
61<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
62(or <a href="chapter_4.2.html#skip_time_dopr">skip_time_dopr</a>),
63<a href="chapter_4.1.html#statistic_regions">statistic_regions</a></td></tr><tr><td align="left" valign="top">timeseries</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_1D_TS_NETCDF">DATA_1D_TS_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#dt_dots">dt_dots</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output_format">data_output_format</a>, <a href="chapter_4.1.html#statistic_regions">statistic_regions</a></td></tr><tr><td align="left" valign="top">spectra</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_1D_SP_NETCDF">DATA_1D_SP_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#comp_spectra_level">comp_spectra_level</a>,
64<a href="chapter_4.2.html#data_output_sp">data_output_sp</a>,
65<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
66(or <a href="chapter_4.2.html#dt_dosp">dt_dosp</a>),
67<a href="chapter_4.2.html#spectra_direction">spectra_direction</a></td><td align="left" valign="top"><a href="chapter_4.2.html#averaging_interval">averaging_interval</a>&nbsp;(or
68<a href="chapter_4.2.html#averaging_interval_sp">averaging_interval_sp</a>),
69<a href="chapter_4.2.html#data_output_format">data_output_format</a>,
70<a href="chapter_4.2.html#dt_averaging_input_pr">dt_averaging_input_pr</a>,
71<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
72(or <a href="chapter_4.2.html#skip_time_dosp">skip_time_dosp)</a></td></tr><tr><td align="left" valign="top">2d cross section (xy)</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_2D_XY_NETCDF">DATA_2D_XY_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
73(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
74<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
75(or <a href="chapter_4.2.html#dt_do2d_xy">dt_do2d_xy</a>),
76<a href="chapter_4.2.html#section_xy">section_xy</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output_format">data_output_format</a>,
77<a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>,
78<a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>,
79<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
80(or <a href="chapter_4.2.html#skip_time_do2d_xy">skip_time_do2d_xy</a>)</td></tr><tr><td align="left" valign="top">2d cross section (xy),
81time-averaged</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_2D_XY_AV_NETCDF">DATA_2D_XY_AV_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
82(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
83<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
84(or <a href="chapter_4.2.html#dt_data_output_av">dt_data_output_av</a>&nbsp;or
85<a href="chapter_4.2.html#dt_do2d_xy">dt_do2d_xy</a>),
86<a href="chapter_4.2.html#section_xy">section_xy</a></td><td align="left" valign="top"><a href="chapter_4.2.html#averaging_interval">averaging_interval</a>,
87<a href="chapter_4.2.html#dt_averaging_input">dt_averaging_input</a>,
88<a href="chapter_4.2.html#data_output_format">data_output_format</a>,
89<a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>,
90<a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>,
91<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
92(or <a href="chapter_4.2.html#skip_time_data_output_av">skip_time_data_output_av</a>,
93or <a href="chapter_4.2.html#skip_time_do2d_xy">skip_time_do2d_xy</a>)</td></tr><tr><td align="left" valign="top">2d cross section (xz)</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_2D_XZ_NETCDF">DATA_2D_XZ_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
94(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
95<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
96(or <a href="chapter_4.2.html#dt_do2d_xz">dt_do2d_xz</a>),
97<a href="chapter_4.2.html#section_xz">section_xz</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output_format">data_output_format</a>,
98<a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>,
99<a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>,
100<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
101(or <a href="chapter_4.2.html#skip_time_do2d_xz">skip_time_do2d_xz</a>)</td></tr><tr><td align="left" valign="top">2d cross section (xz),
102time-averaged</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_2D_XZ_AV_NETCDF">DATA_2D_XZ_AV_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
103(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
104<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
105(or <a href="chapter_4.2.html#dt_data_output_av">dt_data_output_av</a>&nbsp;or
106<a href="chapter_4.2.html#dt_do2d_xz">dt_do2d_xz</a>),
107<a href="chapter_4.2.html#section_xz">section_xz</a></td><td align="left" valign="top"><a href="chapter_4.2.html#averaging_interval">averaging_interval</a>,
108<a href="chapter_4.2.html#dt_averaging_input">dt_averaging_input</a>,
109<a href="chapter_4.2.html#data_output_format">data_output_format</a>,
110<a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>,
111<a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>,
112<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
113(or <a href="chapter_4.2.html#skip_time_data_output_av">skip_time_data_output_av</a>,
114or <a href="chapter_4.2.html#skip_time_do2d_xz">skip_time_do2d_xz</a>)</td></tr><tr><td align="left" valign="top">2d cross section (yz)</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_2D_YZ_NETCDF">DATA_2D_YZ_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
115(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
116<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
117(or <a href="chapter_4.2.html#dt_do2d_yz">dt_do2d_yz</a>),
118<a href="chapter_4.2.html#section_yz">section_yz</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output_format">data_output_format</a>,
119<a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>,
120<a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>,
121<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
122(or <a href="chapter_4.2.html#skip_time_do2d_yz">skip_time_do2d_yz</a>)</td></tr><tr><td align="left" valign="top">2d cross section (yz),
123time-averaged</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_2D_YZ_AV_NETCDF">DATA_2D_YZ_AV_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
124(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
125<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
126(or <a href="chapter_4.2.html#dt_data_output_av">dt_data_output_av</a>&nbsp;or
127<a href="chapter_4.2.html#dt_do2d_yz">dt_do2d_yz</a>),
128<a href="chapter_4.2.html#section_yz">section_yz</a></td><td align="left" valign="top"><a href="chapter_4.2.html#averaging_interval">averaging_interval</a>,
129<a href="chapter_4.2.html#dt_averaging_input">dt_averaging_input</a>,
130<a href="chapter_4.2.html#data_output_format">data_output_format</a>,
131<a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>,
132<a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>,
133<a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
134(or <a href="chapter_4.2.html#skip_time_data_output_av">skip_time_data_output_av</a>,
135or <a href="chapter_4.2.html#skip_time_do2d_yz">skip_time_do2d_yz</a>)</td></tr><tr><td align="left" valign="top">3d volume</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_3D_NETCDF">DATA_3D_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
136(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
137<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
138(or <a href="chapter_4.2.html#dt_do3d">dt_do3d</a>)</td><td align="left" valign="top"><a href="chapter_4.2.html#data_output_format">data_output_format</a>,
139<a href="chapter_4.2.html#do3d_at_begin">do3d_at_begin</a>,
140<a href="chapter_4.2.html#nz_do3d">nz_do3d</a>, <a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
141(or <a href="chapter_4.2.html#skip_time_do3d">skip_time_do3d</a>)</td></tr><tr><td align="left" valign="top">3d volume, time-averaged</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_3D_AV_NETCDF">DATA_3D_AV_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#data_output">data_output</a>
142(or <a href="chapter_4.3.html#data_output_user">data_output_user</a>),
143<a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
144(or <a href="chapter_4.2.html#dt_data_output_av">dt_data_output_av</a>&nbsp;or
145<a href="chapter_4.2.html#dt_do3d">dt_do3d</a>)</td><td align="left" valign="top"><a href="chapter_4.2.html#averaging_interval">averaging_interval</a>,
146<a href="chapter_4.2.html#dt_averaging_input">dt_averaging_input</a>,
147<a href="chapter_4.2.html#data_output_format">data_output_format</a>,&nbsp;<a href="chapter_4.2.html#do3d_at_begin">do3d_at_begin</a>,
148<a href="chapter_4.2.html#nz_do3d">nz_do3d</a>, <a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
149(or <a href="chapter_4.2.html#skip_time_data_output_av">skip_time_data_output_av</a>,
150or <a href="chapter_4.2.html#skip_time_do3d">skip_time_do3d</a>)</td></tr><tr><td align="undefined" valign="undefined">particle timeseries</td><td style="vertical-align: top;"><a href="chapter_3.4.html#DATA_1D_PTS_NETCDF">DATA_1D_PTS_NETCDF</a></td><td style="vertical-align: top;"><a href="chapter_4.2.html#dt_data_output">dt_data_output</a> (or <a href="chapter_4.2.html#dt_dopts">dt_dopts</a>)</td><td align="undefined" valign="undefined"></td></tr><tr><td align="left" valign="top">particle attributes</td><td align="left" valign="top"><a href="chapter_3.4.html#DATA_PRT_NETCDF">DATA_PRT_NETCDF</a></td><td align="left" valign="top"><a href="chapter_4.2.html#dt_write_particle_data">dt_write_particle_data</a></td><td align="left" valign="top"></td></tr></tbody></table><br><br><span style="font-weight: bold;">Creating, contents and
151post-processing of a PALM NetCDF file</span><br><br>This
152section describes, step-by-step, the creation, storage, and
153post-processing of PALM NetCDF datasets considering the output of 2d
154horizontal (xy) cross sections as example. The parameter settings
155described below are those of the <a href="http://www.muk.uni-hannover.de/%7Eraasch/PALM_group/INSTALL/example_p3d">example
156parameter file</a> (see <a href="chapter_4.4.html">chapter
1574.4</a>) so this parameter file can be used to retrace the
158following explanations.<br><br><ol><li>Output
159of xy cross
160sections requires to set at least three parameters: first, the temporal
161interval of the output time (run parameter <a href="chapter_4.2.html#dt_data_output">dt_data_output</a>
162or <a href="chapter_4.2.html#dt_do2d_xy"><u>dt_do2d_xy)</u></a><span style="text-decoration: none;">, second<span style="text-decoration: none;"></span>,
163the names of the quantities for which cross section output is wanted</span><span style="text-decoration: none;"><span style="text-decoration: none;"> (<a href="chapter_4.2.html#data_output">data_output</a></span></span>),
164and third, the position (height level given as gridpoint index) of the
165cross sections (<a href="chapter_4.2.html#section_xy">section_xy</a>).
166The string <span style="font-style: italic;">'_xy'</span>
167must be appended to the name strings assigned to <span style="font-weight: bold;">data_output</span> in
168either case. Output times
169cannot be defined
170directly but only via the output time interval, starting from the
171beginning of the initial 3d run (t=0, but no cross sections are
172written at the time t=0; exceptions see <a href="chapter_4.2.html#do2d_at_begin">do2d_at_begin</a>).
173As an exception, the first output time can be set independently with
174parameter <a href="chapter_4.2.html#skip_time_data_output">skip_time_data_output</a>
175(or <a href="chapter_4.2.html#skip_time_do2d_xy">skip_time_do2d_xy</a>).<br><br><span style="font-weight: bold;">Very important:</span><br>If
176no values have been assigned to <b>data_output</b> , <span style="font-weight: bold;">dt_data_output</span> (or <span style="font-weight: bold;">dt_do2d_xy</span>), and <b>section_xy</b>,
177or
178if the values given for <span style="font-weight: bold;">dt_data_output</span>
179(or <b>dt_do2d_xy</b>) or <span style="font-weight: bold;">skip_time_data_output</span>
180(or <span style="font-weight: bold;">skip_time_do2d_xy</span>)
181are
182larger than the simulated time (see <a href="chapter_4.1.html#end_time">end_time</a>),
183<b>then there will be no output!<br><br></b>For
184output of time-averaged data, the string <span style="font-style: italic;">'_av'</span> has to be
185additionally appended to the respective name string (see <a href="chapter_4.2.html#data_output">data_output</a>).<br><br><br></li><li>
186<p style="line-height: 100%;">Instantaneous data are output in NetCDF
187format
188into the
189local file&nbsp;<a href="chapter_3.4.html#DATA_2D_XY_NETCDF">DATA_2D_XY_NETCDF</a>.
190This file must be linked with a permanent file by
191using a file connection statement in the <b>mrun</b>
192configuration
193file (see e.g. <a href="chapter_3.2.html">chapter
1943.2</a>). At the end of the run the local file is copied to this
195file. Such a statement can look like this:<br><br><span style="font-family: monospace;">&nbsp;
196&nbsp;DATA_2D_XY_NETCDF out:loc:tr&nbsp;&nbsp;xy#&nbsp;
197~/$fname/OUTPUT/$fname&nbsp; _xy nc &nbsp; .</span><br><br>If
198the respective <b>mrun</b> call is
199like<br><br><span style="font-family: monospace;">&nbsp;
200&nbsp;mrun -d&nbsp; test -r &ldquo;xy#&rdquo; ... </span><br style="font-family: monospace;"><br>then the local
201file <tt><font style="font-size: 10pt;" size="2">DATA_2D_XY_NETCDF</font></tt>
202is copied to the permanent file <tt><font style="font-size: 10pt;" size="2">~/test/OUTPUT/test/test_xy.nc</font>
203</tt>. However, the character string <span style="font-family: mon; font-style: italic;">'</span><tt style="font-style: italic;"><font style="font-size: 10pt;" size="2">xy#</font></tt><span style="font-style: italic;">'</span> activating the
204file connection statement (see third column of the
205statement) must be given in the <b>mrun</b> call as
206argument of the
207option -r (and/or -o)<b>.</b> <span style="text-decoration: none;">If
208t</span>his is forgotten by mistake, the model outputs the data
209to
210the local file, but this is not copied to the permanent file and thus
211the data are not available for the user after the run has finished.<br><br>The
212last (6th) column of the file connection statement, which defines the
213additional file suffix, should be the string <span style="font-style: italic;">'nc'</span>, because many
214application programs expect NetCDF files to have the file extension <span style="font-style: italic;">'.nc'</span>. (This
215additional suffix given in the 6th column is always put at the very end of the filename, even
216in case of cycle numbers.)<br><br>Time averaged data are output into local file&nbsp;<a href="chapter_3.4.html#DATA_2D_XY_AV_NETCDF">DATA_2D_XY_AV_NETCDF</a> which requires an additional file connection statement<br><br><span style="font-family: monospace;">&nbsp;&nbsp; DATA_2D_XY_AV_NETCDF out:loc:tr&nbsp; xy#&nbsp; ~/$fname/OUTPUT/$fname&nbsp; _xy_av nc&nbsp;&nbsp; .</span><br></p></li><li>With
217parallel runs and choice of <a href="chapter_4.2.html#data_output_2d_on_each_pe">data_output_2d_on_each_pe</a>
218= <i>.T.</i>
219each PE outputs the data of its subdomain
220not directly to the NetCDF file but to a separate file with the name
221PLOT2D_XY_&lt;processor-Id&gt;,
222where &lt;processor-Id&gt; is a four digit number (e.g.
223PLOT2D_XY_0000). These files have FORTRAN binary format. After PALM has
224finished, their content is merged into the final local destination file
225DATA_2D_XY_NETCDF by the program <span style="font-family: monospace;">combine_plot_fields</span>.&nbsp;<span style="font-weight: bold;"></span>This is done by adding the following output command to the configuration file:<br><br><span style="font-family: monospace;">&nbsp; &nbsp;OC:[[$
226( echo $localhost | cut -c1-3 ) = imbh ]] &amp;&amp;
227combine_plot_fields.x &nbsp; &nbsp; .</span><br><br>Using
228this call, possibly existing
229files of the other cross sections (xz, yz) and of 3d volume data are
230also merged to their respective NetCDF files.&nbsp;The tool writes
231informative messages about the actions accomplished into the job
232protocol, even if no files were found (i.e. the output command
233may remain in the configuration file, even if no appropriate files
234are created during the simulation).&nbsp;<br><br><br></li><li><a name="ncdump"></a>The contents of a NetCDF dataset can
235be simply analyzed with the tool <span style="font-family: monospace;">ncdump</span>
236(which is part of the NetCDF software). It can be used to display the
237dimension (coordinate) names and lengths; variable names, types, and
238shapes; attribute names and values; and optionally,<br>the values
239of
240data for all variables or selected variables in a netCDF dataset. The
241file content (without displaying the gridpoint data of the quantities)
242can be displayed with the command<br><br><span style="font-family: monospace;">&nbsp; &nbsp;ncdump
243-c &lt;filename&gt; &nbsp; &nbsp; .</span><br><br>Usage
244of the <span style="font-family: monospace;">ncdump</span>
245command requires that the path to the NetCDF software is appropriately
246set. On the IMUK-Linux-cluster this path is set by default, on the
247HLRN-IBM-Regatta, the user has to execute the command<br><br><span style="font-family: monospace;">&nbsp; &nbsp;module
248load netcdf &nbsp; &nbsp; .</span><br><br>Please
249refer to the&nbsp;system documentation or system administrator on
250how
251to setup the correct NetCDF path on the respective host.<br><br>An
252example how to interpret the <span style="font-family: monospace;">ncdump</span>-output
253will be given <a href="#NetCDF_example">further below</a>.<br><br></li><li>There
254are several application programs which can be used for graphical
255display of NetCDF datasets. One of the easiest ways to display the PALM
256data is the <a style="font-family: monospace;" href="http://ferret.wrc.noaa.gov/Ferret/">ferret</a>
257graphical user interface (GUI). On the IMUK-Linux-cluster, this can be called by
258executing the command<br><br><span style="font-family: monospace;">&nbsp; &nbsp;ferret
259-gui &nbsp; &nbsp; .</span><br><br><span style="font-family: monospace;">ferret</span> is also
260available at <a href="http://www.hlrn.de/doc/ferret/index.html">HLRN</a>.
261Another possible tool is <span style="font-family: monospace;">ncview</span>,
262which is also available at HLRN (see the <a href="http://www.hlrn.de/doc/ncview/index.html">HLRN
263documentation</a>). Beside these general tools, the PALM group
264will develop a&nbsp;graphical interface based on <a href="http://www.ncl.ucar.edu/">NCL</a>
265(NCAR Command Language). This interface will be&nbsp;specially
266designed
267to display the PALM Data. A detailed documentation will be linked here
268as soon as available.<br><br><br></li><li><a name="netcdf_example_program"></a>One
269of the most flexible general ways for postprocessing NetCDF data
270is&nbsp;reading these data into a FORTRAN program. The&nbsp;<font color="#000000"></font><a href="http://www.muk.uni-hannover.de/%7Eraasch/PALM_group/INSTALL/read_palm_netcdf_data.f90"><font color="#000080">example program</font></a> shows how to read 2d or 3d NetCDF datasets created by PALM. Compiling this program requires that the
271NetCDF library is installed (if neccessary, please ask your system
272administrator). Some compilation instructions are given in the header of the
273example program.<br><br><br></li><li>By
274default, each PALM job creates its own NetCDF files. If permanent files
275with respective filenames are already existing then new files with
276higher cycle numbers will be created. However, in case of a job chain,
277it is possible to extend the NetCDF datasets created by the initial
278run&nbsp;with data from the restart run(s). As a result, data of all
279output times of the complete job chain are contained in one file and
280the number of data files to be handled by the user may be reduced
281significantly.<br>To extend a NetCDF dataset (created by a previous run
282of a job chain) with data from the current run requires that this
283dataset must be provided as an INPUT file. This may be difficult in
284case that PALM is running on a remote host because typically the output
285data files from the previous run have been already transferred by <span style="font-weight: bold;">mrun</span> to the local workstation with a file connection statement like<br><br><span style="font-family: monospace;">&nbsp;
286&nbsp;DATA_2D_XY_NETCDF &nbsp;out:loc:tr&nbsp;&nbsp;xy#:xyf
287&nbsp;~/palm/current_version/JOBS/$fname/OUTPUT &nbsp;_xy&nbsp; nc</span><br><br>and thus they are not available on the remote host any more. <br>A
288workaround for solving this problem is to create an additional copy of
289the output file on the remote machine by adding the file connection
290statement<br><br><span style="font-family: monospace;">&nbsp;&nbsp; DATA_2D_XY_NETCDF&nbsp; out:loc&nbsp; xy#:xyf&nbsp; ~/palm/current_version/JOBS/$fname/OUTPUT&nbsp; _xy&nbsp; nc</span><br><br>This additional copy can then be accessed from a restart job as an input file using the file connection statement<br><br><span style="font-family: monospace;">&nbsp;&nbsp; DATA_2D_XY_NETCDF&nbsp; in:locopt&nbsp;&nbsp;xyf&nbsp; ~/palm/current_version/JOBS/$fname/OUTPUT&nbsp; _xy&nbsp; nc</span><br><br>Here the file attribut <span style="font-family: monospace;">locopt</span>
291(2nd column) guarantees that the job continues if a permanent file does
292not exist (e.g. in case of an initial run). Otherwise, the job would be
293aborted.<br>Although the dataset created by the last run of a job chain
294will contain data from all selected time levels of the complete job
295chain, the main disadvantage of this workaround is that the datasets
296created by the remaining jobs (with lower cycle numbers) still exist
297and may consume large disc space. They have to be deleted "by hand" by
298the user on the local machine as well as on the remote
299machine&nbsp;because they only contain redundant data from the earlier
300time levels which are already contained&nbsp;in the dataset created by
301the last job of the job chain.<br><br><span style="font-weight: bold;">Note:</span><br>Extension of PALM NetCDF datasets of 2d horizontal cross sections requires that parameters <a href="chapter_4.2.html#data-output">data_output</a> and <a href="chapter_4.2.html#section_xy">section_xy</a>&nbsp;
302for the restart runs are set identical to the initial run. In case of a
303value mismatch between initial and restart runs, a warning is issued in
304the job protocol file and the dataset will contain only data from those
305timelevels calculated within the restart run.<br>Similar restrictions apply for all other PALM NetCDF datasets (i.e. profiles, vertical cross sections, volume data, etc.).</li></ol><br>&nbsp;<br><span style="font-weight: bold;"><a name="NetCDF_example"></a>Example of a PALM NetCDF dataset</span><br><br>The
306NetCDF dataset described here contains data of instantaneous horizontal
307cross sections and has been created using the settings of the <a href="http://www.muk.uni-hannover.de/%7Eraasch/PALM_group/INSTALL/example_p3d">example
308parameter file</a> (see <a href="chapter_4.4.html">chapter
3094.4</a>),
310i.e. it contains section data of the w-velocity-component and of the
311potential temperature for vertical grid levels with index <span style="font-family: monospace;">k = 2</span> and <span style="font-family: monospace;">k = 10</span>, selected by the respective parameter settings <a href="chapter_4.2.html#data_output">data_output</a> = <span style="font-style: italic;">'w_xy'</span>, <span style="font-style: italic;">'pt_xy'</span>, and <a href="chapter_4.2.html#section_xy">section_xy</a> = <span style="font-style: italic;">2</span>, <span style="font-style: italic;">10</span>. Output has been created after every 900 s (<a href="chapter_4.2.html#dt_data_output">dt_data_output</a> = <span style="font-style: italic;">900.0</span>). Because of <a href="chapter_4.2.html#end_time">end_time</a> = <span style="font-style: italic;">3600.0</span>, the file contains data of 4 time levels (t = 900, 1800, 2700, 3600 s).<br>Supposed that the name of the NetCDF dataset is <span style="font-family: monospace;">example_xy.nc</span>, an analysis of the file contents using the command<br><br><span style="font-family: monospace;">&nbsp; &nbsp;ncdump -c example_xy.nc</span><br><br>will create the following output. The original ncdump output is displayed using <span style="font-family: monospace;">fixed spacing</span>, additional explanations are given in <span style="font-style: italic; font-family: monospace;">italian</span>.<br><br><div style="margin-left: 40px;"><span style="font-family: monospace;">netcdf&nbsp;example_xy { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! filename</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">dimensions: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! 41 gridpoints along x and y, 4 timelevels</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; time = UNLIMITED ; // (4 currently) &nbsp; &nbsp;<span style="font-style: italic;">! unlimited means that&nbsp;additional time levels can be added (e.g. by</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;
312&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
313&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
314&nbsp;<span style="font-style: italic;">! restart jobs)</span><br>&nbsp;&nbsp;&nbsp; zu_xy = 2 ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! vertical dimension (2, because two cross sections are selected);</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; zw_xy = 2 ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! there are two different vertical dimensions zu and zw because due</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; zu1_xy = 1 ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! to the staggered grid the z-levels of variables are those of the</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
315x = 41 ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
316&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! u- or the w-component of the velocity</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; y = 41 ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">variables: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! precision, dimensions, and units of the variables</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double time(time) ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! the variables containing the time levels and grid point coordinates</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; time:units = "seconds" ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! have the same names as the respective dimensions</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double zu_xy(zu_xy) ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; zu_xy:units = "meters" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double zw_xy(zw_xy) ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; zw_xy:units = "meters" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double zu1_xy(zu1_xy) ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; zu1_xy:units = "meters" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double ind_z_xy(zu_xy) ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ind_z_xy:units = "gridpoints" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double x(x) ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; x:units = "meters" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; double y(y) ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; y:units = "meters" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; float w_xy(time, zw_xy, y, x) ; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! array of the vertical velocity; it has 4 dimensions: x and y,</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; w_xy:long_name = "w_xy" ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="font-style: italic;">! because it is a horizontal cross section, zw_xy, which defines</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; w_xy:units = "m/s" ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! the vertical levels of the sections, and time, for the time levels</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; float pt_xy(time, zu_xy, y, x) ; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! array of the potential temperature, which is defined on the u-grid</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pt_xy:long_name = "pt_xy" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pt_xy:units = "K" ;</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">// global attributes:</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; :Conventions = "COARDS" ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;
317&nbsp;&nbsp;&nbsp; :title = "PALM&nbsp;&nbsp; 3.0&nbsp; run:
318example.00&nbsp; host: ibmh&nbsp; 13-04-06 15:12:43" ; &nbsp;<span style="font-style: italic;">! PALM run-identifier</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; :VAR_LIST = ";w_xy;pt_xy;" ; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! the list of output quantities contained in this dataset;</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;
319&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
320&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
321&nbsp;<span style="font-style: italic;">! this global attribute can be used by FORTRAN programs to identify</span><br>&nbsp;
322&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
323&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
324&nbsp;<span style="font-style: italic;">! and read the quantities contained in the file</span><br>data:</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;time = 905.3, 1808.98, 2711.98, 3603.59 ; <span style="font-style: italic;">! values of the four time levels</span></span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;zu_xy = 75, 475 ; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="font-style: italic;">! heights of the two selected cross sections (u-grid)</span></span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;zw_xy = 100, 500 ;</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;zu1_xy = 25 ;</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;x = 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, &nbsp; <span style="font-style: italic;">! x-coordinates of the gridpoints</span></span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, </span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, </span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; 2000 ;</span><br style="font-family: monospace;"><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;y = 0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, </span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, </span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; 1400, 1450, 1500, 1550, 1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950, </span><br style="font-family: monospace;"><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp; 2000 ;</span><br style="font-family: monospace;"><span style="font-family: monospace;">}</span><br></div><br>If the option <span style="font-family: monospace;">-c</span> is omitted in the <span style="font-family: monospace;">ncdump</span> call, then also the complete grid point data of all quantities are output to the terminal.<br><br>The &nbsp;<a href="http://www.muk.uni-hannover.de/%7Eraasch/PALM_group/INSTALL/read_palm_netcdf_data.f90"><font color="#000080">example program</font></a><span style="font-weight: bold;"></span> shows how to read this 2d
325horizontal cross section dataset from a FORTRAN program (<a href="#netcdf_example_program">see above</a>).<br><hr>
326<p style="line-height: 100%;"><br><font color="#000080"><font color="#000080"><a href="chapter_4.5.html"><font color="#000080"><img name="Grafik1" src="left.gif" align="bottom" border="2" height="32" width="32"></font></a><a href="index.html"><font color="#000080"><img name="Grafik2" src="up.gif" align="bottom" border="2" height="32" width="32"></font></a><a href="chapter_4.5.2.html"><font color="#000080"><img style="border: 2px solid ; width: 32px; height: 32px;" alt="" name="Grafik3" src="right.gif"></font></a></font></font></p>
327<p style="line-height: 100%;"><span style="font-style: italic;">Last
328change:</span> 08/02/07 (SR)&nbsp;</p>
329</body></html>
Note: See TracBrowser for help on using the repository browser.