gphys 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+