gphys 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +7414 -0
  3. data/LICENSE.txt +1 -1
  4. data/Rakefile +0 -2
  5. data/doc/derivative/math-doc/document/images.log +385 -0
  6. data/doc/ep_flux/math-doc/document/images.log +1375 -0
  7. data/doc/ganalysis/doc/NumRu.html +203 -0
  8. data/doc/ganalysis/doc/NumRu/GAnalysis.html +931 -0
  9. data/doc/ganalysis/doc/NumRu/GAnalysis/BetaPlane.html +574 -0
  10. data/doc/ganalysis/doc/NumRu/GAnalysis/Fitting.html +576 -0
  11. data/doc/ganalysis/doc/NumRu/GAnalysis/LogP.html +425 -0
  12. data/doc/ganalysis/doc/NumRu/GAnalysis/Met.html +2021 -0
  13. data/doc/ganalysis/doc/NumRu/GAnalysis/MetZ.html +524 -0
  14. data/doc/ganalysis/doc/NumRu/GAnalysis/Planet.html +1047 -0
  15. data/doc/ganalysis/doc/NumRu/GAnalysis/QG.html +794 -0
  16. data/doc/ganalysis/doc/NumRu/GAnalysis/QG/Uninitialized.html +215 -0
  17. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_common.html +603 -0
  18. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_sphere.html +760 -0
  19. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_sphere_common.html +251 -0
  20. data/doc/ganalysis/doc/NumRu/GAnalysis/QG_sphere_div.html +424 -0
  21. data/doc/ganalysis/doc/NumRu/GAnalysis/SigmaCoord.html +321 -0
  22. data/doc/ganalysis/doc/NumRu/GGraph.html +334 -0
  23. data/doc/ganalysis/doc/NumRu/GPhys.html +579 -0
  24. data/doc/ganalysis/doc/Object.html +210 -0
  25. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/beta_plane_rb.html +60 -0
  26. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/covariance_rb.html +56 -0
  27. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/eof_rb.html +64 -0
  28. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/fitting_rb.html +54 -0
  29. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/histogram_rb.html +58 -0
  30. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/log_p_rb.html +60 -0
  31. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/met_rb.html +60 -0
  32. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/met_z_rb.html +58 -0
  33. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/planet_rb.html +58 -0
  34. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/qg_rb.html +64 -0
  35. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis/sigma_coord_rb.html +56 -0
  36. data/doc/ganalysis/doc/__/__/lib/numru/ganalysis_rb.html +98 -0
  37. data/doc/ganalysis/doc/created.rid +13 -0
  38. data/doc/ganalysis/doc/images/brick.png +0 -0
  39. data/doc/ganalysis/doc/images/brick_link.png +0 -0
  40. data/doc/ganalysis/doc/images/bug.png +0 -0
  41. data/doc/ganalysis/doc/images/bullet_black.png +0 -0
  42. data/doc/ganalysis/doc/images/bullet_toggle_minus.png +0 -0
  43. data/doc/ganalysis/doc/images/bullet_toggle_plus.png +0 -0
  44. data/doc/ganalysis/doc/images/date.png +0 -0
  45. data/doc/ganalysis/doc/images/find.png +0 -0
  46. data/doc/ganalysis/doc/images/loadingAnimation.gif +0 -0
  47. data/doc/ganalysis/doc/images/macFFBgHack.png +0 -0
  48. data/doc/ganalysis/doc/images/package.png +0 -0
  49. data/doc/ganalysis/doc/images/page_green.png +0 -0
  50. data/doc/ganalysis/doc/images/page_white_text.png +0 -0
  51. data/doc/ganalysis/doc/images/page_white_width.png +0 -0
  52. data/doc/ganalysis/doc/images/plugin.png +0 -0
  53. data/doc/ganalysis/doc/images/ruby.png +0 -0
  54. data/doc/ganalysis/doc/images/tag_green.png +0 -0
  55. data/doc/ganalysis/doc/images/wrench.png +0 -0
  56. data/doc/ganalysis/doc/images/wrench_orange.png +0 -0
  57. data/doc/ganalysis/doc/images/zoom.png +0 -0
  58. data/doc/ganalysis/doc/index.html +383 -0
  59. data/doc/ganalysis/doc/js/darkfish.js +118 -0
  60. data/doc/ganalysis/doc/js/jquery.js +32 -0
  61. data/doc/ganalysis/doc/js/quicksearch.js +114 -0
  62. data/doc/ganalysis/doc/js/thickbox-compressed.js +10 -0
  63. data/doc/ganalysis/doc/rdoc.css +763 -0
  64. data/ext/numru/gphys/ext_init.c +1 -0
  65. data/ext/numru/gphys/quad_mesh_sample.c +478 -0
  66. data/gphys.gemspec +2 -2
  67. data/lib/numru/dclext.rb +394 -14
  68. data/lib/numru/derivative.rb +6 -0
  69. data/lib/numru/ganalysis/qg.rb +6 -4
  70. data/lib/numru/ggraph.rb +41 -8
  71. data/lib/numru/gphys/gphys.rb +62 -14
  72. data/lib/numru/gphys/gphys_io.rb +4 -4
  73. data/lib/numru/gphys/version.rb +2 -2
  74. metadata +84 -79
  75. data/.gitignore +0 -14
  76. data/TODO_ep_flux +0 -6
  77. data/gphys-bigmem.gemspec +0 -44
  78. data/install.rb +0 -130
  79. data/sample/cira86_to_nc.rb +0 -122
  80. data/sample/druby_cli1.rb +0 -23
  81. data/sample/druby_cli2.rb +0 -28
  82. data/sample/druby_serv1.rb +0 -30
  83. data/sample/druby_serv2.rb +0 -51
  84. data/sample/ep_flux/demo_NCEP_1.rb +0 -48
  85. data/sample/ep_flux/demo_NCEP_2.rb +0 -57
  86. data/sample/ep_flux/demo_NCEP_3.rb +0 -81
  87. data/sample/ggraph_latlon_labelling_dr002690.rb +0 -159
  88. data/sample/ggraph_mapfit-axes_dr002687.rb +0 -131
  89. data/sample/map_projection.rb +0 -121
  90. data/sample/ncep_theta_coord.rb +0 -79
  91. data/test_old/eof_slp.rb +0 -28
  92. data/test_old/mltbit.dat +0 -0
  93. data/test_old/test_ep_flux.rb +0 -533
  94. data/test_old/test_multibitIO.rb +0 -19
@@ -0,0 +1,425 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: NumRu::GAnalysis::LogP</title>
9
+
10
+ <link rel="stylesheet" href="../../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../../js/jquery.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="../../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="../../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
15
+ <script src="../../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
16
+
17
+ </head>
18
+ <body id="top" class="module">
19
+
20
+ <div id="metadata">
21
+ <div id="home-metadata">
22
+ <div id="home-section" class="section">
23
+ <h3 class="section-header">
24
+ <a href="../../index.html">Home</a>
25
+ <a href="../../index.html#classes">Classes</a>
26
+ <a href="../../index.html#methods">Methods</a>
27
+ </h3>
28
+ </div>
29
+ </div>
30
+
31
+ <div id="file-metadata">
32
+ <div id="file-list-section" class="section">
33
+ <h3 class="section-header">In Files</h3>
34
+ <div class="section-body">
35
+ <ul>
36
+
37
+ <li><a href="../../__/__/lib/numru/ganalysis/log_p_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
38
+ class="thickbox" title="../../lib/numru/ganalysis/log_p.rb">../../lib/numru/ganalysis/log_p.rb</a></li>
39
+
40
+ </ul>
41
+ </div>
42
+ </div>
43
+
44
+
45
+ </div>
46
+
47
+ <div id="class-metadata">
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ <!-- Method Quickref -->
56
+ <div id="method-list-section" class="section">
57
+ <h3 class="section-header">Methods</h3>
58
+ <ul class="link-list">
59
+
60
+ <li><a href="#method-i-h">#h</a></li>
61
+
62
+ <li><a href="#method-i-p2z">#p2z</a></li>
63
+
64
+ <li><a href="#method-i-pcdata_dz">#pcdata_dz</a></li>
65
+
66
+ <li><a href="#method-i-pcdata_dz2">#pcdata_dz2</a></li>
67
+
68
+ <li><a href="#method-i-pcdata_pi_dz_p_dz">#pcdata_pi_dz_p_dz</a></li>
69
+
70
+ <li><a href="#method-i-set_h">#set_h</a></li>
71
+
72
+ </ul>
73
+ </div>
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="project-metadata">
80
+
81
+
82
+
83
+ <div id="classindex-section" class="section project-section">
84
+ <h3 class="section-header">Class/Module Index
85
+ <span class="search-toggle"><img src="../../images/find.png"
86
+ height="16" width="16" alt="[+]"
87
+ title="show/hide quicksearch" /></span></h3>
88
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
89
+ <fieldset>
90
+ <legend>Quicksearch</legend>
91
+ <input type="text" name="quicksearch" value=""
92
+ class="quicksearch-field" />
93
+ </fieldset>
94
+ </form>
95
+
96
+ <ul class="link-list">
97
+
98
+ <li><a href="../../NumRu.html">NumRu</a></li>
99
+
100
+ <li><a href="../../NumRu/GAnalysis.html">NumRu::GAnalysis</a></li>
101
+
102
+ <li><a href="../../NumRu/GAnalysis/BetaPlane.html">NumRu::GAnalysis::BetaPlane</a></li>
103
+
104
+ <li><a href="../../NumRu/GAnalysis/Fitting.html">NumRu::GAnalysis::Fitting</a></li>
105
+
106
+ <li><a href="../../NumRu/GAnalysis/LogP.html">NumRu::GAnalysis::LogP</a></li>
107
+
108
+ <li><a href="../../NumRu/GAnalysis/Met.html">NumRu::GAnalysis::Met</a></li>
109
+
110
+ <li><a href="../../NumRu/GAnalysis/MetZ.html">NumRu::GAnalysis::MetZ</a></li>
111
+
112
+ <li><a href="../../NumRu/GAnalysis/Planet.html">NumRu::GAnalysis::Planet</a></li>
113
+
114
+ <li><a href="../../NumRu/GAnalysis/QG.html">NumRu::GAnalysis::QG</a></li>
115
+
116
+ <li><a href="../../NumRu/GAnalysis/QG/Uninitialized.html">NumRu::GAnalysis::QG::Uninitialized</a></li>
117
+
118
+ <li><a href="../../NumRu/GAnalysis/QG_common.html">NumRu::GAnalysis::QG_common</a></li>
119
+
120
+ <li><a href="../../NumRu/GAnalysis/QG_sphere.html">NumRu::GAnalysis::QG_sphere</a></li>
121
+
122
+ <li><a href="../../NumRu/GAnalysis/QG_sphere_common.html">NumRu::GAnalysis::QG_sphere_common</a></li>
123
+
124
+ <li><a href="../../NumRu/GAnalysis/QG_sphere_div.html">NumRu::GAnalysis::QG_sphere_div</a></li>
125
+
126
+ <li><a href="../../NumRu/GAnalysis/SigmaCoord.html">NumRu::GAnalysis::SigmaCoord</a></li>
127
+
128
+ <li><a href="../../NumRu/GGraph.html">NumRu::GGraph</a></li>
129
+
130
+ <li><a href="../../NumRu/GPhys.html">NumRu::GPhys</a></li>
131
+
132
+ <li><a href="../../Object.html">Object</a></li>
133
+
134
+ </ul>
135
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
136
+ </div>
137
+
138
+
139
+ </div>
140
+ </div>
141
+
142
+ <div id="documentation">
143
+ <h1 class="module">NumRu::GAnalysis::LogP</h1>
144
+
145
+ <div id="description" class="description">
146
+
147
+ <p>module <a href="LogP.html">LogP</a> : log-pressure coordinate support</p>
148
+
149
+ </div><!-- description -->
150
+
151
+
152
+
153
+
154
+ <div id="5Buntitled-5D" class="documentation-section">
155
+
156
+
157
+
158
+
159
+
160
+ <!-- Constants -->
161
+ <div id="constants-list" class="section">
162
+ <h3 class="section-header">Constants</h3>
163
+ <dl>
164
+
165
+ <dt><a name="P00">P00</a></dt>
166
+
167
+ <dd class="description"><p><a href="LogP.html#P00">P00</a> = 1e5 Pa (1000 hPa)</p></dd>
168
+
169
+
170
+ </dl>
171
+ </div>
172
+
173
+
174
+
175
+
176
+ <!-- Methods -->
177
+
178
+ <div id="public-instance-method-details" class="method-section section">
179
+ <h3 class="section-header">Public Instance Methods</h3>
180
+
181
+
182
+ <div id="h-method" class="method-detail ">
183
+ <a name="method-i-h"></a>
184
+
185
+
186
+ <div class="method-heading">
187
+ <span class="method-name">h</span><span
188
+ class="method-args">()</span>
189
+ <span class="method-click-advice">click to toggle source</span>
190
+ </div>
191
+
192
+
193
+ <div class="method-description">
194
+
195
+ <p>returns the current value of the log-p scale height (in UNumeric)</p>
196
+
197
+
198
+
199
+ <div class="method-source-code" id="h-source">
200
+ <pre>
201
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/log_p.rb, line 27</span>
202
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">h</span>
203
+ <span class="ruby-identifier">@@H</span>.<span class="ruby-identifier">clone</span>
204
+ <span class="ruby-keyword">end</span></pre>
205
+ </div><!-- h-source -->
206
+
207
+ </div>
208
+
209
+
210
+
211
+
212
+ </div><!-- h-method -->
213
+
214
+
215
+ <div id="p2z-method" class="method-detail ">
216
+ <a name="method-i-p2z"></a>
217
+
218
+
219
+ <div class="method-heading">
220
+ <span class="method-name">p2z</span><span
221
+ class="method-args">(p)</span>
222
+ <span class="method-click-advice">click to toggle source</span>
223
+ </div>
224
+
225
+
226
+ <div class="method-description">
227
+
228
+ <p>convert pressure to log-p height</p>
229
+
230
+
231
+
232
+ <div class="method-source-code" id="p2z-source">
233
+ <pre>
234
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/log_p.rb, line 32</span>
235
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">p2z</span>(<span class="ruby-identifier">p</span>)
236
+ <span class="ruby-identifier">z</span> = (<span class="ruby-identifier">p</span><span class="ruby-operator">/</span><span class="ruby-constant">P00</span>).<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;1&quot;</span>).<span class="ruby-identifier">log</span> * (<span class="ruby-operator">-</span><span class="ruby-identifier">@@H</span>)
237
+ <span class="ruby-identifier">z</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;z&quot;</span>
238
+ <span class="ruby-identifier">z</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;log-p z&quot;</span>
239
+ <span class="ruby-identifier">z</span>.<span class="ruby-identifier">del_att</span>(<span class="ruby-string">&quot;positive&quot;</span>)
240
+ <span class="ruby-identifier">z</span>
241
+ <span class="ruby-keyword">end</span></pre>
242
+ </div><!-- p2z-source -->
243
+
244
+ </div>
245
+
246
+
247
+
248
+
249
+ </div><!-- p2z-method -->
250
+
251
+
252
+ <div id="pcdata_dz-method" class="method-detail ">
253
+ <a name="method-i-pcdata_dz"></a>
254
+
255
+
256
+ <div class="method-heading">
257
+ <span class="method-name">pcdata_dz</span><span
258
+ class="method-args">(gphys, pdim=nil)</span>
259
+ <span class="method-click-advice">click to toggle source</span>
260
+ </div>
261
+
262
+
263
+ <div class="method-description">
264
+
265
+ <p>del/delz applied to data with the p coordinate</p>
266
+
267
+
268
+
269
+ <div class="method-source-code" id="pcdata_dz-source">
270
+ <pre>
271
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/log_p.rb, line 41</span>
272
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pcdata_dz</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-identifier">pdim</span>=<span class="ruby-keyword">nil</span>)
273
+ <span class="ruby-identifier">pdim</span> = <span class="ruby-constant">Met</span>.<span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">gphys</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pdim</span>
274
+ <span class="ruby-identifier">p</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">axis</span>(<span class="ruby-identifier">pdim</span>).<span class="ruby-identifier">to_gphys</span>
275
+ <span class="ruby-identifier">z</span> = <span class="ruby-identifier">p2z</span>(<span class="ruby-identifier">p</span>.<span class="ruby-identifier">data</span>)
276
+ <span class="ruby-identifier">bc</span> = <span class="ruby-constant">Derivative</span><span class="ruby-operator">::</span><span class="ruby-constant">LINEAR_EXT</span>
277
+ <span class="ruby-identifier">delz</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">threepoint_O2nd_deriv</span>(<span class="ruby-identifier">pdim</span>, <span class="ruby-identifier">bc</span>, <span class="ruby-identifier">z</span>)
278
+ <span class="ruby-identifier">delz</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">name</span><span class="ruby-operator">+</span><span class="ruby-string">&quot;_z&quot;</span>
279
+ <span class="ruby-identifier">delz</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-node">&quot;del/delz (#{gphys.long_name})&quot;</span>
280
+ <span class="ruby-identifier">delz</span>
281
+ <span class="ruby-keyword">end</span></pre>
282
+ </div><!-- pcdata_dz-source -->
283
+
284
+ </div>
285
+
286
+
287
+
288
+
289
+ </div><!-- pcdata_dz-method -->
290
+
291
+
292
+ <div id="pcdata_dz2-method" class="method-detail ">
293
+ <a name="method-i-pcdata_dz2"></a>
294
+
295
+
296
+ <div class="method-heading">
297
+ <span class="method-name">pcdata_dz2</span><span
298
+ class="method-args">(gphys, pdim=nil)</span>
299
+ <span class="method-click-advice">click to toggle source</span>
300
+ </div>
301
+
302
+
303
+ <div class="method-description">
304
+
305
+ <p>del2/del2z applied to data with the p coordinate</p>
306
+
307
+
308
+
309
+ <div class="method-source-code" id="pcdata_dz2-source">
310
+ <pre>
311
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/log_p.rb, line 53</span>
312
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pcdata_dz2</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-identifier">pdim</span>=<span class="ruby-keyword">nil</span>)
313
+ <span class="ruby-identifier">pdim</span> = <span class="ruby-constant">Met</span>.<span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">gphys</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pdim</span>
314
+ <span class="ruby-identifier">p</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">axis</span>(<span class="ruby-identifier">pdim</span>).<span class="ruby-identifier">to_gphys</span>
315
+ <span class="ruby-identifier">z</span> = <span class="ruby-identifier">p2z</span>(<span class="ruby-identifier">p</span>.<span class="ruby-identifier">data</span>)
316
+ <span class="ruby-identifier">bc</span> = <span class="ruby-constant">Derivative</span><span class="ruby-operator">::</span><span class="ruby-constant">LINEAR_EXT</span>
317
+ <span class="ruby-identifier">delz</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">deriv2nd</span>(<span class="ruby-identifier">pdim</span>, <span class="ruby-identifier">bc</span>, <span class="ruby-identifier">z</span>)
318
+ <span class="ruby-identifier">delz</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">name</span><span class="ruby-operator">+</span><span class="ruby-string">&quot;_zz&quot;</span>
319
+ <span class="ruby-identifier">delz</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-node">&quot;del2/del2z (#{gphys.long_name})&quot;</span>
320
+ <span class="ruby-identifier">delz</span>
321
+ <span class="ruby-keyword">end</span></pre>
322
+ </div><!-- pcdata_dz2-source -->
323
+
324
+ </div>
325
+
326
+
327
+
328
+
329
+ </div><!-- pcdata_dz2-method -->
330
+
331
+
332
+ <div id="pcdata_pi_dz_p_dz-method" class="method-detail ">
333
+ <a name="method-i-pcdata_pi_dz_p_dz"></a>
334
+
335
+
336
+ <div class="method-heading">
337
+ <span class="method-name">pcdata_pi_dz_p_dz</span><span
338
+ class="method-args">(gphys, pdim=nil)</span>
339
+ <span class="method-click-advice">click to toggle source</span>
340
+ </div>
341
+
342
+
343
+ <div class="method-description">
344
+
345
+ <p>p^{-1} del_z ( p del_z self ) where del_z = del/del z</p>
346
+
347
+
348
+
349
+ <div class="method-source-code" id="pcdata_pi_dz_p_dz-source">
350
+ <pre>
351
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/log_p.rb, line 66</span>
352
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pcdata_pi_dz_p_dz</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-identifier">pdim</span>=<span class="ruby-keyword">nil</span>)
353
+ <span class="ruby-identifier">pdim</span> = <span class="ruby-constant">Met</span>.<span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">gphys</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pdim</span>
354
+ <span class="ruby-identifier">p</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">axis</span>(<span class="ruby-identifier">pdim</span>).<span class="ruby-identifier">to_gphys</span>
355
+ <span class="ruby-identifier">z</span> = <span class="ruby-identifier">p2z</span>(<span class="ruby-identifier">p</span>.<span class="ruby-identifier">data</span>)
356
+ <span class="ruby-identifier">bc</span> = <span class="ruby-constant">Derivative</span><span class="ruby-operator">::</span><span class="ruby-constant">LINEAR_EXT</span>
357
+ <span class="ruby-identifier">p_dz</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">threepoint_O2nd_deriv</span>(<span class="ruby-identifier">pdim</span>, <span class="ruby-identifier">bc</span>, <span class="ruby-identifier">z</span>) * <span class="ruby-identifier">p</span>
358
+ <span class="ruby-identifier">pi_dz_p_p_dz</span> = <span class="ruby-identifier">p_dz</span>.<span class="ruby-identifier">threepoint_O2nd_deriv</span>(<span class="ruby-identifier">pdim</span>, <span class="ruby-identifier">bc</span>, <span class="ruby-identifier">z</span>) <span class="ruby-operator">/</span> <span class="ruby-identifier">p</span>
359
+ <span class="ruby-identifier">pi_dz_p_p_dz</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-node">&quot;1/p del_z (p del_z #{gphys.name})&quot;</span>
360
+ <span class="ruby-identifier">pi_dz_p_p_dz</span>
361
+ <span class="ruby-keyword">end</span></pre>
362
+ </div><!-- pcdata_pi_dz_p_dz-source -->
363
+
364
+ </div>
365
+
366
+
367
+
368
+
369
+ </div><!-- pcdata_pi_dz_p_dz-method -->
370
+
371
+
372
+ <div id="set_h-method" class="method-detail ">
373
+ <a name="method-i-set_h"></a>
374
+
375
+
376
+ <div class="method-heading">
377
+ <span class="method-name">set_h</span><span
378
+ class="method-args">(h)</span>
379
+ <span class="method-click-advice">click to toggle source</span>
380
+ </div>
381
+
382
+
383
+ <div class="method-description">
384
+
385
+ <p>set the constant log-p scale height (default 7e3 m)</p>
386
+
387
+ <p>Argument</p>
388
+ <ul><li>
389
+ <p>h [Unumeric]</p>
390
+ </li></ul>
391
+
392
+
393
+
394
+ <div class="method-source-code" id="set_h-source">
395
+ <pre>
396
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/log_p.rb, line 22</span>
397
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">set_h</span>(<span class="ruby-identifier">h</span>)
398
+ <span class="ruby-identifier">@@H</span> = <span class="ruby-identifier">h</span>
399
+ <span class="ruby-keyword">end</span></pre>
400
+ </div><!-- set_h-source -->
401
+
402
+ </div>
403
+
404
+
405
+
406
+
407
+ </div><!-- set_h-method -->
408
+
409
+
410
+ </div><!-- public-instance-method-details -->
411
+
412
+ </div><!-- 5Buntitled-5D -->
413
+
414
+
415
+ </div><!-- documentation -->
416
+
417
+ <div id="validator-badges">
418
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
419
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
420
+ Rdoc Generator</a> 2</small>.</p>
421
+ </div>
422
+
423
+ </body>
424
+ </html>
425
+
@@ -0,0 +1,2021 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: NumRu::GAnalysis::Met</title>
9
+
10
+ <link rel="stylesheet" href="../../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../../js/jquery.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="../../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
14
+ <script src="../../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
15
+ <script src="../../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
16
+
17
+ </head>
18
+ <body id="top" class="module">
19
+
20
+ <div id="metadata">
21
+ <div id="home-metadata">
22
+ <div id="home-section" class="section">
23
+ <h3 class="section-header">
24
+ <a href="../../index.html">Home</a>
25
+ <a href="../../index.html#classes">Classes</a>
26
+ <a href="../../index.html#methods">Methods</a>
27
+ </h3>
28
+ </div>
29
+ </div>
30
+
31
+ <div id="file-metadata">
32
+ <div id="file-list-section" class="section">
33
+ <h3 class="section-header">In Files</h3>
34
+ <div class="section-body">
35
+ <ul>
36
+
37
+ <li><a href="../../__/__/lib/numru/ganalysis/met_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
38
+ class="thickbox" title="../../lib/numru/ganalysis/met.rb">../../lib/numru/ganalysis/met.rb</a></li>
39
+
40
+ </ul>
41
+ </div>
42
+ </div>
43
+
44
+
45
+ </div>
46
+
47
+ <div id="class-metadata">
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+ <!-- Method Quickref -->
56
+ <div id="method-list-section" class="section">
57
+ <h3 class="section-header">Methods</h3>
58
+ <ul class="link-list">
59
+
60
+ <li><a href="#method-c-e_sat_ice">::e_sat_ice</a></li>
61
+
62
+ <li><a href="#method-i-consider_ice">#consider_ice</a></li>
63
+
64
+ <li><a href="#method-i-consider_ice-3D">#consider_ice=</a></li>
65
+
66
+ <li><a href="#method-i-convert_units2Pa">#convert_units2Pa</a></li>
67
+
68
+ <li><a href="#method-i-df_dx_vialogscale">#df_dx_vialogscale</a></li>
69
+
70
+ <li><a href="#method-i-e2q">#e2q</a></li>
71
+
72
+ <li><a href="#method-i-e2r">#e2r</a></li>
73
+
74
+ <li><a href="#method-i-e_sat">#e_sat</a></li>
75
+
76
+ <li><a href="#method-i-e_sat_bolton">#e_sat_bolton</a></li>
77
+
78
+ <li><a href="#method-i-e_sat_emanuel_ice">#e_sat_emanuel_ice</a></li>
79
+
80
+ <li><a href="#method-i-e_sat_emanuel_water">#e_sat_emanuel_water</a></li>
81
+
82
+ <li><a href="#method-i-find_prs_d">#find_prs_d</a></li>
83
+
84
+ <li><a href="#method-i-frontogenesis_func">#frontogenesis_func</a></li>
85
+
86
+ <li><a href="#method-i-g">#g</a></li>
87
+
88
+ <li><a href="#method-i-get_prs">#get_prs</a></li>
89
+
90
+ <li><a href="#method-i-ice_thres">#ice_thres</a></li>
91
+
92
+ <li><a href="#method-i-ice_thres-3D">#ice_thres=</a></li>
93
+
94
+ <li><a href="#method-i-interpolate_onto_theta">#interpolate_onto_theta</a></li>
95
+
96
+ <li><a href="#method-i-lat">#lat</a></li>
97
+
98
+ <li><a href="#method-i-pv_on_p">#pv_on_p</a></li>
99
+
100
+ <li><a href="#method-i-pv_on_theta">#pv_on_theta</a></li>
101
+
102
+ <li><a href="#method-i-q2e">#q2e</a></li>
103
+
104
+ <li><a href="#method-i-q2r">#q2r</a></li>
105
+
106
+ <li><a href="#method-i-r2e">#r2e</a></li>
107
+
108
+ <li><a href="#method-i-r2q">#r2q</a></li>
109
+
110
+ <li><a href="#method-i-rh2e">#rh2e</a></li>
111
+
112
+ <li><a href="#method-i-set_e_sat_water">#set_e_sat_water</a></li>
113
+
114
+ <li><a href="#method-i-set_g">#set_g</a></li>
115
+
116
+ <li><a href="#method-i-sigma_inv">#sigma_inv</a></li>
117
+
118
+ <li><a href="#method-i-temp2theta">#temp2theta</a></li>
119
+
120
+ <li><a href="#method-i-theta_e">#theta_e</a></li>
121
+
122
+ <li><a href="#method-i-theta_es">#theta_es</a></li>
123
+
124
+ <li><a href="#method-i-z2geostrophic_wind">#z2geostrophic_wind</a></li>
125
+
126
+ </ul>
127
+ </div>
128
+
129
+
130
+
131
+ </div>
132
+
133
+ <div id="project-metadata">
134
+
135
+
136
+
137
+ <div id="classindex-section" class="section project-section">
138
+ <h3 class="section-header">Class/Module Index
139
+ <span class="search-toggle"><img src="../../images/find.png"
140
+ height="16" width="16" alt="[+]"
141
+ title="show/hide quicksearch" /></span></h3>
142
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
143
+ <fieldset>
144
+ <legend>Quicksearch</legend>
145
+ <input type="text" name="quicksearch" value=""
146
+ class="quicksearch-field" />
147
+ </fieldset>
148
+ </form>
149
+
150
+ <ul class="link-list">
151
+
152
+ <li><a href="../../NumRu.html">NumRu</a></li>
153
+
154
+ <li><a href="../../NumRu/GAnalysis.html">NumRu::GAnalysis</a></li>
155
+
156
+ <li><a href="../../NumRu/GAnalysis/BetaPlane.html">NumRu::GAnalysis::BetaPlane</a></li>
157
+
158
+ <li><a href="../../NumRu/GAnalysis/Fitting.html">NumRu::GAnalysis::Fitting</a></li>
159
+
160
+ <li><a href="../../NumRu/GAnalysis/LogP.html">NumRu::GAnalysis::LogP</a></li>
161
+
162
+ <li><a href="../../NumRu/GAnalysis/Met.html">NumRu::GAnalysis::Met</a></li>
163
+
164
+ <li><a href="../../NumRu/GAnalysis/MetZ.html">NumRu::GAnalysis::MetZ</a></li>
165
+
166
+ <li><a href="../../NumRu/GAnalysis/Planet.html">NumRu::GAnalysis::Planet</a></li>
167
+
168
+ <li><a href="../../NumRu/GAnalysis/QG.html">NumRu::GAnalysis::QG</a></li>
169
+
170
+ <li><a href="../../NumRu/GAnalysis/QG/Uninitialized.html">NumRu::GAnalysis::QG::Uninitialized</a></li>
171
+
172
+ <li><a href="../../NumRu/GAnalysis/QG_common.html">NumRu::GAnalysis::QG_common</a></li>
173
+
174
+ <li><a href="../../NumRu/GAnalysis/QG_sphere.html">NumRu::GAnalysis::QG_sphere</a></li>
175
+
176
+ <li><a href="../../NumRu/GAnalysis/QG_sphere_common.html">NumRu::GAnalysis::QG_sphere_common</a></li>
177
+
178
+ <li><a href="../../NumRu/GAnalysis/QG_sphere_div.html">NumRu::GAnalysis::QG_sphere_div</a></li>
179
+
180
+ <li><a href="../../NumRu/GAnalysis/SigmaCoord.html">NumRu::GAnalysis::SigmaCoord</a></li>
181
+
182
+ <li><a href="../../NumRu/GGraph.html">NumRu::GGraph</a></li>
183
+
184
+ <li><a href="../../NumRu/GPhys.html">NumRu::GPhys</a></li>
185
+
186
+ <li><a href="../../Object.html">Object</a></li>
187
+
188
+ </ul>
189
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
190
+ </div>
191
+
192
+
193
+ </div>
194
+ </div>
195
+
196
+ <div id="documentation">
197
+ <h1 class="module">NumRu::GAnalysis::Met</h1>
198
+
199
+ <div id="description" class="description">
200
+
201
+ <p>Meteorological analysis</p>
202
+
203
+ <p>USEFUL METHODS</p>
204
+ <ul><li>
205
+ <p>temp2theta</p>
206
+ </li><li>
207
+ <p><a href="Met.html#method-i-pv_on_theta">pv_on_theta</a></p>
208
+ </li><li>
209
+ <p><a
210
+ href="Met.html#method-i-interpolate_onto_theta">interpolate_onto_theta</a></p>
211
+ </li></ul>
212
+
213
+ </div><!-- description -->
214
+
215
+
216
+
217
+
218
+ <div id="5Buntitled-5D" class="documentation-section">
219
+
220
+
221
+
222
+
223
+
224
+ <!-- Constants -->
225
+ <div id="constants-list" class="section">
226
+ <h3 class="section-header">Constants</h3>
227
+ <dl>
228
+
229
+ <dt><a name="Cp">Cp</a></dt>
230
+
231
+ <dd class="description"></dd>
232
+
233
+
234
+ <dt><a name="Cpv">Cpv</a></dt>
235
+
236
+ <dd class="description"></dd>
237
+
238
+
239
+ <dt><a name="Kappa">Kappa</a></dt>
240
+
241
+ <dd class="description"></dd>
242
+
243
+
244
+ <dt><a name="Lat0">Lat0</a></dt>
245
+
246
+ <dd class="description"></dd>
247
+
248
+
249
+ <dt><a name="P00">P00</a></dt>
250
+
251
+ <dd class="description"></dd>
252
+
253
+
254
+ <dt><a name="R">R</a></dt>
255
+
256
+ <dd class="description"><p>&lt; Themodynamic constants for the Earth’s atmosphere &gt;</p></dd>
257
+
258
+
259
+ <dt><a name="Rv">Rv</a></dt>
260
+
261
+ <dd class="description"></dd>
262
+
263
+
264
+ <dt><a name="T0">T0</a></dt>
265
+
266
+ <dd class="description"></dd>
267
+
268
+
269
+ </dl>
270
+ </div>
271
+
272
+
273
+
274
+
275
+ <!-- Methods -->
276
+
277
+ <div id="public-class-method-details" class="method-section section">
278
+ <h3 class="section-header">Public Class Methods</h3>
279
+
280
+
281
+ <div id="e_sat_ice-method" class="method-detail method-alias">
282
+ <a name="method-c-e_sat_ice"></a>
283
+
284
+
285
+ <div class="method-heading">
286
+ <span class="method-name">e_sat_ice</span><span
287
+ class="method-args">(temp, mask=nil)</span>
288
+ <span class="method-click-advice">click to toggle source</span>
289
+ </div>
290
+
291
+
292
+ <div class="method-description">
293
+
294
+ <p>currently, only a single formula is avilable for ice</p>
295
+
296
+
297
+
298
+ </div>
299
+
300
+
301
+
302
+
303
+ <div class="aliases">
304
+ Alias for: <a href="Met.html#method-i-e_sat_emanuel_ice">e_sat_emanuel_ice</a>
305
+ </div>
306
+
307
+ </div><!-- e_sat_ice-method -->
308
+
309
+
310
+ </div><!-- public-class-method-details -->
311
+
312
+ <div id="public-instance-method-details" class="method-section section">
313
+ <h3 class="section-header">Public Instance Methods</h3>
314
+
315
+
316
+ <div id="consider_ice-method" class="method-detail ">
317
+ <a name="method-i-consider_ice"></a>
318
+
319
+
320
+ <div class="method-heading">
321
+ <span class="method-name">consider_ice</span><span
322
+ class="method-args">()</span>
323
+ <span class="method-click-advice">click to toggle source</span>
324
+ </div>
325
+
326
+
327
+ <div class="method-description">
328
+
329
+ <p>whether or not ice is considered in the water phase change</p>
330
+
331
+
332
+
333
+ <div class="method-source-code" id="consider_ice-source">
334
+ <pre>
335
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 458</span>
336
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">consider_ice</span>
337
+ <span class="ruby-identifier">@@consider_ice</span>
338
+ <span class="ruby-keyword">end</span></pre>
339
+ </div><!-- consider_ice-source -->
340
+
341
+ </div>
342
+
343
+
344
+
345
+
346
+ </div><!-- consider_ice-method -->
347
+
348
+
349
+ <div id="consider_ice-3D-method" class="method-detail ">
350
+ <a name="method-i-consider_ice-3D"></a>
351
+
352
+
353
+ <div class="method-heading">
354
+ <span class="method-name">consider_ice=</span><span
355
+ class="method-args">(t_or_f)</span>
356
+ <span class="method-click-advice">click to toggle source</span>
357
+ </div>
358
+
359
+
360
+ <div class="method-description">
361
+
362
+ <p>set whether or not ice is considered in the water phase change</p>
363
+
364
+
365
+
366
+ <div class="method-source-code" id="consider_ice-3D-source">
367
+ <pre>
368
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 463</span>
369
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">consider_ice=</span>(<span class="ruby-identifier">t_or_f</span>)
370
+ <span class="ruby-identifier">@@consider_ice</span>=<span class="ruby-identifier">t_or_f</span>
371
+ <span class="ruby-keyword">end</span></pre>
372
+ </div><!-- consider_ice-3D-source -->
373
+
374
+ </div>
375
+
376
+
377
+
378
+
379
+ </div><!-- consider_ice-3D-method -->
380
+
381
+
382
+ <div id="convert_units2Pa-method" class="method-detail ">
383
+ <a name="method-i-convert_units2Pa"></a>
384
+
385
+
386
+ <div class="method-heading">
387
+ <span class="method-name">convert_units2Pa</span><span
388
+ class="method-args">(prs)</span>
389
+ <span class="method-click-advice">click to toggle source</span>
390
+ </div>
391
+
392
+
393
+ <div class="method-description">
394
+
395
+ <p>Convert units into Pa. To deal with old versions of NumRu::Units that do
396
+ not support “millibar”.</p>
397
+
398
+ <p>ARGUMENT</p>
399
+ <ul><li>
400
+ <p>prs [<a href="../GPhys.html">GPhys</a> and UNumeric]</p>
401
+ </li></ul>
402
+
403
+
404
+
405
+ <div class="method-source-code" id="convert_units2Pa-source">
406
+ <pre>
407
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 398</span>
408
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">convert_units2Pa</span>(<span class="ruby-identifier">prs</span>)
409
+ <span class="ruby-identifier">pa</span> = <span class="ruby-constant">Units</span>[<span class="ruby-string">&quot;Pa&quot;</span>]
410
+ <span class="ruby-identifier">un</span> = <span class="ruby-identifier">prs</span>.<span class="ruby-identifier">units</span>
411
+ <span class="ruby-keyword">if</span> ((<span class="ruby-identifier">un</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">pa</span>) <span class="ruby-keyword">and</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">un</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">pa</span>))
412
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units</span>(<span class="ruby-identifier">prs</span>, <span class="ruby-identifier">pa</span>)
413
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">un</span>.<span class="ruby-identifier">to_s</span><span class="ruby-operator">==</span><span class="ruby-string">&quot;millibar&quot;</span>
414
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">UNumeric</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">prs</span>
415
+ <span class="ruby-identifier">ret</span> = <span class="ruby-constant">UNumeric</span>[<span class="ruby-identifier">prs</span>.<span class="ruby-identifier">val</span>*<span class="ruby-value">100</span>, <span class="ruby-string">&quot;Pa&quot;</span>]
416
+ <span class="ruby-keyword">else</span>
417
+ <span class="ruby-identifier">ret</span> = <span class="ruby-identifier">prs</span>*<span class="ruby-value">100</span>
418
+ <span class="ruby-identifier">ret</span>.<span class="ruby-identifier">units</span> = <span class="ruby-string">&quot;Pa&quot;</span>
419
+ <span class="ruby-keyword">end</span>
420
+ <span class="ruby-identifier">ret</span>
421
+ <span class="ruby-keyword">else</span>
422
+ <span class="ruby-identifier">prs</span>
423
+ <span class="ruby-keyword">end</span>
424
+ <span class="ruby-keyword">end</span></pre>
425
+ </div><!-- convert_units2Pa-source -->
426
+
427
+ </div>
428
+
429
+
430
+
431
+
432
+ </div><!-- convert_units2Pa-method -->
433
+
434
+
435
+ <div id="df_dx_vialogscale-method" class="method-detail ">
436
+ <a name="method-i-df_dx_vialogscale"></a>
437
+
438
+
439
+ <div class="method-heading">
440
+ <span class="method-name">df_dx_vialogscale</span><span
441
+ class="method-args">(f, x, dim)</span>
442
+ <span class="method-click-advice">click to toggle source</span>
443
+ </div>
444
+
445
+
446
+ <div class="method-description">
447
+
448
+
449
+
450
+
451
+
452
+ <div class="method-source-code" id="df_dx_vialogscale-source">
453
+ <pre>
454
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 440</span>
455
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">df_dx_vialogscale</span>(<span class="ruby-identifier">f</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">dim</span>)
456
+ <span class="ruby-identifier">z</span> = <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>)
457
+ <span class="ruby-keyword">if</span> <span class="ruby-constant">GPhys</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">f</span>
458
+ <span class="ruby-identifier">mdl</span> = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">GPhys</span><span class="ruby-operator">::</span><span class="ruby-constant">Derivative</span>
459
+ <span class="ruby-identifier">dfdz</span> = <span class="ruby-identifier">mdl</span>.<span class="ruby-identifier">threepoint_O2nd_deriv</span>(<span class="ruby-identifier">f</span>, <span class="ruby-identifier">dim</span>, <span class="ruby-identifier">mdl</span><span class="ruby-operator">::</span><span class="ruby-constant">LINEAR_EXT</span>, <span class="ruby-identifier">z</span>)
460
+ <span class="ruby-keyword">else</span>
461
+ <span class="ruby-identifier">mdl</span> = <span class="ruby-constant">NumRu</span><span class="ruby-operator">::</span><span class="ruby-constant">Derivative</span>
462
+ <span class="ruby-identifier">dfdz</span> = <span class="ruby-identifier">mdl</span>.<span class="ruby-identifier">threepoint_O2nd_deriv</span>(<span class="ruby-identifier">f</span>, <span class="ruby-identifier">z</span>, <span class="ruby-identifier">dim</span>, <span class="ruby-identifier">mdl</span><span class="ruby-operator">::</span><span class="ruby-constant">LINEAR_EXT</span>)
463
+ <span class="ruby-keyword">end</span>
464
+ <span class="ruby-identifier">dfdz</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">x</span>
465
+ <span class="ruby-keyword">end</span></pre>
466
+ </div><!-- df_dx_vialogscale-source -->
467
+
468
+ </div>
469
+
470
+
471
+
472
+
473
+ </div><!-- df_dx_vialogscale-method -->
474
+
475
+
476
+ <div id="e2q-method" class="method-detail ">
477
+ <a name="method-i-e2q"></a>
478
+
479
+
480
+ <div class="method-heading">
481
+ <span class="method-name">e2q</span><span
482
+ class="method-args">(e,prs=nil)</span>
483
+ <span class="method-click-advice">click to toggle source</span>
484
+ </div>
485
+
486
+
487
+ <div class="method-description">
488
+
489
+ <p>water vapor pressure -&gt; specific humidity</p>
490
+
491
+ <p>ARGUMENTS</p>
492
+ <ul><li>
493
+ <p>e: water vapor pressure</p>
494
+ </li><li>
495
+ <p>prs: pressure</p>
496
+ </li></ul>
497
+
498
+ <p>RETURN VALUE</p>
499
+ <ul><li>
500
+ <p>q: specific humidity</p>
501
+ </li></ul>
502
+
503
+
504
+
505
+ <div class="method-source-code" id="e2q-source">
506
+ <pre>
507
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 567</span>
508
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">e2q</span>(<span class="ruby-identifier">e</span>,<span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
509
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">e</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">prs</span>
510
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units</span>(<span class="ruby-identifier">prs</span>,<span class="ruby-identifier">e</span>.<span class="ruby-identifier">units</span>)
511
+ <span class="ruby-identifier">rratio</span> = <span class="ruby-constant">R</span> <span class="ruby-operator">/</span> <span class="ruby-constant">Rv</span>
512
+ <span class="ruby-identifier">q</span> = <span class="ruby-identifier">rratio</span> * <span class="ruby-identifier">e</span> <span class="ruby-operator">/</span> (<span class="ruby-identifier">prs</span><span class="ruby-operator">-</span>(<span class="ruby-value">1</span><span class="ruby-operator">-</span><span class="ruby-identifier">rratio</span>)*<span class="ruby-identifier">e</span>)
513
+ <span class="ruby-identifier">q</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;q&quot;</span>
514
+ <span class="ruby-identifier">q</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;specific humidity&quot;</span>
515
+ <span class="ruby-identifier">q</span>
516
+ <span class="ruby-keyword">end</span></pre>
517
+ </div><!-- e2q-source -->
518
+
519
+ </div>
520
+
521
+
522
+
523
+
524
+ </div><!-- e2q-method -->
525
+
526
+
527
+ <div id="e2r-method" class="method-detail ">
528
+ <a name="method-i-e2r"></a>
529
+
530
+
531
+ <div class="method-heading">
532
+ <span class="method-name">e2r</span><span
533
+ class="method-args">(e,prs=nil)</span>
534
+ <span class="method-click-advice">click to toggle source</span>
535
+ </div>
536
+
537
+
538
+ <div class="method-description">
539
+
540
+ <p>water vapor pressure -&gt; mixing ratio</p>
541
+
542
+ <p>ARGUMENTS</p>
543
+ <ul><li>
544
+ <p>e: water vapor pressure</p>
545
+ </li><li>
546
+ <p>prs: pressure</p>
547
+ </li></ul>
548
+
549
+ <p>RETURN VALUE</p>
550
+ <ul><li>
551
+ <p>r: mixing ratio</p>
552
+ </li></ul>
553
+
554
+
555
+
556
+ <div class="method-source-code" id="e2r-source">
557
+ <pre>
558
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 531</span>
559
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">e2r</span>(<span class="ruby-identifier">e</span>,<span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
560
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">e</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">prs</span>
561
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units</span>(<span class="ruby-identifier">prs</span>,<span class="ruby-identifier">e</span>.<span class="ruby-identifier">units</span>)
562
+ <span class="ruby-identifier">rratio</span> = <span class="ruby-constant">R</span> <span class="ruby-operator">/</span> <span class="ruby-constant">Rv</span>
563
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">rratio</span> * <span class="ruby-identifier">e</span> <span class="ruby-operator">/</span> (<span class="ruby-identifier">prs</span><span class="ruby-operator">-</span><span class="ruby-identifier">e</span>)
564
+ <span class="ruby-identifier">r</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;r&quot;</span>
565
+ <span class="ruby-identifier">r</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;mixing ratio&quot;</span>
566
+ <span class="ruby-identifier">r</span>
567
+ <span class="ruby-keyword">end</span></pre>
568
+ </div><!-- e2r-source -->
569
+
570
+ </div>
571
+
572
+
573
+
574
+
575
+ </div><!-- e2r-method -->
576
+
577
+
578
+ <div id="e_sat-method" class="method-detail ">
579
+ <a name="method-i-e_sat"></a>
580
+
581
+
582
+ <div class="method-heading">
583
+ <span class="method-name">e_sat</span><span
584
+ class="method-args">(temp)</span>
585
+ <span class="method-click-advice">click to toggle source</span>
586
+ </div>
587
+
588
+
589
+ <div class="method-description">
590
+
591
+ <p>Calculates saturation water vapor pressure using enhanced</p>
592
+
593
+ <p>ARGUMENTS</p>
594
+ <ul><li>
595
+ <p>temp: temperature</p>
596
+ </li></ul>
597
+
598
+ <p>RETURN VALUE</p>
599
+ <ul><li>
600
+ <p>es: saturation water vapor pressure</p>
601
+ </li></ul>
602
+
603
+
604
+
605
+ <div class="method-source-code" id="e_sat-source">
606
+ <pre>
607
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 695</span>
608
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">e_sat</span>(<span class="ruby-identifier">temp</span>)
609
+
610
+ <span class="ruby-identifier">ice</span> = <span class="ruby-identifier">@@consider_ice</span> <span class="ruby-operator">&amp;&amp;</span> ( <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">lt</span>(<span class="ruby-identifier">@@ice_thres</span>) )
611
+ <span class="ruby-comment">#ice = ice.to_na</span>
612
+ <span class="ruby-identifier">water</span> = <span class="ruby-operator">!</span><span class="ruby-identifier">@@consider_ice</span> <span class="ruby-operator">||</span> ( (<span class="ruby-identifier">ice</span><span class="ruby-operator">==</span><span class="ruby-keyword">true</span><span class="ruby-operator">||</span><span class="ruby-identifier">ice</span><span class="ruby-operator">==</span><span class="ruby-keyword">false</span>) <span class="ruby-operator">?</span> <span class="ruby-operator">!</span><span class="ruby-identifier">ice</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">ice</span>.<span class="ruby-identifier">not</span>)
613
+
614
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">water</span>
615
+ <span class="ruby-identifier">es</span> = <span class="ruby-identifier">e_sat_water</span>(<span class="ruby-identifier">temp</span>)
616
+ <span class="ruby-keyword">end</span>
617
+
618
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">ice</span>
619
+ <span class="ruby-keyword">when</span> <span class="ruby-keyword">true</span>
620
+ <span class="ruby-identifier">es</span> = <span class="ruby-identifier">e_sat_ice</span>(<span class="ruby-identifier">temp</span>)
621
+ <span class="ruby-keyword">when</span> <span class="ruby-constant">NArray</span>, <span class="ruby-constant">NArrayMiss</span>
622
+ <span class="ruby-identifier">es</span>[<span class="ruby-identifier">ice</span>] = <span class="ruby-identifier">e_sat_ice</span>(<span class="ruby-identifier">temp</span>,<span class="ruby-identifier">ice</span>).<span class="ruby-identifier">val</span>[<span class="ruby-identifier">ice</span>]
623
+ <span class="ruby-keyword">end</span>
624
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e_sat&quot;</span>
625
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;e_sat&quot;</span>
626
+ <span class="ruby-identifier">es</span>
627
+ <span class="ruby-keyword">end</span></pre>
628
+ </div><!-- e_sat-source -->
629
+
630
+ </div>
631
+
632
+
633
+
634
+
635
+ </div><!-- e_sat-method -->
636
+
637
+
638
+ <div id="e_sat_bolton-method" class="method-detail ">
639
+ <a name="method-i-e_sat_bolton"></a>
640
+
641
+
642
+ <div class="method-heading">
643
+ <span class="method-name">e_sat_bolton</span><span
644
+ class="method-args">(temp)</span>
645
+ <span class="method-click-advice">click to toggle source</span>
646
+ </div>
647
+
648
+
649
+ <div class="method-description">
650
+
651
+ <p>Bolton formula for saturation water vapor pressure against water</p>
652
+
653
+ <p>ARGUMENTS</p>
654
+ <ul><li>
655
+ <p>temp: temperature</p>
656
+ </li></ul>
657
+
658
+ <p>RETURN VALUE</p>
659
+ <ul><li>
660
+ <p>es: saturation water vapor pressure [Pa]</p>
661
+ </li></ul>
662
+
663
+
664
+
665
+ <div class="method-source-code" id="e_sat_bolton-source">
666
+ <pre>
667
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 601</span>
668
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">e_sat_bolton</span>(<span class="ruby-identifier">temp</span>)
669
+ <span class="ruby-identifier">tempC</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;degC&quot;</span>)
670
+ <span class="ruby-identifier">es</span> = <span class="ruby-constant">UNumeric</span>[<span class="ruby-value">6.112e2</span>,<span class="ruby-string">&quot;Pa&quot;</span>] *
671
+ <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>( <span class="ruby-value">17.67</span> * <span class="ruby-identifier">tempC</span> <span class="ruby-operator">/</span> (<span class="ruby-identifier">tempC</span> <span class="ruby-operator">+</span> <span class="ruby-constant">UNumeric</span>[<span class="ruby-value">243.5</span>,<span class="ruby-string">&quot;degC&quot;</span>] ) )
672
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e_sat&quot;</span>
673
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;e_sat_water bolton&quot;</span>
674
+ <span class="ruby-identifier">es</span>
675
+ <span class="ruby-keyword">end</span></pre>
676
+ </div><!-- e_sat_bolton-source -->
677
+
678
+ </div>
679
+
680
+
681
+
682
+
683
+ </div><!-- e_sat_bolton-method -->
684
+
685
+
686
+ <div id="e_sat_emanuel_ice-method" class="method-detail ">
687
+ <a name="method-i-e_sat_emanuel_ice"></a>
688
+
689
+
690
+ <div class="method-heading">
691
+ <span class="method-name">e_sat_emanuel_ice</span><span
692
+ class="method-args">(temp, mask=nil)</span>
693
+ <span class="method-click-advice">click to toggle source</span>
694
+ </div>
695
+
696
+
697
+ <div class="method-description">
698
+
699
+ <p>Saturation water vapor pressure against ice.</p>
700
+
701
+ <p>Emanuel (1994) eq.(4.4.15)</p>
702
+
703
+ <p>ARGUMENTS</p>
704
+ <ul><li>
705
+ <p>temp: temperature</p>
706
+ </li></ul>
707
+
708
+ <p>RETURN VALUE</p>
709
+ <ul><li>
710
+ <p>es: saturation water vapor pressure [Pa]</p>
711
+ </li></ul>
712
+
713
+
714
+
715
+ <div class="method-source-code" id="e_sat_emanuel_ice-source">
716
+ <pre>
717
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 646</span>
718
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">e_sat_emanuel_ice</span>(<span class="ruby-identifier">temp</span>, <span class="ruby-identifier">mask</span>=<span class="ruby-keyword">nil</span>)
719
+ <span class="ruby-identifier">es</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">copy</span>
720
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;K&quot;</span>).<span class="ruby-identifier">val</span> <span class="ruby-comment"># units removed</span>
721
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">tempK</span>[<span class="ruby-identifier">mask</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">mask</span>
722
+ <span class="ruby-identifier">e</span> = <span class="ruby-value">23.33086</span> <span class="ruby-operator">-</span> <span class="ruby-value">6111.72784</span><span class="ruby-operator">/</span><span class="ruby-identifier">tempK</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.15215</span> * <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">tempK</span>)
723
+ <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">mask</span>
724
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">replace_val</span>( <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-identifier">e</span>) * <span class="ruby-value">100.0</span> )
725
+ <span class="ruby-keyword">else</span>
726
+ <span class="ruby-identifier">es</span>[<span class="ruby-keyword">false</span>] = <span class="ruby-value">0</span>
727
+ <span class="ruby-identifier">es</span>[<span class="ruby-identifier">mask</span>] = <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-identifier">e</span>) * <span class="ruby-value">100.0</span>
728
+ <span class="ruby-keyword">end</span>
729
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">units</span> = <span class="ruby-string">&quot;Pa&quot;</span>
730
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e_sat_ice&quot;</span>
731
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;e_sat_ice emanuel&quot;</span>
732
+ <span class="ruby-identifier">es</span>
733
+ <span class="ruby-keyword">end</span></pre>
734
+ </div><!-- e_sat_emanuel_ice-source -->
735
+
736
+ </div>
737
+
738
+
739
+ <div class="aliases">
740
+ Also aliased as: <a href="Met.html#method-i-e_sat_ice">e_sat_ice</a>
741
+ </div>
742
+
743
+
744
+
745
+ </div><!-- e_sat_emanuel_ice-method -->
746
+
747
+
748
+ <div id="e_sat_emanuel_water-method" class="method-detail ">
749
+ <a name="method-i-e_sat_emanuel_water"></a>
750
+
751
+
752
+ <div class="method-heading">
753
+ <span class="method-name">e_sat_emanuel_water</span><span
754
+ class="method-args">(temp, mask=nil)</span>
755
+ <span class="method-click-advice">click to toggle source</span>
756
+ </div>
757
+
758
+
759
+ <div class="method-description">
760
+
761
+ <p>saturation water vapor pressure against ice.</p>
762
+
763
+ <p>Emanuel (1994) eq.(4.4.15)</p>
764
+
765
+ <p>ARGUMENTS</p>
766
+ <ul><li>
767
+ <p>temp: temperature</p>
768
+ </li></ul>
769
+
770
+ <p>RETURN VALUE</p>
771
+ <ul><li>
772
+ <p>es: saturation water vapor pressure [Pa]</p>
773
+ </li></ul>
774
+
775
+
776
+
777
+ <div class="method-source-code" id="e_sat_emanuel_water-source">
778
+ <pre>
779
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 619</span>
780
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">e_sat_emanuel_water</span>(<span class="ruby-identifier">temp</span>, <span class="ruby-identifier">mask</span>=<span class="ruby-keyword">nil</span>)
781
+ <span class="ruby-identifier">es</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">copy</span>
782
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;K&quot;</span>).<span class="ruby-identifier">val</span> <span class="ruby-comment"># units removed</span>
783
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">tempK</span>[<span class="ruby-identifier">mask</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">mask</span>
784
+ <span class="ruby-identifier">e</span> = <span class="ruby-value">53.67957</span> <span class="ruby-operator">-</span> <span class="ruby-value">6743.769</span><span class="ruby-operator">/</span><span class="ruby-identifier">tempK</span> <span class="ruby-operator">-</span> <span class="ruby-value">4.8451</span> * <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">tempK</span>)
785
+ <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">mask</span>
786
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">replace_val</span>( <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-identifier">e</span>) * <span class="ruby-value">100.0</span> )
787
+ <span class="ruby-keyword">else</span>
788
+ <span class="ruby-identifier">es</span>[<span class="ruby-keyword">false</span>] = <span class="ruby-value">0</span>
789
+ <span class="ruby-identifier">es</span>[<span class="ruby-identifier">mask</span>] = <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-identifier">e</span>) * <span class="ruby-value">100.0</span>
790
+ <span class="ruby-keyword">end</span>
791
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">units</span> = <span class="ruby-string">&quot;Pa&quot;</span>
792
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e_sat_ice&quot;</span>
793
+ <span class="ruby-identifier">es</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;e_sat_ice emanuel&quot;</span>
794
+ <span class="ruby-identifier">es</span>
795
+ <span class="ruby-keyword">end</span></pre>
796
+ </div><!-- e_sat_emanuel_water-source -->
797
+
798
+ </div>
799
+
800
+
801
+
802
+
803
+ </div><!-- e_sat_emanuel_water-method -->
804
+
805
+
806
+ <div id="find_prs_d-method" class="method-detail ">
807
+ <a name="method-i-find_prs_d"></a>
808
+
809
+
810
+ <div class="method-heading">
811
+ <span class="method-name">find_prs_d</span><span
812
+ class="method-args">(gphys, error=nil)</span>
813
+ <span class="method-click-advice">click to toggle source</span>
814
+ </div>
815
+
816
+
817
+ <div class="method-description">
818
+
819
+ <pre>def frontogenesis_eulerian(theta, u, v, w=nil, fstodr=true )
820
+ thx, thy = GAnalysis::Planet.grad_s( theta )
821
+ uthxx, uthxy = GAnalysis::Planet.grad_s( u*thx )
822
+ vthyx, vthyy = GAnalysis::Planet.grad_s( v*thy )
823
+ va = GAnalysis::Planet.weight_tanphi( v, 1, -1 )
824
+ frgf = - (uthxx+vthyx)*thx - (uthxy+vthyy)*thy
825
+ frgf.name = &quot;thgrd_tend&quot;
826
+ frgf.long_name = &quot;Eluerian grad-theta tendency&quot;
827
+ if w
828
+ zdim = 2
829
+ if (wun=w.units) !~ (ztun = theta.coord(zdim).units * Units[&quot;s-1&quot;])
830
+ raise &quot;w in #{wun} is inconsistent with the vertical coordinate of theta in #{ztun}&quot;
831
+ else
832
+ w = w.convert_units(ztun) # For example, Pa/s -&gt; hPa/s
833
+ end
834
+ z = theta.axis(zdim).to_gphys
835
+ if z.units =~ Units[&quot;Pa&quot;]
836
+ thz = df_dx_vialogscale(theta, z, zdim)
837
+ else
838
+ thz = df_dx(theta, z, zdim)
839
+ end
840
+ wthzx, wthzy = GAnalysis::Planet.grad_s( w*thz )
841
+ frgf -= wthzx*thx + wthzy*thy
842
+ end
843
+ if fstodr
844
+ frgf /= (thx**2 + thy**2).sqrt
845
+ else
846
+ frgf *= 2
847
+ end
848
+ frgf
849
+ end</pre>
850
+
851
+ <p># Find a pressure coordinate in a <a href="../GPhys.html">GPhys</a> object
852
+ # # ARGUMENT # * gphys [GPhys] # * error [nil/false or true] change the
853
+ behavior if a # pressure coordinate is not found. Default: returns nil; #
854
+ if error is true, an exception is raised. # RETURN VALUE # * Integer to
855
+ indicate the dimension of the pressure coordinate, # or nil if not found
856
+ by default (see above)</p>
857
+
858
+
859
+
860
+ <div class="method-source-code" id="find_prs_d-source">
861
+ <pre>
862
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 352</span>
863
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-identifier">error</span>=<span class="ruby-keyword">nil</span>)
864
+ <span class="ruby-identifier">pa</span> = <span class="ruby-constant">Units</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">&quot;Pa&quot;</span>)
865
+ (<span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">rank</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>).<span class="ruby-identifier">downto</span>(<span class="ruby-value">0</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">d</span><span class="ruby-operator">|</span>
866
+ <span class="ruby-identifier">un</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">axis</span>(<span class="ruby-identifier">d</span>).<span class="ruby-identifier">pos</span>.<span class="ruby-identifier">units</span>
867
+ <span class="ruby-keyword">if</span> ( <span class="ruby-identifier">un</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">pa</span> <span class="ruby-keyword">or</span> <span class="ruby-identifier">un</span>.<span class="ruby-identifier">to_s</span><span class="ruby-operator">==</span><span class="ruby-string">&quot;millibar&quot;</span> )
868
+ <span class="ruby-keyword">return</span>(<span class="ruby-identifier">d</span>)
869
+ <span class="ruby-keyword">end</span>
870
+ <span class="ruby-keyword">end</span>
871
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">error</span>
872
+ <span class="ruby-identifier">raise</span>(<span class="ruby-string">&quot;Could not find a pressure coordinate.&quot;</span>)
873
+ <span class="ruby-keyword">else</span>
874
+ <span class="ruby-keyword">nil</span>
875
+ <span class="ruby-keyword">end</span>
876
+ <span class="ruby-keyword">end</span></pre>
877
+ </div><!-- find_prs_d-source -->
878
+
879
+ </div>
880
+
881
+
882
+
883
+
884
+ </div><!-- find_prs_d-method -->
885
+
886
+
887
+ <div id="frontogenesis_func-method" class="method-detail ">
888
+ <a name="method-i-frontogenesis_func"></a>
889
+
890
+
891
+ <div class="method-heading">
892
+ <span class="method-name">frontogenesis_func</span><span
893
+ class="method-args">(theta, u, v, w=nil, fstodr=true, full_adv = true)</span>
894
+ <span class="method-click-advice">click to toggle source</span>
895
+ </div>
896
+
897
+
898
+ <div class="method-description">
899
+
900
+ <p>Adiabatic frontogenesis function over the sphere. – D/Dt(|gradH theta|) or
901
+ D/Dt(|gradH theta|^2), where gradH express the horizontal component of
902
+ gradient.</p>
903
+
904
+ <p>if full_adv is true (default),</p>
905
+
906
+ <pre>D/Dt(|gradH theta|) =
907
+ [ -(ux-va)*thetax^2 - (vx+uy)*thetax*thetay - vy*thetay^2
908
+ - (wx*thetax + wy*thetay)*theta_z ]
909
+ / |gradH theta|</pre>
910
+
911
+ <p>or else,</p>
912
+
913
+ <pre>(\del/\del t + u gradx + v grady )(|gradH theta|) =
914
+ [ -(ux-va)*thetax^2 - (vx+uy)*thetax*thetay - vy*thetay^2
915
+ - (w*theta_z)_x*thetax - (w*theta_z)_y*thetay ]
916
+ / |gradH theta|</pre>
917
+
918
+ <p>Here, the 2nd line (vertical advection) is optional;</p>
919
+ <dl class="rdoc-list"><dt>vx, vy</dt>
920
+ <dd>
921
+ <h1>gradH v; [thetax, thetay] = gradH theta;</h1>
922
+ </dd><dt>ux, uy</dt>
923
+ <dd>
924
+ <h1>cos_phi * gradH (u/cos_phi)</h1>
925
+ </dd></dl>
926
+
927
+ <p>va = v*tan_phi/a (a=radius). z and w is the vertical coordinate and the
928
+ lagrangian “velocity” in that coordinate — Typically they are p and omega,
929
+ or log-p height and log-p w.</p>
930
+
931
+ <p>This formulation is adiabatic; the diabatic heating effect can be easily
932
+ included if needed.</p>
933
+
934
+ <p>ARGUMENTS</p>
935
+ <ul><li>
936
+ <p>theta [GPhys] : potential temperature</p>
937
+ </li><li>
938
+ <p>u [GPhys] : zonal wind</p>
939
+ </li><li>
940
+ <p>v [GPhys] : meridional wind</p>
941
+ </li><li>
942
+ <p>w [nil (default) or GPhys] : (optional) “vertical wind”, which must be
943
+ dimensionally consistent with the vertical coordiante (e.g., omega for the
944
+ pressure coordinate). If w is given, the vertical cooridnate is assumed to
945
+ be the 3rd one (dim=2).</p>
946
+ </li><li>
947
+ <p>fstodr [true (default) or false] (optional) if true D/Dt(|NablaH theta|)
948
+ returned; if false D/Dt(|NablaH theta|^2) is returned.</p>
949
+ </li><li>
950
+ <p>full_adv [true (default) or false] : whether to calculate full lagrangian
951
+ tendency or lagragian tendency only in horizontal direction</p>
952
+ </li></ul>
953
+
954
+ <p>RETURN VALUE</p>
955
+ <ul><li>
956
+ <p>frontogenesis function [GPhys]</p>
957
+ </li></ul>
958
+
959
+
960
+
961
+ <div class="method-source-code" id="frontogenesis_func-source">
962
+ <pre>
963
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 268</span>
964
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">frontogenesis_func</span>(<span class="ruby-identifier">theta</span>, <span class="ruby-identifier">u</span>, <span class="ruby-identifier">v</span>, <span class="ruby-identifier">w</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">fstodr</span>=<span class="ruby-keyword">true</span>, <span class="ruby-identifier">full_adv</span> = <span class="ruby-keyword">true</span>)
965
+ <span class="ruby-identifier">thx</span>, <span class="ruby-identifier">thy</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_s</span>( <span class="ruby-identifier">theta</span> )
966
+ <span class="ruby-identifier">ux</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_sx</span>( <span class="ruby-identifier">u</span> )
967
+ <span class="ruby-identifier">uy</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_sy_cosphifact</span>( <span class="ruby-identifier">u</span>, <span class="ruby-value">-1</span> )
968
+ <span class="ruby-identifier">vx</span>, <span class="ruby-identifier">vy</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_s</span>( <span class="ruby-identifier">v</span> )
969
+ <span class="ruby-identifier">va</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">weight_tanphi</span>( <span class="ruby-identifier">v</span>, <span class="ruby-value">1</span>, <span class="ruby-value">-1</span> )
970
+ <span class="ruby-identifier">frgf</span> = <span class="ruby-operator">-</span> (<span class="ruby-identifier">ux</span><span class="ruby-operator">-</span><span class="ruby-identifier">va</span>)*<span class="ruby-identifier">thx</span>*<span class="ruby-identifier">thx</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">vx</span><span class="ruby-operator">+</span><span class="ruby-identifier">uy</span>)*<span class="ruby-identifier">thx</span>*<span class="ruby-identifier">thy</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">vy</span>*<span class="ruby-identifier">thy</span>*<span class="ruby-identifier">thy</span>
971
+ <span class="ruby-identifier">frgf</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;frgen&quot;</span>
972
+ <span class="ruby-identifier">frgf</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;frontogenesis function&quot;</span>
973
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">w</span>
974
+ <span class="ruby-identifier">zdim</span> = <span class="ruby-value">2</span>
975
+ <span class="ruby-keyword">if</span> (<span class="ruby-identifier">wun</span>=<span class="ruby-identifier">w</span>.<span class="ruby-identifier">units</span>) <span class="ruby-operator">!~</span> (<span class="ruby-identifier">ztun</span> = <span class="ruby-identifier">theta</span>.<span class="ruby-identifier">coord</span>(<span class="ruby-identifier">zdim</span>).<span class="ruby-identifier">units</span> * <span class="ruby-constant">Units</span>[<span class="ruby-string">&quot;s-1&quot;</span>])
976
+ <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;w in #{wun} is inconsistent with the vertical coordinate of theta in #{ztun}&quot;</span>
977
+ <span class="ruby-keyword">else</span>
978
+ <span class="ruby-identifier">w</span> = <span class="ruby-identifier">w</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-identifier">ztun</span>) <span class="ruby-comment"># For example, Pa/s -&gt; hPa/s</span>
979
+ <span class="ruby-keyword">end</span>
980
+ <span class="ruby-identifier">z</span> = <span class="ruby-identifier">theta</span>.<span class="ruby-identifier">axis</span>(<span class="ruby-identifier">zdim</span>).<span class="ruby-identifier">to_gphys</span>
981
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">z</span>.<span class="ruby-identifier">units</span> <span class="ruby-operator">=~</span> <span class="ruby-constant">Units</span>[<span class="ruby-string">&quot;Pa&quot;</span>]
982
+ <span class="ruby-identifier">thz</span> = <span class="ruby-identifier">df_dx_vialogscale</span>(<span class="ruby-identifier">theta</span>, <span class="ruby-identifier">z</span>, <span class="ruby-identifier">zdim</span>)
983
+ <span class="ruby-keyword">else</span>
984
+ <span class="ruby-identifier">thz</span> = <span class="ruby-identifier">df_dx</span>(<span class="ruby-identifier">theta</span>, <span class="ruby-identifier">z</span>, <span class="ruby-identifier">zdim</span>)
985
+ <span class="ruby-keyword">end</span>
986
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">full_adv</span>
987
+ <span class="ruby-comment"># full lagragian tendency of theta-gradient strength</span>
988
+ <span class="ruby-identifier">wx</span>, <span class="ruby-identifier">wy</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_s</span>( <span class="ruby-identifier">w</span> )
989
+ <span class="ruby-identifier">frgf</span> <span class="ruby-operator">-=</span> (<span class="ruby-identifier">wx</span>*<span class="ruby-identifier">thx</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">wy</span>*<span class="ruby-identifier">thy</span>)*<span class="ruby-identifier">thz</span>
990
+ <span class="ruby-keyword">else</span>
991
+ <span class="ruby-comment"># lagragian tendency only in horizontal direction</span>
992
+ <span class="ruby-identifier">wthzx</span>, <span class="ruby-identifier">wthzy</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_s</span>( <span class="ruby-identifier">w</span>*<span class="ruby-identifier">thz</span> )
993
+ <span class="ruby-identifier">frgf</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">wthzx</span>*<span class="ruby-identifier">thx</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">wthzy</span>*<span class="ruby-identifier">thy</span>
994
+ <span class="ruby-keyword">end</span>
995
+ <span class="ruby-keyword">end</span>
996
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">fstodr</span>
997
+ <span class="ruby-identifier">frgf</span> <span class="ruby-operator">/=</span> (<span class="ruby-identifier">thx</span><span class="ruby-operator">**</span><span class="ruby-value">2</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">thy</span><span class="ruby-operator">**</span><span class="ruby-value">2</span>).<span class="ruby-identifier">sqrt</span>
998
+ <span class="ruby-keyword">else</span>
999
+ <span class="ruby-identifier">frgf</span> <span class="ruby-operator">*=</span> <span class="ruby-value">2</span>
1000
+ <span class="ruby-keyword">end</span>
1001
+ <span class="ruby-identifier">frgf</span>
1002
+ <span class="ruby-keyword">end</span></pre>
1003
+ </div><!-- frontogenesis_func-source -->
1004
+
1005
+ </div>
1006
+
1007
+
1008
+
1009
+
1010
+ </div><!-- frontogenesis_func-method -->
1011
+
1012
+
1013
+ <div id="g-method" class="method-detail ">
1014
+ <a name="method-i-g"></a>
1015
+
1016
+
1017
+ <div class="method-heading">
1018
+ <span class="method-name">g</span><span
1019
+ class="method-args">()</span>
1020
+ <span class="method-click-advice">click to toggle source</span>
1021
+ </div>
1022
+
1023
+
1024
+ <div class="method-description">
1025
+
1026
+ <p>Returns gravity acceleration in the module (default: 9.8 ms-1).</p>
1027
+
1028
+
1029
+
1030
+ <div class="method-source-code" id="g-source">
1031
+ <pre>
1032
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 60</span>
1033
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">g</span>
1034
+ <span class="ruby-identifier">@@g</span>.<span class="ruby-identifier">dup</span>
1035
+ <span class="ruby-keyword">end</span></pre>
1036
+ </div><!-- g-source -->
1037
+
1038
+ </div>
1039
+
1040
+
1041
+
1042
+
1043
+ </div><!-- g-method -->
1044
+
1045
+
1046
+ <div id="get_prs-method" class="method-detail ">
1047
+ <a name="method-i-get_prs"></a>
1048
+
1049
+
1050
+ <div class="method-heading">
1051
+ <span class="method-name">get_prs</span><span
1052
+ class="method-args">(gphys)</span>
1053
+ <span class="method-click-advice">click to toggle source</span>
1054
+ </div>
1055
+
1056
+
1057
+ <div class="method-description">
1058
+
1059
+ <p>Find and return a pressure coordinate in a <a
1060
+ href="../GPhys.html">GPhys</a> object</p>
1061
+
1062
+ <p>ARGUMENT</p>
1063
+ <ul><li>
1064
+ <p>gphys [GPhys]</p>
1065
+ </li></ul>
1066
+
1067
+ <p>RETURN VALUE</p>
1068
+ <ul><li>
1069
+ <p>pressure in a 1D <a href="../GPhys.html">GPhys</a> object created from the
1070
+ pressure axis in the <a href="../GPhys.html">GPhys</a> object or a
1071
+ UNumeric object if the pressure coordinated has been deleted by subsetting.</p>
1072
+ </li></ul>
1073
+
1074
+
1075
+
1076
+ <div class="method-source-code" id="get_prs-source">
1077
+ <pre>
1078
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 376</span>
1079
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">gphys</span>)
1080
+ <span class="ruby-keyword">begin</span>
1081
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">axis</span>( <span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-keyword">true</span>) ).<span class="ruby-identifier">to_gphys</span>
1082
+ <span class="ruby-keyword">rescue</span>
1083
+ <span class="ruby-identifier">regexp</span> = <span class="ruby-regexp">/([\d\.]+) *(millibar|hPa)/</span>
1084
+ <span class="ruby-identifier">cand</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">lost_axes</span>.<span class="ruby-identifier">grep</span>(<span class="ruby-identifier">regexp</span>)
1085
+ <span class="ruby-keyword">if</span> (<span class="ruby-identifier">str</span>=<span class="ruby-identifier">cand</span>[<span class="ruby-value">0</span>]) <span class="ruby-comment"># substitution, not ==</span>
1086
+ <span class="ruby-identifier">regexp</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>
1087
+ <span class="ruby-identifier">hpa</span> = <span class="ruby-node">$1</span>.<span class="ruby-identifier">to_f</span>
1088
+ <span class="ruby-identifier">prs</span> = <span class="ruby-constant">UNumeric</span>[<span class="ruby-identifier">hpa</span>*<span class="ruby-value">100</span>,<span class="ruby-string">&quot;Pa&quot;</span>]
1089
+ <span class="ruby-keyword">else</span>
1090
+ <span class="ruby-identifier">raise</span> <span class="ruby-string">&quot;No pressure axis was found&quot;</span>
1091
+ <span class="ruby-keyword">end</span>
1092
+ <span class="ruby-keyword">end</span>
1093
+ <span class="ruby-identifier">prs</span>
1094
+ <span class="ruby-keyword">end</span></pre>
1095
+ </div><!-- get_prs-source -->
1096
+
1097
+ </div>
1098
+
1099
+
1100
+
1101
+
1102
+ </div><!-- get_prs-method -->
1103
+
1104
+
1105
+ <div id="ice_thres-method" class="method-detail ">
1106
+ <a name="method-i-ice_thres"></a>
1107
+
1108
+
1109
+ <div class="method-heading">
1110
+ <span class="method-name">ice_thres</span><span
1111
+ class="method-args">()</span>
1112
+ <span class="method-click-advice">click to toggle source</span>
1113
+ </div>
1114
+
1115
+
1116
+ <div class="method-description">
1117
+
1118
+ <p>the threshold temperature for liquid/ice-phase treatment</p>
1119
+
1120
+
1121
+
1122
+ <div class="method-source-code" id="ice_thres-source">
1123
+ <pre>
1124
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 468</span>
1125
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">ice_thres</span>
1126
+ <span class="ruby-identifier">@@ice_thres</span>
1127
+ <span class="ruby-keyword">end</span></pre>
1128
+ </div><!-- ice_thres-source -->
1129
+
1130
+ </div>
1131
+
1132
+
1133
+
1134
+
1135
+ </div><!-- ice_thres-method -->
1136
+
1137
+
1138
+ <div id="ice_thres-3D-method" class="method-detail ">
1139
+ <a name="method-i-ice_thres-3D"></a>
1140
+
1141
+
1142
+ <div class="method-heading">
1143
+ <span class="method-name">ice_thres=</span><span
1144
+ class="method-args">(temp)</span>
1145
+ <span class="method-click-advice">click to toggle source</span>
1146
+ </div>
1147
+
1148
+
1149
+ <div class="method-description">
1150
+
1151
+ <p>set the threshold temperature for liquid/ice-phase treatment (default: O
1152
+ degC)</p>
1153
+
1154
+
1155
+
1156
+ <div class="method-source-code" id="ice_thres-3D-source">
1157
+ <pre>
1158
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 473</span>
1159
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">ice_thres=</span>(<span class="ruby-identifier">temp</span>)
1160
+ <span class="ruby-identifier">@@ice_thres</span>=<span class="ruby-identifier">temp</span>
1161
+ <span class="ruby-keyword">end</span></pre>
1162
+ </div><!-- ice_thres-3D-source -->
1163
+
1164
+ </div>
1165
+
1166
+
1167
+
1168
+
1169
+ </div><!-- ice_thres-3D-method -->
1170
+
1171
+
1172
+ <div id="interpolate_onto_theta-method" class="method-detail ">
1173
+ <a name="method-i-interpolate_onto_theta"></a>
1174
+
1175
+
1176
+ <div class="method-heading">
1177
+ <span class="method-name">interpolate_onto_theta</span><span
1178
+ class="method-args">(gphys, theta, theta_levs)</span>
1179
+ <span class="method-click-advice">click to toggle source</span>
1180
+ </div>
1181
+
1182
+
1183
+ <div class="method-description">
1184
+
1185
+ <p>Interpolate onto the potential temperature coordinate</p>
1186
+
1187
+ <p>ARGUMENTS</p>
1188
+ <ul><li>
1189
+ <p>gphys [GPhys] a gphys object that have a pressure dimension</p>
1190
+ </li><li>
1191
+ <p>theta [GPhys] potential temperature defined on the same grid as gphys</p>
1192
+ </li><li>
1193
+ <p>theta_vals : 1D NArray or Array</p>
1194
+ </li></ul>
1195
+
1196
+
1197
+
1198
+ <div class="method-source-code" id="interpolate_onto_theta-source">
1199
+ <pre>
1200
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 125</span>
1201
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">interpolate_onto_theta</span>(<span class="ruby-identifier">gphys</span>, <span class="ruby-identifier">theta</span>, <span class="ruby-identifier">theta_levs</span>)
1202
+ <span class="ruby-identifier">theta_levs</span> = <span class="ruby-constant">NArray</span>[*<span class="ruby-identifier">theta_levs</span>].<span class="ruby-identifier">to_f</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Array</span> <span class="ruby-operator">===</span> <span class="ruby-identifier">theta_levs</span>
1203
+ <span class="ruby-identifier">th_crd</span> = <span class="ruby-constant">VArray</span>.<span class="ruby-identifier">new</span>( <span class="ruby-identifier">theta_levs</span>,
1204
+ {<span class="ruby-string">&quot;units&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;K&quot;</span>, <span class="ruby-string">&quot;long_name&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-string">&quot;potential temperature&quot;</span>}, <span class="ruby-string">&quot;theta&quot;</span> )
1205
+ <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">set_assoc_coords</span>([<span class="ruby-identifier">theta</span>])
1206
+ <span class="ruby-identifier">pdnm</span> = <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">coord</span>(<span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">gphys</span>)).<span class="ruby-identifier">name</span>
1207
+ <span class="ruby-identifier">gphys</span>.<span class="ruby-identifier">interpolate</span>(<span class="ruby-identifier">pdnm</span>=<span class="ruby-operator">&gt;</span><span class="ruby-identifier">th_crd</span>)
1208
+ <span class="ruby-keyword">end</span></pre>
1209
+ </div><!-- interpolate_onto_theta-source -->
1210
+
1211
+ </div>
1212
+
1213
+
1214
+
1215
+
1216
+ </div><!-- interpolate_onto_theta-method -->
1217
+
1218
+
1219
+ <div id="lat-method" class="method-detail ">
1220
+ <a name="method-i-lat"></a>
1221
+
1222
+
1223
+ <div class="method-heading">
1224
+ <span class="method-name">lat</span><span
1225
+ class="method-args">(temp)</span>
1226
+ <span class="method-click-advice">click to toggle source</span>
1227
+ </div>
1228
+
1229
+
1230
+ <div class="method-description">
1231
+
1232
+ <p>temperature –&gt; latent heat [J.kg-1]</p>
1233
+
1234
+ <p>good for -100&lt;T&lt;50</p>
1235
+
1236
+ <p>ARGUMENTS</p>
1237
+ <ul><li>
1238
+ <p>temp: temperature</p>
1239
+ </li></ul>
1240
+
1241
+ <p>RETURN VALUE</p>
1242
+ <ul><li>
1243
+ <p>lat: latent heat</p>
1244
+ </li></ul>
1245
+
1246
+
1247
+
1248
+ <div class="method-source-code" id="lat-source">
1249
+ <pre>
1250
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 586</span>
1251
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">lat</span>(<span class="ruby-identifier">temp</span>)
1252
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;K&quot;</span>)
1253
+ <span class="ruby-identifier">lat</span> = <span class="ruby-constant">Lat0</span>*(<span class="ruby-constant">T0</span><span class="ruby-operator">/</span><span class="ruby-identifier">tempK</span>)<span class="ruby-operator">**</span>(<span class="ruby-value">0.167</span><span class="ruby-operator">+</span><span class="ruby-identifier">tempK</span>.<span class="ruby-identifier">val</span>*<span class="ruby-value">3.67E-4</span>)
1254
+ <span class="ruby-identifier">lat</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;L&quot;</span>
1255
+ <span class="ruby-identifier">lat</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;Latent heat&quot;</span>
1256
+ <span class="ruby-identifier">lat</span>
1257
+ <span class="ruby-keyword">end</span></pre>
1258
+ </div><!-- lat-source -->
1259
+
1260
+ </div>
1261
+
1262
+
1263
+
1264
+
1265
+ </div><!-- lat-method -->
1266
+
1267
+
1268
+ <div id="pv_on_p-method" class="method-detail ">
1269
+ <a name="method-i-pv_on_p"></a>
1270
+
1271
+
1272
+ <div class="method-heading">
1273
+ <span class="method-name">pv_on_p</span><span
1274
+ class="method-args">(u, v, theta)</span>
1275
+ <span class="method-click-advice">click to toggle source</span>
1276
+ </div>
1277
+
1278
+
1279
+ <div class="method-description">
1280
+
1281
+ <p>Derive Ertel’s potential vorticity on the pressure coordinate</p>
1282
+
1283
+ <p>ARGUMENTS</p>
1284
+ <ul><li>
1285
+ <p>u [GPhys] : zonal wind on pressure coordinate (u, v, and theta must share
1286
+ same coordinates)</p>
1287
+ </li><li>
1288
+ <p>v [GPhys] : meridional wind on pressure coordinate</p>
1289
+ </li><li>
1290
+ <p>theta [GPhys] : potential temperature on pressure coordinate</p>
1291
+ </li></ul>
1292
+
1293
+ <p>RETURN VALUE</p>
1294
+ <ul><li>
1295
+ <p>potential vorticity [GPhys] on the same grid as the inputs</p>
1296
+ </li></ul>
1297
+
1298
+
1299
+
1300
+ <div class="method-source-code" id="pv_on_p-source">
1301
+ <pre>
1302
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 173</span>
1303
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pv_on_p</span>(<span class="ruby-identifier">u</span>, <span class="ruby-identifier">v</span>, <span class="ruby-identifier">theta</span>)
1304
+ <span class="ruby-identifier">up</span>,<span class="ruby-identifier">vp</span>,<span class="ruby-identifier">thp</span> = <span class="ruby-identifier">del_ngp</span>(<span class="ruby-identifier">u</span>,<span class="ruby-identifier">v</span>,<span class="ruby-identifier">theta</span>) <span class="ruby-comment"># -g del/del p</span>
1305
+ <span class="ruby-identifier">pv</span> = <span class="ruby-constant">Planet</span>.<span class="ruby-identifier">absvor_s</span>(<span class="ruby-identifier">u</span>, <span class="ruby-identifier">v</span>) * <span class="ruby-identifier">thp</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">vp</span> * <span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_sx</span>(<span class="ruby-identifier">theta</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">up</span> * <span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_sy</span>(<span class="ruby-identifier">theta</span>)
1306
+ <span class="ruby-identifier">pv</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;potential vorticity&quot;</span>
1307
+ <span class="ruby-identifier">pv</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;PV&quot;</span>
1308
+ <span class="ruby-identifier">pv</span>.<span class="ruby-identifier">units</span> = <span class="ruby-identifier">pv</span>.<span class="ruby-identifier">units</span>.<span class="ruby-identifier">reduce5</span> <span class="ruby-comment"># express in the MKS fundamental units</span>
1309
+ <span class="ruby-identifier">pv</span>
1310
+ <span class="ruby-keyword">end</span></pre>
1311
+ </div><!-- pv_on_p-source -->
1312
+
1313
+ </div>
1314
+
1315
+
1316
+
1317
+
1318
+ </div><!-- pv_on_p-method -->
1319
+
1320
+
1321
+ <div id="pv_on_theta-method" class="method-detail ">
1322
+ <a name="method-i-pv_on_theta"></a>
1323
+
1324
+
1325
+ <div class="method-heading">
1326
+ <span class="method-name">pv_on_theta</span><span
1327
+ class="method-args">(u, v, theta, theta_levs)</span>
1328
+ <span class="method-click-advice">click to toggle source</span>
1329
+ </div>
1330
+
1331
+
1332
+ <div class="method-description">
1333
+
1334
+ <p>Derive Ertel’s potential vorticity on the theta (isentropic) coordinate</p>
1335
+
1336
+ <p>ARGUMENTS</p>
1337
+ <ul><li>
1338
+ <p>u [GPhys] : zonal wind on pressure coordinate (u, v, and theta must share
1339
+ same coordinates)</p>
1340
+ </li><li>
1341
+ <p>v [GPhys] : meridional wind on pressure coordinate</p>
1342
+ </li><li>
1343
+ <p>theta [GPhys] : potential temperature on pressure coordinate</p>
1344
+ </li><li>
1345
+ <p>theta_levs [NArray or Array] : one dimensional array of potential
1346
+ temperature values (Kelvin) on which PV is derived.</p>
1347
+ </li></ul>
1348
+
1349
+ <p>RETURN VALUE</p>
1350
+ <ul><li>
1351
+ <p>potential voticity [GPhys] on a theta coordinate, where levels are set to
1352
+ theta_levs</p>
1353
+ </li></ul>
1354
+
1355
+
1356
+
1357
+ <div class="method-source-code" id="pv_on_theta-source">
1358
+ <pre>
1359
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 148</span>
1360
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">pv_on_theta</span>(<span class="ruby-identifier">u</span>, <span class="ruby-identifier">v</span>, <span class="ruby-identifier">theta</span>, <span class="ruby-identifier">theta_levs</span>)
1361
+ <span class="ruby-identifier">sigi</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Met</span>.<span class="ruby-identifier">sigma_inv</span>(<span class="ruby-identifier">theta</span>)
1362
+ <span class="ruby-identifier">uth</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Met</span>.<span class="ruby-identifier">interpolate_onto_theta</span>(<span class="ruby-identifier">u</span>, <span class="ruby-identifier">theta</span>, <span class="ruby-identifier">theta_levs</span>)
1363
+ <span class="ruby-identifier">vth</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Met</span>.<span class="ruby-identifier">interpolate_onto_theta</span>(<span class="ruby-identifier">v</span>, <span class="ruby-identifier">theta</span>, <span class="ruby-identifier">theta_levs</span>)
1364
+ <span class="ruby-identifier">sigith</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Met</span>.<span class="ruby-identifier">interpolate_onto_theta</span>(<span class="ruby-identifier">sigi</span>, <span class="ruby-identifier">theta</span>, <span class="ruby-identifier">theta_levs</span>)
1365
+ <span class="ruby-identifier">avorth</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">absvor_s</span>(<span class="ruby-identifier">uth</span>,<span class="ruby-identifier">vth</span>)
1366
+ <span class="ruby-identifier">pv</span> = <span class="ruby-identifier">avorth</span>*<span class="ruby-identifier">sigith</span>
1367
+ <span class="ruby-identifier">pv</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;potential vorticity&quot;</span>
1368
+ <span class="ruby-identifier">pv</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;PV&quot;</span>
1369
+ <span class="ruby-identifier">pv</span>
1370
+ <span class="ruby-keyword">end</span></pre>
1371
+ </div><!-- pv_on_theta-source -->
1372
+
1373
+ </div>
1374
+
1375
+
1376
+
1377
+
1378
+ </div><!-- pv_on_theta-method -->
1379
+
1380
+
1381
+ <div id="q2e-method" class="method-detail ">
1382
+ <a name="method-i-q2e"></a>
1383
+
1384
+
1385
+ <div class="method-heading">
1386
+ <span class="method-name">q2e</span><span
1387
+ class="method-args">(q,prs=nil)</span>
1388
+ <span class="method-click-advice">click to toggle source</span>
1389
+ </div>
1390
+
1391
+
1392
+ <div class="method-description">
1393
+
1394
+ <p>specific humidity -&gt; water vapor pressure</p>
1395
+
1396
+ <p>ARGUMENTS</p>
1397
+ <ul><li>
1398
+ <p>q: specific <a href="http://g/g">humidity</a></p>
1399
+ </li><li>
1400
+ <p>prs: <a href="http://hPa">pressure</a></p>
1401
+ </li></ul>
1402
+
1403
+ <p>RETURN VALUE</p>
1404
+ <ul><li>
1405
+ <p>e: water vapor pressure</p>
1406
+ </li></ul>
1407
+
1408
+
1409
+
1410
+ <div class="method-source-code" id="q2e-source">
1411
+ <pre>
1412
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 549</span>
1413
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">q2e</span>(<span class="ruby-identifier">q</span>,<span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
1414
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">q</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">prs</span>
1415
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units2Pa</span>(<span class="ruby-identifier">prs</span>)
1416
+ <span class="ruby-identifier">rratio</span> = <span class="ruby-constant">R</span> <span class="ruby-operator">/</span> <span class="ruby-constant">Rv</span>
1417
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">prs</span>*<span class="ruby-identifier">q</span><span class="ruby-operator">/</span>(<span class="ruby-identifier">rratio</span><span class="ruby-operator">+</span>(<span class="ruby-value">1</span><span class="ruby-operator">-</span><span class="ruby-identifier">rratio</span>)*<span class="ruby-identifier">q</span>) <span class="ruby-comment"># water vapor pertial pressure</span>
1418
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e&quot;</span>
1419
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;water vapor pressure&quot;</span>
1420
+ <span class="ruby-identifier">e</span>
1421
+ <span class="ruby-keyword">end</span></pre>
1422
+ </div><!-- q2e-source -->
1423
+
1424
+ </div>
1425
+
1426
+
1427
+
1428
+
1429
+ </div><!-- q2e-method -->
1430
+
1431
+
1432
+ <div id="q2r-method" class="method-detail ">
1433
+ <a name="method-i-q2r"></a>
1434
+
1435
+
1436
+ <div class="method-heading">
1437
+ <span class="method-name">q2r</span><span
1438
+ class="method-args">(q)</span>
1439
+ <span class="method-click-advice">click to toggle source</span>
1440
+ </div>
1441
+
1442
+
1443
+ <div class="method-description">
1444
+
1445
+ <p>specific humidity -&gt; mixing ratio</p>
1446
+
1447
+ <p>ARGUMENTS</p>
1448
+ <ul><li>
1449
+ <p>q: specific humidty</p>
1450
+ </li></ul>
1451
+
1452
+ <p>RETURN VALUE</p>
1453
+ <ul><li>
1454
+ <p>r: mixing ratio</p>
1455
+ </li></ul>
1456
+
1457
+
1458
+
1459
+ <div class="method-source-code" id="q2r-source">
1460
+ <pre>
1461
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 484</span>
1462
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">q2r</span>(<span class="ruby-identifier">q</span>)
1463
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">/</span>(<span class="ruby-value">1.0</span><span class="ruby-operator">-</span><span class="ruby-identifier">q</span>)
1464
+ <span class="ruby-identifier">r</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;r&quot;</span>
1465
+ <span class="ruby-identifier">r</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;mixing ratio&quot;</span>
1466
+ <span class="ruby-identifier">r</span>
1467
+ <span class="ruby-keyword">end</span></pre>
1468
+ </div><!-- q2r-source -->
1469
+
1470
+ </div>
1471
+
1472
+
1473
+
1474
+
1475
+ </div><!-- q2r-method -->
1476
+
1477
+
1478
+ <div id="r2e-method" class="method-detail ">
1479
+ <a name="method-i-r2e"></a>
1480
+
1481
+
1482
+ <div class="method-heading">
1483
+ <span class="method-name">r2e</span><span
1484
+ class="method-args">(r,prs=nil)</span>
1485
+ <span class="method-click-advice">click to toggle source</span>
1486
+ </div>
1487
+
1488
+
1489
+ <div class="method-description">
1490
+
1491
+ <p>water vapor mixing ratio -&gt; water vapor pressure</p>
1492
+
1493
+ <p>ARGUMENTS</p>
1494
+ <ul><li>
1495
+ <p>r: water vapor mixing ratio</p>
1496
+ </li><li>
1497
+ <p>prs: pressure</p>
1498
+ </li></ul>
1499
+
1500
+ <p>RETURN VALUE</p>
1501
+ <ul><li>
1502
+ <p>e: water vapor pressure</p>
1503
+ </li></ul>
1504
+
1505
+
1506
+
1507
+ <div class="method-source-code" id="r2e-source">
1508
+ <pre>
1509
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 513</span>
1510
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">r2e</span>(<span class="ruby-identifier">r</span>,<span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
1511
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">r</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">prs</span>
1512
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units2Pa</span>(<span class="ruby-identifier">prs</span>)
1513
+ <span class="ruby-identifier">rratio</span> = <span class="ruby-constant">R</span> <span class="ruby-operator">/</span> <span class="ruby-constant">Rv</span>
1514
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">prs</span>*<span class="ruby-identifier">r</span><span class="ruby-operator">/</span>(<span class="ruby-identifier">rratio</span><span class="ruby-operator">+</span><span class="ruby-identifier">r</span>) <span class="ruby-comment"># water vapor pertial pressure</span>
1515
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e&quot;</span>
1516
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;water vapor pressure&quot;</span>
1517
+ <span class="ruby-identifier">e</span>
1518
+ <span class="ruby-keyword">end</span></pre>
1519
+ </div><!-- r2e-source -->
1520
+
1521
+ </div>
1522
+
1523
+
1524
+
1525
+
1526
+ </div><!-- r2e-method -->
1527
+
1528
+
1529
+ <div id="r2q-method" class="method-detail ">
1530
+ <a name="method-i-r2q"></a>
1531
+
1532
+
1533
+ <div class="method-heading">
1534
+ <span class="method-name">r2q</span><span
1535
+ class="method-args">(r)</span>
1536
+ <span class="method-click-advice">click to toggle source</span>
1537
+ </div>
1538
+
1539
+
1540
+ <div class="method-description">
1541
+
1542
+ <p>mixing ratio -&gt; specific humidity</p>
1543
+
1544
+ <p>ARGUMENTS</p>
1545
+ <ul><li>
1546
+ <p>r: mixing ratio</p>
1547
+ </li></ul>
1548
+
1549
+ <p>RETURN VALUE</p>
1550
+ <ul><li>
1551
+ <p>q: specific humidty</p>
1552
+ </li></ul>
1553
+
1554
+
1555
+
1556
+ <div class="method-source-code" id="r2q-source">
1557
+ <pre>
1558
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 498</span>
1559
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">r2q</span>(<span class="ruby-identifier">r</span>)
1560
+ <span class="ruby-identifier">q</span> = <span class="ruby-identifier">r</span><span class="ruby-operator">/</span>(<span class="ruby-value">1.0</span><span class="ruby-operator">+</span><span class="ruby-identifier">r</span>)
1561
+ <span class="ruby-identifier">q</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;q&quot;</span>
1562
+ <span class="ruby-identifier">q</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;specific humidity&quot;</span>
1563
+ <span class="ruby-identifier">q</span>
1564
+ <span class="ruby-keyword">end</span></pre>
1565
+ </div><!-- r2q-source -->
1566
+
1567
+ </div>
1568
+
1569
+
1570
+
1571
+
1572
+ </div><!-- r2q-method -->
1573
+
1574
+
1575
+ <div id="rh2e-method" class="method-detail ">
1576
+ <a name="method-i-rh2e"></a>
1577
+
1578
+
1579
+ <div class="method-heading">
1580
+ <span class="method-name">rh2e</span><span
1581
+ class="method-args">(rh,temp)</span>
1582
+ <span class="method-click-advice">click to toggle source</span>
1583
+ </div>
1584
+
1585
+
1586
+ <div class="method-description">
1587
+
1588
+ <p>relative humidity -&gt; water vapor pressure</p>
1589
+
1590
+ <p>ARGUMENTS</p>
1591
+ <ul><li>
1592
+ <p>rh: relative humidity</p>
1593
+ </li><li>
1594
+ <p>temp: temperature</p>
1595
+ </li></ul>
1596
+
1597
+ <p>RETURN VALUE</p>
1598
+ <ul><li>
1599
+ <p>e: water vapor pressure</p>
1600
+ </li></ul>
1601
+
1602
+
1603
+
1604
+ <div class="method-source-code" id="rh2e-source">
1605
+ <pre>
1606
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 724</span>
1607
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">rh2e</span>(<span class="ruby-identifier">rh</span>,<span class="ruby-identifier">temp</span>)
1608
+ <span class="ruby-identifier">es</span> = <span class="ruby-identifier">e_sat</span>(<span class="ruby-identifier">temp</span>)
1609
+ <span class="ruby-identifier">rh</span> = <span class="ruby-identifier">rh</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;1&quot;</span>)
1610
+ <span class="ruby-identifier">e</span> = <span class="ruby-identifier">es</span> * <span class="ruby-identifier">rh</span>
1611
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;e&quot;</span>
1612
+ <span class="ruby-identifier">e</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;water vapor pressure&quot;</span>
1613
+ <span class="ruby-identifier">e</span>
1614
+ <span class="ruby-keyword">end</span></pre>
1615
+ </div><!-- rh2e-source -->
1616
+
1617
+ </div>
1618
+
1619
+
1620
+
1621
+
1622
+ </div><!-- rh2e-method -->
1623
+
1624
+
1625
+ <div id="set_e_sat_water-method" class="method-detail ">
1626
+ <a name="method-i-set_e_sat_water"></a>
1627
+
1628
+
1629
+ <div class="method-heading">
1630
+ <span class="method-name">set_e_sat_water</span><span
1631
+ class="method-args">(formula=nil)</span>
1632
+ <span class="method-click-advice">click to toggle source</span>
1633
+ </div>
1634
+
1635
+
1636
+ <div class="method-description">
1637
+
1638
+ <p>Selector of the formulat to compute saturation water vapor pressure against
1639
+ water (default: Bolton)</p>
1640
+
1641
+ <p>ARGUMENTS</p>
1642
+ <ul><li>
1643
+ <p>formula: nil(default), “bolton”, “emanuel”</p>
1644
+ </li></ul>
1645
+
1646
+ <p>RETURN VALUE</p>
1647
+ <ul><li>
1648
+ <p>nil</p>
1649
+ </li></ul>
1650
+
1651
+
1652
+
1653
+ <div class="method-source-code" id="set_e_sat_water-source">
1654
+ <pre>
1655
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 671</span>
1656
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">set_e_sat_water</span>(<span class="ruby-identifier">formula</span>=<span class="ruby-keyword">nil</span>)
1657
+ <span class="ruby-keyword">case</span> <span class="ruby-identifier">formula</span>
1658
+ <span class="ruby-keyword">when</span> <span class="ruby-keyword">nil</span>,<span class="ruby-string">&quot;bolton&quot;</span>
1659
+ <span class="ruby-keyword">alias</span> <span class="ruby-value">:e_sat_water</span> <span class="ruby-operator">:</span><span class="ruby-identifier">e_sat_bolton</span>
1660
+ <span class="ruby-keyword">when</span> <span class="ruby-string">&quot;emanuel&quot;</span>
1661
+ <span class="ruby-keyword">alias</span> <span class="ruby-value">:e_sat_water</span> <span class="ruby-operator">:</span><span class="ruby-identifier">e_sat_emanuel_water</span>
1662
+ <span class="ruby-identifier">module_function</span> <span class="ruby-value">:e_sat_water</span>
1663
+ <span class="ruby-keyword">end</span>
1664
+ <span class="ruby-keyword">nil</span>
1665
+ <span class="ruby-keyword">end</span></pre>
1666
+ </div><!-- set_e_sat_water-source -->
1667
+
1668
+ </div>
1669
+
1670
+
1671
+
1672
+
1673
+ </div><!-- set_e_sat_water-method -->
1674
+
1675
+
1676
+ <div id="set_g-method" class="method-detail ">
1677
+ <a name="method-i-set_g"></a>
1678
+
1679
+
1680
+ <div class="method-heading">
1681
+ <span class="method-name">set_g</span><span
1682
+ class="method-args">(g)</span>
1683
+ <span class="method-click-advice">click to toggle source</span>
1684
+ </div>
1685
+
1686
+
1687
+ <div class="method-description">
1688
+
1689
+ <p>Sets gravity acceleration in the module (default: 9.8 ms-1).</p>
1690
+
1691
+ <p>ARGUMENT</p>
1692
+ <ul><li>
1693
+ <p>g [UNumeric]</p>
1694
+ </li></ul>
1695
+
1696
+ <p>EXAMPLE</p>
1697
+
1698
+ <pre>Met::set_g( UNumeric[9.7,&quot;m.s-2&quot;] )</pre>
1699
+
1700
+ <p>RETURN VALUE</p>
1701
+ <ul><li>
1702
+ <p>The argument g</p>
1703
+ </li></ul>
1704
+
1705
+
1706
+
1707
+ <div class="method-source-code" id="set_g-source">
1708
+ <pre>
1709
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 54</span>
1710
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">set_g</span>(<span class="ruby-identifier">g</span>)
1711
+ <span class="ruby-identifier">@@g</span> = <span class="ruby-identifier">g</span> <span class="ruby-comment"># e.g., un[9.8,&quot;m.s-2&quot;]</span>
1712
+ <span class="ruby-keyword">end</span></pre>
1713
+ </div><!-- set_g-source -->
1714
+
1715
+ </div>
1716
+
1717
+
1718
+
1719
+
1720
+ </div><!-- set_g-method -->
1721
+
1722
+
1723
+ <div id="sigma_inv-method" class="method-detail ">
1724
+ <a name="method-i-sigma_inv"></a>
1725
+
1726
+
1727
+ <div class="method-heading">
1728
+ <span class="method-name">sigma_inv</span><span
1729
+ class="method-args">(theta, dim=nil, prs=nil)</span>
1730
+ <span class="method-click-advice">click to toggle source</span>
1731
+ </div>
1732
+
1733
+
1734
+ <div class="method-description">
1735
+
1736
+ <p>Inverse of the “sigma” density in the theta coordinate:</p>
1737
+
1738
+ <p>ARGUMENTS</p>
1739
+ <ul><li>
1740
+ <p>theta [<a href="../GPhys.html">GPhys</a> or VArray] potential temperature</p>
1741
+ </li><li>
1742
+ <p>dim [Integer] : the pressure dimension. If theta is a <a
1743
+ href="../GPhys.html">GPhys</a>, this argument can be omitted, in which case
1744
+ a pressure dimension is searched internally by find_prs_d.</p>
1745
+ </li><li>
1746
+ <p>prs [<a href="../GPhys.html">GPhys</a> or VArray] : the pressure values.
1747
+ Internally searched if omitted.</p>
1748
+ </li></ul>
1749
+
1750
+ <p>RETURN VALUE</p>
1751
+ <ul><li>
1752
+ <p>1 / sigma = -g dtheta/dp [GPhys]</p>
1753
+ </li></ul>
1754
+
1755
+
1756
+
1757
+ <div class="method-source-code" id="sigma_inv-source">
1758
+ <pre>
1759
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 104</span>
1760
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">sigma_inv</span>(<span class="ruby-identifier">theta</span>, <span class="ruby-identifier">dim</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
1761
+ <span class="ruby-identifier">dim</span> = <span class="ruby-identifier">find_prs_d</span>(<span class="ruby-identifier">theta</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">dim</span>
1762
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">theta</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">prs</span>
1763
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units2Pa</span>(<span class="ruby-identifier">prs</span>)
1764
+ <span class="ruby-comment">#dtheta_dp = df_dx(theta, prs, dim)</span>
1765
+ <span class="ruby-identifier">dtheta_dp</span> = <span class="ruby-identifier">df_dx_vialogscale</span>(<span class="ruby-identifier">theta</span>, <span class="ruby-identifier">prs</span>, <span class="ruby-identifier">dim</span>)
1766
+ <span class="ruby-identifier">sig_inv</span> = <span class="ruby-identifier">dtheta_dp</span> * (<span class="ruby-operator">-</span><span class="ruby-identifier">@@g</span>)
1767
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">sig_inv</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:long_name</span>) <span class="ruby-comment"># VArray or GPhys</span>
1768
+ <span class="ruby-identifier">sig_inv</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;sig_inv&quot;</span>
1769
+ <span class="ruby-identifier">sig_inv</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;1/sigma&quot;</span>
1770
+ <span class="ruby-keyword">end</span>
1771
+ <span class="ruby-identifier">sig_inv</span>
1772
+ <span class="ruby-keyword">end</span></pre>
1773
+ </div><!-- sigma_inv-source -->
1774
+
1775
+ </div>
1776
+
1777
+
1778
+
1779
+
1780
+ </div><!-- sigma_inv-method -->
1781
+
1782
+
1783
+ <div id="temp2theta-method" class="method-detail ">
1784
+ <a name="method-i-temp2theta"></a>
1785
+
1786
+
1787
+ <div class="method-heading">
1788
+ <span class="method-name">temp2theta</span><span
1789
+ class="method-args">(temp, prs=nil)</span>
1790
+ <span class="method-click-advice">click to toggle source</span>
1791
+ </div>
1792
+
1793
+
1794
+ <div class="method-description">
1795
+
1796
+ <p>Convert temperature into potential temperature</p>
1797
+
1798
+ <p>ARGUMENTS</p>
1799
+ <ul><li>
1800
+ <p>temp [UNumeric or <a href="../GPhys.html">GPhys</a> or VArray, which
1801
+ supports method “units”] : temperature</p>
1802
+ </li><li>
1803
+ <p>prs [UNumeric or <a href="../GPhys.html">GPhys</a> or VArray, which
1804
+ supports method “units”] : pressure</p>
1805
+ </li></ul>
1806
+
1807
+ <p>RETURN VALUE</p>
1808
+ <ul><li>
1809
+ <p>potential temperature [UNumeric or <a href="../GPhys.html">GPhys</a> or
1810
+ VArray,…] in Kelvin</p>
1811
+ </li></ul>
1812
+
1813
+
1814
+
1815
+ <div class="method-source-code" id="temp2theta-source">
1816
+ <pre>
1817
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 76</span>
1818
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">temp2theta</span>(<span class="ruby-identifier">temp</span>, <span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
1819
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">get_prs</span>(<span class="ruby-identifier">temp</span>) <span class="ruby-keyword">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">prs</span>
1820
+ <span class="ruby-identifier">prs</span> = <span class="ruby-identifier">convert_units2Pa</span>(<span class="ruby-identifier">prs</span>)
1821
+ <span class="ruby-keyword">if</span> ( <span class="ruby-operator">!</span>(<span class="ruby-identifier">temp</span>.<span class="ruby-identifier">units</span> <span class="ruby-operator">===</span> <span class="ruby-constant">Units</span>[<span class="ruby-string">&quot;K&quot;</span>]) )
1822
+ <span class="ruby-identifier">temp</span> = <span class="ruby-identifier">convert_units</span>(<span class="ruby-identifier">temp</span>,<span class="ruby-string">&quot;K&quot;</span>)
1823
+ <span class="ruby-keyword">end</span>
1824
+ <span class="ruby-identifier">theta</span> = <span class="ruby-identifier">temp</span> * (<span class="ruby-identifier">prs</span><span class="ruby-operator">/</span><span class="ruby-constant">P00</span>)<span class="ruby-operator">**</span>(<span class="ruby-operator">-</span><span class="ruby-constant">Kappa</span>)
1825
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">theta</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value">:long_name</span>) <span class="ruby-comment"># VArray or GPhys</span>
1826
+ <span class="ruby-identifier">theta</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;theta&quot;</span>
1827
+ <span class="ruby-identifier">theta</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;potential temperature&quot;</span>
1828
+ <span class="ruby-keyword">end</span>
1829
+ <span class="ruby-identifier">theta</span>
1830
+ <span class="ruby-keyword">end</span></pre>
1831
+ </div><!-- temp2theta-source -->
1832
+
1833
+ </div>
1834
+
1835
+
1836
+
1837
+
1838
+ </div><!-- temp2theta-method -->
1839
+
1840
+
1841
+ <div id="theta_e-method" class="method-detail ">
1842
+ <a name="method-i-theta_e"></a>
1843
+
1844
+
1845
+ <div class="method-heading">
1846
+ <span class="method-name">theta_e</span><span
1847
+ class="method-args">(temp,q,prs=nil)</span>
1848
+ <span class="method-click-advice">click to toggle source</span>
1849
+ </div>
1850
+
1851
+
1852
+ <div class="method-description">
1853
+
1854
+ <p>Derive equivalent potential temperature</p>
1855
+
1856
+ <p>ARGUMENTS</p>
1857
+ <ul><li>
1858
+ <p>temp [GPhys] : temperature (ok whether degC or K)</p>
1859
+ </li><li>
1860
+ <p>q [GPhys] : specific humidity</p>
1861
+ </li><li>
1862
+ <p>prs [<a href="../GPhys.html">GPhys</a> or VArray] : the pressure values.
1863
+ If nil, searched from coordinates (for data on the pressure coordinate)</p>
1864
+ </li></ul>
1865
+
1866
+ <p>RETURN VALUE</p>
1867
+ <ul><li>
1868
+ <p><a href="Met.html#method-i-theta_e">theta_e</a>: equivalent potential
1869
+ temperature</p>
1870
+ </li></ul>
1871
+
1872
+
1873
+
1874
+ <div class="method-source-code" id="theta_e-source">
1875
+ <pre>
1876
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 744</span>
1877
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">theta_e</span>(<span class="ruby-identifier">temp</span>,<span class="ruby-identifier">q</span>,<span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
1878
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;K&quot;</span>)
1879
+ <span class="ruby-identifier">theta</span> = <span class="ruby-identifier">temp2theta</span>(<span class="ruby-identifier">tempK</span>, <span class="ruby-identifier">prs</span>)
1880
+ <span class="ruby-identifier">theta_e</span> = <span class="ruby-identifier">theta</span> * <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>( <span class="ruby-identifier">lat</span>(<span class="ruby-identifier">tempK</span>)*<span class="ruby-identifier">q</span><span class="ruby-operator">/</span>(<span class="ruby-constant">Cp</span>*<span class="ruby-identifier">tempK</span>) )
1881
+ <span class="ruby-identifier">theta_e</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;theta_e&quot;</span>
1882
+ <span class="ruby-identifier">theta_e</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;equivalent potential temperature&quot;</span>
1883
+ <span class="ruby-identifier">theta_e</span>
1884
+ <span class="ruby-keyword">end</span></pre>
1885
+ </div><!-- theta_e-source -->
1886
+
1887
+ </div>
1888
+
1889
+
1890
+
1891
+
1892
+ </div><!-- theta_e-method -->
1893
+
1894
+
1895
+ <div id="theta_es-method" class="method-detail ">
1896
+ <a name="method-i-theta_es"></a>
1897
+
1898
+
1899
+ <div class="method-heading">
1900
+ <span class="method-name">theta_es</span><span
1901
+ class="method-args">(temp,prs=nil)</span>
1902
+ <span class="method-click-advice">click to toggle source</span>
1903
+ </div>
1904
+
1905
+
1906
+ <div class="method-description">
1907
+
1908
+ <p>Derive the saturation equivalent potential temperature</p>
1909
+
1910
+ <p>ARGUMENTS</p>
1911
+ <ul><li>
1912
+ <p>temp [GPhys] : temperature (ok whether degC or K)</p>
1913
+ </li><li>
1914
+ <p>prs [<a href="../GPhys.html">GPhys</a> or VArray] : the pressure values.
1915
+ If nil, searched from coordinates (for data on the pressure coordinate)</p>
1916
+ </li></ul>
1917
+
1918
+ <p>RETURN VALUE</p>
1919
+ <ul><li>
1920
+ <p><a href="Met.html#method-i-theta_es">theta_es</a>: saturation equivalent
1921
+ potential temperature</p>
1922
+ </li></ul>
1923
+
1924
+
1925
+
1926
+ <div class="method-source-code" id="theta_es-source">
1927
+ <pre>
1928
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 763</span>
1929
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">theta_es</span>(<span class="ruby-identifier">temp</span>,<span class="ruby-identifier">prs</span>=<span class="ruby-keyword">nil</span>)
1930
+ <span class="ruby-identifier">tempK</span> = <span class="ruby-identifier">temp</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;K&quot;</span>)
1931
+ <span class="ruby-identifier">theta</span> = <span class="ruby-identifier">temp2theta</span>(<span class="ruby-identifier">tempK</span>, <span class="ruby-identifier">prs</span>)
1932
+ <span class="ruby-identifier">q</span> = <span class="ruby-identifier">e_sat</span>(<span class="ruby-identifier">temp</span>).<span class="ruby-identifier">e2q</span>(<span class="ruby-identifier">prs</span>)
1933
+ <span class="ruby-identifier">theta_e</span> = <span class="ruby-identifier">theta</span> * <span class="ruby-constant">Misc</span><span class="ruby-operator">::</span><span class="ruby-constant">EMath</span>.<span class="ruby-identifier">exp</span>( <span class="ruby-identifier">lat</span>(<span class="ruby-identifier">tempK</span>)*<span class="ruby-identifier">q</span><span class="ruby-operator">/</span>(<span class="ruby-constant">Cp</span>*<span class="ruby-identifier">tempK</span>) )
1934
+ <span class="ruby-identifier">theta_e</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;theta_es&quot;</span>
1935
+ <span class="ruby-identifier">theta_e</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;theta_e sat&quot;</span>
1936
+ <span class="ruby-identifier">theta_e</span>
1937
+ <span class="ruby-keyword">end</span></pre>
1938
+ </div><!-- theta_es-source -->
1939
+
1940
+ </div>
1941
+
1942
+
1943
+
1944
+
1945
+ </div><!-- theta_es-method -->
1946
+
1947
+
1948
+ <div id="z2geostrophic_wind-method" class="method-detail ">
1949
+ <a name="method-i-z2geostrophic_wind"></a>
1950
+
1951
+
1952
+ <div class="method-heading">
1953
+ <span class="method-name">z2geostrophic_wind</span><span
1954
+ class="method-args">(z, f=nil)</span>
1955
+ <span class="method-click-advice">click to toggle source</span>
1956
+ </div>
1957
+
1958
+
1959
+ <div class="method-description">
1960
+
1961
+ <p>Derive geostrophic wind from geopotential hight (spherical but fixed f)</p>
1962
+
1963
+ <p>ARGUMENTS</p>
1964
+ <ul><li>
1965
+ <p>z [GPhys] : geopotential height on the pressure (or log-pressure)
1966
+ coordinate</p>
1967
+ </li><li>
1968
+ <p>f [nil or Numeric of UNumeric] : the constant f value (Coriolis
1969
+ parameter). If nil, the value at the north pole is assumed. If Numeric,
1970
+ units are assumed to be “s-1”.</p>
1971
+ </li></ul>
1972
+
1973
+
1974
+
1975
+ <div class="method-source-code" id="z2geostrophic_wind-source">
1976
+ <pre>
1977
+ <span class="ruby-comment"># File ../../lib/numru/ganalysis/met.rb, line 204</span>
1978
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">z2geostrophic_wind</span>(<span class="ruby-identifier">z</span>, <span class="ruby-identifier">f</span>=<span class="ruby-keyword">nil</span>)
1979
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">nil?</span>
1980
+ <span class="ruby-identifier">f</span> = <span class="ruby-value">2</span> * <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">omega</span>
1981
+ <span class="ruby-keyword">elsif</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Numeric</span>)
1982
+ <span class="ruby-identifier">f</span> = <span class="ruby-constant">UNumeric</span>[<span class="ruby-identifier">f</span>,<span class="ruby-string">&quot;s-1&quot;</span>]
1983
+ <span class="ruby-keyword">end</span>
1984
+ <span class="ruby-identifier">z</span> = <span class="ruby-identifier">z</span>.<span class="ruby-identifier">convert_units</span>(<span class="ruby-string">&quot;m&quot;</span>)
1985
+ <span class="ruby-identifier">gx</span>, <span class="ruby-identifier">gy</span> = <span class="ruby-constant">GAnalysis</span><span class="ruby-operator">::</span><span class="ruby-constant">Planet</span>.<span class="ruby-identifier">grad_s</span>( <span class="ruby-identifier">z</span> * (<span class="ruby-identifier">g</span><span class="ruby-operator">/</span><span class="ruby-identifier">f</span>) )
1986
+ <span class="ruby-identifier">u</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">gy</span>
1987
+ <span class="ruby-identifier">v</span> = <span class="ruby-identifier">gx</span>
1988
+ <span class="ruby-identifier">u</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;u&quot;</span>
1989
+ <span class="ruby-identifier">u</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;geostrophic U&quot;</span>
1990
+ <span class="ruby-identifier">u</span>.<span class="ruby-identifier">put_att</span>(<span class="ruby-string">&quot;assumed_f&quot;</span>,<span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_s</span>)
1991
+ <span class="ruby-identifier">v</span>.<span class="ruby-identifier">name</span> = <span class="ruby-string">&quot;v&quot;</span>
1992
+ <span class="ruby-identifier">v</span>.<span class="ruby-identifier">long_name</span> = <span class="ruby-string">&quot;geostrophic V&quot;</span>
1993
+ <span class="ruby-identifier">v</span>.<span class="ruby-identifier">put_att</span>(<span class="ruby-string">&quot;assumed_f&quot;</span>,<span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_s</span>)
1994
+ [<span class="ruby-identifier">u</span>, <span class="ruby-identifier">v</span>]
1995
+ <span class="ruby-keyword">end</span></pre>
1996
+ </div><!-- z2geostrophic_wind-source -->
1997
+
1998
+ </div>
1999
+
2000
+
2001
+
2002
+
2003
+ </div><!-- z2geostrophic_wind-method -->
2004
+
2005
+
2006
+ </div><!-- public-instance-method-details -->
2007
+
2008
+ </div><!-- 5Buntitled-5D -->
2009
+
2010
+
2011
+ </div><!-- documentation -->
2012
+
2013
+ <div id="validator-badges">
2014
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
2015
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
2016
+ Rdoc Generator</a> 2</small>.</p>
2017
+ </div>
2018
+
2019
+ </body>
2020
+ </html>
2021
+