root/cf-conventions/tags/cf-conventions-1.2/docbooksrc/appendix-d.xml

Revision 48, 17.1 kB (checked in by mlaker1, 1 year ago)

Updated trunk with v1.1 updates in devel.

Line 
1 <appendix label="D" id="dimensionless-v-coord">
2     <title>Dimensionless Vertical Coordinates</title>
3     <para>
4         The definitions given here allow an application to compute
5         dimensional coordinate values from the dimensionless
6         ones and associated variables. The formulas are
7         expressed for a gridpoint
8         <varname>(n,k,j,i)</varname>
9         where <varname>i</varname> and <varname>j</varname> are
10         the horizontal indices, <varname>k</varname> is the vertical
11         index and <varname>n</varname>
12         is the time index. A coordinate variable is associated
13         with its definition by the value of the
14         <varname>standard_name</varname>
15         attribute. The terms in the definition are associated
16         with file variables by the
17         <varname>formula_terms</varname>
18         attribute. The
19         <varname>formula_terms</varname>
20         attribute takes a string value, the string
21         being comprised of blank-separated elements of the form
22         "<varname>term: variable</varname>", where
23         <varname>term</varname> is a keyword that represents
24         one of the terms in the definition, and
25         <varname>variable</varname> is the
26         name of the variable in a netCDF file that contains
27         the values for that term. The order of elements is
28         not significant.
29     </para>
30     <para>
31         The gridpoint indices are not formally part of the
32         definitions, but are included to illustrate the indices
33         that <emphasis>might</emphasis> be present in the file variables. For example,
34         a vertical coordinate whose definition contains a time
35         index is not necessarily time dependent in all netCDF
36         files. Also, the definitions are given in general forms
37         that may be simplified by omitting certain terms. A term
38         that is omitted from the
39         <varname>formula_terms</varname>
40         attribute should
41         be assumed to be zero.
42     </para>
43
44     <para>
45    
46     <para>
47     <example id="atmosphere-natural-log-pressure-coordinate">
48     <title> Atmosphere natural log pressure coordinate </title>
49             <para>
50                 <programlisting>
51 <varname>standard_name</varname> = "atmosphere_ln_pressure_coordinate"
52                 </programlisting>
53             </para>
54             <para>
55               <variablelist>
56                 <varlistentry>
57                   <term> Definition: </term>
58                   <listitem>
59                      <programlisting>
60 p(k) = p0 * exp(-lev(k))
61                      </programlisting>
62                   </listitem>
63                 </varlistentry>
64               </variablelist>
65
66              where <varname>p(k)</varname> is the pressure
67              at gridpoint <varname>(k)</varname>, <varname>p0</varname>
68              is a reference pressure, <varname>lev(k)</varname>
69              is the dimensionless coordinate
70              at vertical gridpoint <varname>(k)</varname>.
71             </para>
72
73             <para>
74               The format for the <varname>formula_terms</varname> attribute is
75               <programlisting>
76 <varname>formula_terms</varname> = "p0: var1 lev: var2"
77               </programlisting>
78             </para>
79     </example>
80     </para>
81    
82     <example>
83     <title> Atmosphere sigma coordinate </title>
84             <para>
85                 <programlisting>
86 <varname>standard_name</varname> = "atmosphere_sigma_coordinate"
87                 </programlisting>
88             </para>
89             <para>
90               <variablelist>
91                 <varlistentry>
92                   <term> Definition: </term>
93                   <listitem>
94                      <programlisting>
95 p(n,k,j,i) = ptop + sigma(k)*(ps(n,j,i)-ptop)
96                      </programlisting>
97                   </listitem>
98                 </varlistentry>
99               </variablelist>
100
101               where <varname>p(n,k,j,i)</varname> is the
102               pressure at gridpoint <varname>(n,k,j,i)</varname>,
103               <varname>ptop</varname> is the pressure
104               at the top of the model, <varname>sigma(k)</varname>
105               is the dimensionless coordinate at vertical gridpoint
106               <varname>(k)</varname>, and <varname>ps(n,j,i)</varname>
107               is the surface pressure at horizontal
108               gridpoint <varname>(j,i)</varname> and time <varname>(n)</varname>.
109             </para>
110
111             <para>
112               The format for the formula_terms attribute is
113               <programlisting>
114 <varname>formula_terms</varname> = "sigma: var1 ps: var2 ptop: var3"
115               </programlisting>
116             </para>
117     </example>
118     <example>
119           <title> Atmosphere hybrid sigma pressure coordinate </title>
120             <para>
121                 <programlisting>
122 <varname>standard_name</varname> = "atmosphere_hybrid_sigma_pressure_coordinate"
123                 </programlisting>
124             </para>
125             <para>
126               <variablelist>
127                 <varlistentry>
128                   <term> Definition: </term>
129                   <listitem>
130                      <programlisting>
131 p(n,k,j,i) = a(k)*p0 + b(k)*ps(n,j,i)
132                      </programlisting>
133            <para> or </para>
134                      <programlisting>
135 p(n,k,j,i) = ap(k) + b(k)*ps(n,j,i)
136                      </programlisting>
137                   </listitem>
138                 </varlistentry>
139               </variablelist>
140
141               where
142               <computeroutput>p(n,k,j,i)</computeroutput>
143               is the pressure at gridpoint
144               <computeroutput>(n,k,j,i)</computeroutput>,
145               <computeroutput>a(k)</computeroutput>
146               or
147               <computeroutput>ap(k)</computeroutput>
148               and
149               <computeroutput>b(k)</computeroutput>
150               are components of the hybrid coordinate at
151               level
152               <computeroutput>k</computeroutput>,
153               <computeroutput>p0</computeroutput>
154               is a reference
155               pressure, and
156               <computeroutput>ps(n,j,i)</computeroutput>
157               is the surface pressure at horizontal gridpoint
158               <computeroutput>(j,i)</computeroutput>
159               and time
160               <computeroutput>(n)</computeroutput>.
161               The choice of whether
162               <computeroutput>a(k)</computeroutput>
163               or
164               <computeroutput>ap(k)</computeroutput>
165               is used depends on
166               model formulation; the former is a dimensionless fraction,
167               the latter a pressure value. In both formulations,
168               <computeroutput>b(k)</computeroutput>
169               is a dimensionless
170               fraction.
171             </para>
172
173             <para>
174               The format for the <varname>formula_terms</varname> attribute is
175               <programlisting>
176 <varname>formula_terms</varname> = "a: var1 b: var2 ps: var3 p0: var4"
177               </programlisting>
178               where
179               <computeroutput>a</computeroutput>
180               is replaced by
181               <computeroutput>ap</computeroutput>
182               if appropriate.
183             </para>
184             <para>
185               The hybrid sigma-pressure coordinate for level <varname>k</varname> is defined as
186               <computeroutput>a(k)+b(k)</computeroutput>
187               or
188               <computeroutput>ap(k)/p0+b(k)</computeroutput>,
189               as appropriate.
190             </para>
191     </example>
192
193     <example id="atmosphere-hybrid-height-coordinate">
194     <title> Atmosphere hybrid height coordinate </title>
195       <para>
196         <programlisting>
197 <varname>standard_name</varname> = "atmosphere_hybrid_height_coordinate"
198         </programlisting>
199       </para>
200       <para>
201         <variablelist>
202           <varlistentry>
203             <term> Definition: </term>
204             <listitem>
205               <programlisting>
206 z(n,k,j,i) = a(k) + b(k)*orog(n,j,i)
207               </programlisting>
208             </listitem>
209           </varlistentry>
210         </variablelist>
211
212         where
213         <varname>z(n,k,j,i)</varname>
214         is the height above the geoid (approximately mean sea level) at gridpoint
215         <varname>(k,j,i)</varname>
216         and
217         <varname>time (n)</varname>,
218         <varname>orog(n,j,i)</varname>
219         is the height of the surface above
220         the geoid at
221         <varname>(j,i)</varname>
222         and
223         <varname>time (n)</varname>,
224         and <varname>a(k)</varname> and <varname>b(k)</varname>
225         are the coordinates
226         which define hybrid height level
227         <varname>k</varname>.
228         <varname>a(k)</varname> has the dimensions of height and
229         <varname>b(i)</varname> is dimensionless.
230       </para>
231       <para>
232         The format for the
233         <varname>formula_terms</varname>
234         attribute is
235         <programlisting>
236 <varname>formula_terms</varname> = "a: var1 b: var2 orog: var3"
237         </programlisting>
238       </para>
239       <para>
240         There is no dimensionless hybrid height coordinate. The hybrid
241         height is best approximated as <varname>a(k)</varname>
242         if a level-dependent constant is needed.
243       </para>
244     </example>
245
246     <example>
247     <title> Atmosphere smooth level vertical (SLEVE) coordinate </title>
248       <para>
249         <programlisting>
250 <varname>standard_name</varname> = "atmosphere_sleve_coordinate"
251         </programlisting>
252       </para>
253       <para>
254         <variablelist>
255           <varlistentry>
256             <term> Definition: </term>
257             <listitem>
258               <programlisting>
259 z(n,k,j,i) = a(k)*ztop + b1(k)*zsurf1(n,j,i) + b2(k)*zsurf2(n,j,i)
260               </programlisting>
261             </listitem>
262           </varlistentry>
263         </variablelist>
264
265         where
266         <varname>z(n,k,j,i)</varname>
267         is the height above the geoid (approximately mean sea level) at gridpoint
268         <varname>(k,j,i)</varname>
269         and time
270         <varname>(n)</varname>,
271         <varname>ztop</varname>
272         is the height of the top of the model, and
273         <varname>a(k)</varname>,
274         <varname>b1(k)</varname>,
275         and
276         <varname>b2(k)</varname>
277         are the dimensionless coordinates which define hybrid level
278         <varname>k</varname>.
279         <varname>zsurf1(n,j,i)</varname>
280         and
281         <varname>zsurf2(n,j,i)</varname>
282         are respectively the large and small parts of the topography.  See Shaer et al
283         <biblioref linkend="sch02"/>
284         for details.
285       </para>
286       <para>
287         The format for the
288         <varname>formula_terms</varname>
289         attribute is
290         <programlisting>
291 <varname>formula_terms</varname> = "a: var1 b1: var2 b2: var3 ztop: var4 zsurf1: var5
292                 zsurf2: var6"
293         </programlisting>
294       </para>
295       <para>
296         The hybrid height coordinate for level
297         <varname>k</varname> is defined as
298         <varname>a(k)*ztop</varname>.
299       </para>
300    </example>
301      
302    <example>
303     <title> Ocean sigma coordinate </title>
304       <para>
305         <programlisting>
306 <varname>standard_name</varname> = "ocean_sigma_coordinate"
307         </programlisting>
308       </para>
309       <para>
310         <variablelist>
311           <varlistentry>
312             <term> Definition: </term>
313             <listitem>
314               <programlisting>
315 z(n,k,j,i) = eta(n,j,i) + sigma(k)*(depth(j,i)+eta(n,j,i))
316               </programlisting>
317             </listitem>
318           </varlistentry>
319         </variablelist>
320
321         where <varname>z(n,k,j,i)</varname> is height, positive upwards, relative to
322         ocean datum (e.g. mean sea level) at gridpoint <varname>(n,k,j,i)</varname>,
323         <varname>eta(n,j,i)</varname> is the height of the ocean surface, positive upwards,
324         relative to ocean datum at gridpoint <varname>(n,j,i)</varname>,
325         <varname>sigma(k)</varname> is the
326         dimensionless coordinate at vertical gridpoint <varname>(k)</varname>,
327         and <varname>depth(j,i)</varname>
328         is the distance from ocean datum to sea floor (positive value)
329         at horizontal gridpoint <varname>(j,i)</varname>.
330       </para>
331       <para>
332         The format for the
333         <varname>formula_terms</varname>
334         attribute is
335         <programlisting>
336 <varname>formula_terms</varname> = "sigma: var1 eta: var2 depth: var3"
337         </programlisting>
338       </para>
339      
340     </example>
341
342    
343    <example>
344     <title> Ocean s-coordinate </title>
345       <para>
346         <programlisting>
347 <varname>standard_name</varname> = "ocean_s_coordinate"
348         </programlisting>
349       </para>
350       <para>
351         <variablelist>
352           <varlistentry>
353             <term> Definition: </term>
354             <listitem>
355               <programlisting>
356 z(n,k,j,i) = eta(n,j,i)*(1+s(k)) + depth_c*s(k) +
357              (depth(j,i)-depth_c)*C(k)
358
359   C(k) = (1-b)*sinh(a*s(k))/sinh(a) +
360          b*[tanh(a*(s(k)+0.5))/(2*tanh(0.5*a)) - 0.5]
361               </programlisting>
362             </listitem>
363           </varlistentry>
364         </variablelist>
365
366         where <varname>z(n,k,j,i)</varname> is height, positive upwards, relative to ocean
367         datum (e.g. mean sea level) at gridpoint <varname>(n,k,j,i)</varname>,
368         <varname>eta(n,j,i)</varname> is
369         the height of the ocean surface, positive upwards, relative to
370         ocean datum at gridpoint <varname>(n,j,i)</varname>, <varname>s(k)</varname> is the dimensionless
371         coordinate at vertical gridpoint <varname>(k)</varname>, and <varname>depth(j,i)</varname> is the distance
372         from ocean datum to sea floor (positive value) at horizontal
373         gridpoint <varname>(j,i)</varname>. The constants
374         <varname>a</varname>, <varname>b</varname>, and <varname>depth_c</varname> control the stretching.
375       </para>
376       <para>
377         The format for the
378         <varname>formula_terms</varname>
379         attribute is
380         <programlisting>
381 <varname>formula_terms</varname> = "s: var1 eta: var2 depth: var3 a: var4 b: var5 depth_c: var6"
382         </programlisting>
383       </para>
384      
385     </example>
386    
387    
388    <example>
389     <title> Ocean sigma over z coordinate </title>
390       <para>
391         <programlisting>
392 <varname>standard_name</varname> = "ocean_sigma_z_coordinate"
393         </programlisting>
394       </para>
395       <para>
396         <variablelist>
397           <varlistentry>
398             <term> Definition: </term>
399             <listitem>
400               <programlisting>
401 for k &lt;= nsigma:
402
403   z(n,k,j,i) = eta(n,j,i) + sigma(k)*(min(depth_c,depth(j,i))+eta(n,j,i))
404  
405 for k &gt; nsigma:
406
407   z(n,k,j,i) = zlev(k)
408               </programlisting>
409             </listitem>
410           </varlistentry>
411         </variablelist>
412
413         where <varname>z(n,k,j,i)</varname> is height, positive upwards, relative to ocean
414         datum (e.g. mean sea level) at gridpoint <varname>(n,k,j,i)</varname>,
415         <varname>eta(n,j,i)</varname>
416         is the height of the ocean surface, positive upwards, relative
417         to ocean datum at gridpoint <varname>(n,j,i)</varname>,
418         <varname>sigma(k)</varname> is the dimensionless
419         coordinate at vertical gridpoint <varname>(k)</varname> for
420         <varname>k &lt;= nsigma</varname>,
421         and <varname>depth(j,i)</varname> is the distance from ocean datum to
422         sea floor (positive value) at horizontal gridpoint <varname>(j,i)</varname>.
423         Above depth <varname>depth_c</varname> there are <varname>nsigma</varname> layers.
424       </para>
425       <para>
426         The format for the
427         <varname>formula_terms</varname>
428         attribute is
429         <programlisting>
430 <varname>formula_terms</varname> = "sigma: var1 eta: var2 depth: var3 depth_c: var4 nsigma: var5
431                 zlev: var6"
432         </programlisting>
433       </para>
434      
435     </example>
436    
437    
438    <example>
439     <title> Ocean double sigma coordinate </title>
440       <para>
441         <programlisting>
442 <varname>standard_name</varname> = "ocean_double_sigma_coordinate"
443         </programlisting>
444       </para>
445       <para>
446         <variablelist>
447           <varlistentry>
448             <term> Definition: </term>
449             <listitem>
450               <programlisting>
451 for k &lt;= k_c
452
453   z(k,j,i)= sigma(k)*f(j,i)
454
455 for k &gt; k_c
456
457   z(k,j,i)= f(j,i) + (sigma(k)-1)*(depth(j,i)-f(j,i))
458
459 f(j,i)= 0.5*(z1+ z2) + 0.5*(z1-z2)* tanh(2*a/(z1-z2)*(depth(j,i)-href))
460               </programlisting>
461             </listitem>
462           </varlistentry>
463         </variablelist>
464
465         where <varname>z(k,j,i)</varname> is height, positive upwards, relative to ocean
466         datum (e.g. mean sea level) at gridpoint <varname>(k,j,i)</varname>,
467         <varname>sigma(k)</varname> is the dimensionless coordinate at vertical
468         gridpoint <varname>(k)</varname> for <varname>k &lt;= k_c</varname>,
469         and <varname>depth(j,i)</varname> is the distance
470         from ocean datum to sea floor (positive value) at horizontal
471         gridpoint <varname>(j,i)</varname>.
472         <constant>z1</constant>, <constant>z2</constant>, <constant>a</constant>, and <constant>href</constant> are constants.
473       </para>
474       <para>
475         The format for the
476         <varname>formula_terms</varname>
477         attribute is
478         <programlisting>
479 <varname>formula_terms</varname> = "sigma: var1 depth: var2 z1: var3 z2: var4 a: var5 href: var6
480                 k_c: var7"
481         </programlisting>
482       </para>
483      
484     </example>
485    
486    
487     </para>
488 </appendix>
489
Note: See TracBrowser for help on using the browser.