source: flex_extract.git/documentation/FORD/V5/Doc_original/sourcefile/rwgrib2.f90.html @ ee06999

ctbtodev
Last change on this file since ee06999 was ee06999, checked in by pesei <petra seibert @…>, 5 years ago

Initial version of Fortran documentation

with FORD v5

  • Property mode set to 100644
File size: 56.4 KB
Line 
1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <meta charset="utf-8">
5    <meta http-equiv="X-UA-Compatible" content="IE=edge">
6    <meta name="viewport" content="width=device-width, initial-scale=1">
7         
8         <meta name="description" content="Calculation of vertical velocity for FLEXPART">
9   
10    <meta name="author" content="Leopold Haimberger" >
11    <link rel="icon" href="../favicon.png">
12
13    <title>rwGRIB2.f90 &ndash; Flex_extract: Calculation of etadot</title>
14
15    <link href="../css/bootstrap.min.css" rel="stylesheet">
16    <link href="../css/pygments.css" rel="stylesheet">
17    <link href="../css/font-awesome.min.css" rel="stylesheet">
18    <link href="../css/local.css" rel="stylesheet">
19   
20
21    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
22    <!--[if lt IE 9]>
23      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
24      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
25    <![endif]-->
26   
27    <script src="../js/jquery-2.1.3.min.js"></script>
28    <script src="../js/svg-pan-zoom.min.js"></script>
29
30   
31    <script src="../tipuesearch/tipuesearch_content.js"></script>
32    <link  href="../tipuesearch/tipuesearch.css" rel="stylesheet">
33    <script src="../tipuesearch/tipuesearch_set.js"></script>
34    <script src="../tipuesearch/tipuesearch.js"></script>
35   
36
37  </head>
38
39  <body>
40
41    <!-- Fixed navbar -->
42    <nav class="navbar navbar-inverse navbar-fixed-top">
43      <div class="container">
44        <div class="navbar-header">
45          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
46            <span class="sr-only">Toggle navigation</span>
47            <span class="icon-bar"></span>
48            <span class="icon-bar"></span>
49            <span class="icon-bar"></span>
50          </button>
51          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
52        </div>
53        <div id="navbar" class="navbar-collapse collapse">
54          <ul class="nav navbar-nav">
55                               
56            <li class="dropdown hidden-xs visible-sm visible-md hidden-lg">
57              <a href="#" class="dropdown-toggle"
58              data-toggle="dropdown" role="button"
59              aria-haspopup="true"
60                 aria-expanded="false">Contents <span class="caret"></span></a>
61              <ul class="dropdown-menu">
62             
63            <li><a href="../lists/files.html">Source Files</a></li>
64                               
65                               
66            <li><a href="../lists/modules.html">Modules</a></li>
67                               
68           
69                               
70            <li><a href="../lists/procedures.html">Procedures</a></li>
71                               
72                                                               
73                               
74            <li><a href="../program/preconvert.html">Program</a></li>
75           
76            </ul>
77            </li>
78
79<li class="visible-xs hidden-sm visible-lg"><a href="../lists/files.html">Source Files</a></li>
80
81
82<li class="visible-xs hidden-sm visible-lg"><a href="../lists/modules.html">Modules</a></li>
83
84
85
86<li class="visible-xs hidden-sm visible-lg"><a href="../lists/procedures.html">Procedures</a></li>
87
88                             
89
90<li class="visible-xs hidden-sm visible-lg"><a href="../program/preconvert.html">Program</a></li>
91
92          </ul>
93       
94        <form action="../search.html" class="navbar-form navbar-right" role="search">
95        <div class="form-group">
96          <input type="text" class="form-control" placeholder="Search" name="q" id="tipue_search_input" autocomplete="off" required>
97        </div>
98<!--
99        <button type="submit" class="btn btn-default">Submit</button>
100-->
101        </form>
102       
103        </div><!--/.nav-collapse -->
104      </div>
105    </nav>
106
107    <div class="container">
108   
109 
110  <div class="row">
111    <h1>rwGRIB2.f90
112    <small>Source File</small>
113   
114    </h1>
115   
116<div class="row">
117  <div class="col-lg-12">
118<div class="well well-sm">
119  <ul class="list-inline" style="margin-bottom:0px;display:inline">
120     
121     
122     
123     
124   
125   
126     <li><i class="fa fa-list-ol"></i>
127       <a data-toggle="tooltip"
128          data-placement="bottom" data-html="true"
129          title="14.8% of total for source files.">197 statements</a>
130     </li> 
131     
132     
133    <li><i class="fa fa-code"></i><a href="../src/rwGRIB2.f90"> Source File</a></li>
134     
135  </ul>
136  <ol class="breadcrumb in-well text-right">
137 
138     <li class="active">rwGRIB2.f90</li>
139  </ol>
140</div>
141</div>
142</div>
143<script>
144  $(function () {
145  $('[data-toggle="tooltip"]').tooltip()
146  })
147</script>
148
149  </div>
150  <div class="row">
151    <div class="col-md-3 hidden-xs hidden-sm visible-md visible-lg">
152   
153<div id="sidebar">
154 
155
156
157
158
159
160
161<div class="panel panel-primary">
162  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#mods-0">Modules</a></h3></div>
163  <div id="mods-0" class="panel-collapse collapse">
164    <div class="list-group">
165     
166      <a class="list-group-item" href="../module/rwgrib2.html">RWGRIB2</a>
167     
168    </div>
169  </div>
170</div>
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186<div class="panel panel-primary">
187  <div class="panel-heading text-left"><h3 class="panel-title">Source Code</h3></div>
188  <div class="list-group">
189    <a class="list-group-item" href="../sourcefile/rwgrib2.f90.html#src">rwGRIB2.f90</a>
190  </div>
191</div>
192
193
194  <hr>
195 
196
197<div class="panel panel-default">
198  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#allfiles-0">All Source Files</a></h3></div>
199  <div id="allfiles-0" class="panel-collapse collapse">
200    <div class="list-group">
201     
202      <a class="list-group-item" href="../sourcefile/grphreal.f.html">grphreal.f</a>
203     
204      <a class="list-group-item" href="../sourcefile/phgrreal.f.html">phgrreal.f</a>
205     
206      <a class="list-group-item" href="../sourcefile/preconvert.f90.html">preconvert.f90</a>
207     
208      <a class="list-group-item" href="../sourcefile/rwgrib2.f90.html">rwGRIB2.f90</a>
209     
210    </div>
211  </div>
212</div>
213
214
215</div> 
216
217    </div>
218    <div class="col-md-9" id='text'>
219   
220   
221     
222      <h3>Files Dependent On This One</h3>
223     
224                <div class="depgraph"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
225<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
226 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
227<!-- Generated by graphviz version 2.38.0 (20140413.2041)
228 -->
229<!-- Title: sourcefile~~rwgrib2.f90~~AfferentGraph Pages: 1 -->
230<svg id="sourcefilerwgrib2f90AfferentGraph" width="199pt" height="32pt"
231 viewBox="0.00 0.00 199.00 32.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
232<g id="sourcefile~~rwgrib2.f90~~AfferentGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 28)">
233<title>sourcefile~~rwgrib2.f90~~AfferentGraph</title>
234<polygon fill="white" stroke="none" points="-4,4 -4,-28 195,-28 195,4 -4,4"/>
235<!-- sourcefile~rwgrib2.f90 -->
236<g id="sourcefile~~rwgrib2.f90~~AfferentGraph_node1" class="node"><title>sourcefile~rwgrib2.f90</title>
237<polygon fill="none" stroke="black" points="73,-24 0,-24 0,-0 73,-0 73,-24"/>
238<text text-anchor="middle" x="36.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50">rwGRIB2.f90</text>
239</g>
240<!-- sourcefile~preconvert.f90 -->
241<g id="sourcefile~~rwgrib2.f90~~AfferentGraph_node2" class="node"><title>sourcefile~preconvert.f90</title>
242<g id="a_sourcefile~~rwgrib2.f90~~AfferentGraph_node2"><a xlink:href="../sourcefile/preconvert.f90.html" xlink:title="preconvert.f90">
243<polygon fill="#f0ad4e" stroke="#f0ad4e" points="191,-24 109,-24 109,-0 191,-0 191,-24"/>
244<text text-anchor="middle" x="150" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">preconvert.f90</text>
245</a>
246</g>
247</g>
248<!-- sourcefile~rwgrib2.f90&#45;&gt;sourcefile~preconvert.f90 -->
249<g id="sourcefile~~rwgrib2.f90~~AfferentGraph_edge1" class="edge"><title>sourcefile~rwgrib2.f90&#45;&gt;sourcefile~preconvert.f90</title>
250<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M73.0859,-12C81.2397,-12 90.0586,-12 98.7011,-12"/>
251<polygon fill="#000000" stroke="#000000" points="98.7152,-15.5001 108.715,-12 98.7151,-8.5001 98.7152,-15.5001"/>
252</g>
253</g>
254</svg>
255</div>
256                <div><a type="button" class="graph-help" data-toggle="modal" href="#graph-help-text">Help</a></div>
257                <div class="modal fade" id="graph-help-text" tabindex="-1" role="dialog">
258                  <div class="modal-dialog modal-lg" role="document">
259                    <div class="modal-content">
260                      <div class="modal-header">
261                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
262                        <h4 class="modal-title" id="-graph-help-label">Graph Key</h4>
263                      </div>
264                      <div class="modal-body">
265                       
266    <p>Nodes of different colours represent the following: </p>
267    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
268<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
269 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
270<!-- Generated by graphviz version 2.38.0 (20140413.2041)
271 -->
272<!-- Title: Graph Key Pages: 1 -->
273<svg width="190pt" height="32pt"
274 viewBox="0.00 0.00 190.00 32.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
275<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 28)">
276<title>Graph Key</title>
277<polygon fill="white" stroke="none" points="-4,4 -4,-28 186,-28 186,4 -4,4"/>
278<!-- Source File -->
279<g id="node1" class="node"><title>Source File</title>
280<polygon fill="#f0ad4e" stroke="#f0ad4e" points="67,-24 0,-24 0,-0 67,-0 67,-24"/>
281<text text-anchor="middle" x="33.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">Source File</text>
282</g>
283<!-- This Page&#39;s Entity -->
284<g id="node2" class="node"><title>This Page&#39;s Entity</title>
285<polygon fill="none" stroke="black" points="182,-24 85,-24 85,-0 182,-0 182,-24"/>
286<text text-anchor="middle" x="133.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50">This Page&#39;s Entity</text>
287</g>
288</g>
289</svg>
290
291   
292    <p>Solid arrows point from a file to a file which depends upon it. A file
293    is dependent upon another if the latter must be compiled before the former
294    can be.
295    </p>
296   
297                      </div>
298                    </div>
299                  </div>
300                </div>
301               
302     
303      <br>
304
305    <section class="visible-xs visible-sm hidden-md">
306     
307
308
309
310
311
312
313<div class="panel panel-primary">
314  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#mods-1">Modules</a></h3></div>
315  <div id="mods-1" class="panel-collapse collapse">
316    <div class="list-group">
317     
318      <a class="list-group-item" href="../module/rwgrib2.html">RWGRIB2</a>
319     
320    </div>
321  </div>
322</div>
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338<div class="panel panel-primary">
339  <div class="panel-heading text-left"><h3 class="panel-title">Source Code</h3></div>
340  <div class="list-group">
341    <a class="list-group-item" href="../sourcefile/rwgrib2.f90.html#src">rwGRIB2.f90</a>
342  </div>
343</div>
344
345
346    </section>
347    <br class="visible-xs visible-sm hidden-md">
348
349    <section>
350      <h2><span class="anchor" id="src"></span>Source Code</h2>
351    <div class="hl"><pre><span></span><a name="ln-1"></a>      <span class="k">MODULE </span><span class="n">RWGRIB2</span>
352<a name="ln-2"></a>
353<a name="ln-3"></a>      <span class="k">CONTAINS</span>
354<a name="ln-4"></a>
355<a name="ln-5"></a><span class="k">      SUBROUTINE </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,</span><span class="n">MPAR</span><span class="p">)</span>
356<a name="ln-6"></a>
357<a name="ln-7"></a>      <span class="k">USE </span><span class="n">GRIB_API</span>
358<a name="ln-8"></a>
359<a name="ln-9"></a>      <span class="k">IMPLICIT NONE</span>
360<a name="ln-10"></a>
361<a name="ln-11"></a><span class="k">        </span><span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">ifile</span>
362<a name="ln-12"></a>        <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">iret</span>
363<a name="ln-13"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">n</span><span class="p">,</span><span class="n">mk</span><span class="p">,</span><span class="n">parid</span><span class="p">,</span><span class="n">nm</span>
364<a name="ln-14"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">i</span><span class="p">,</span><span class="n">k</span>
365<a name="ln-15"></a>   <span class="kt">integer</span><span class="p">,</span><span class="k">dimension</span><span class="p">(:),</span><span class="k">allocatable</span>   <span class="kd">::</span>  <span class="n">igrib</span>
366<a name="ln-16"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfPointsAlongAParallel</span>
367<a name="ln-17"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfPointsAlongAMeridian</span>
368<a name="ln-18"></a>   <span class="kt">real</span><span class="p">,</span> <span class="k">dimension</span><span class="p">(:),</span> <span class="k">allocatable</span>    <span class="kd">::</span>  <span class="n">values</span>
369<a name="ln-19"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfValues</span>
370<a name="ln-20"></a>   <span class="kt">real</span><span class="p">,</span><span class="k">dimension</span><span class="p">(</span><span class="n">maxl</span><span class="p">,</span><span class="n">maxb</span><span class="p">,</span><span class="n">mlevel</span><span class="p">)</span>   <span class="kd">::</span>  <span class="n">feld</span> 
371<a name="ln-21"></a>   <span class="kt">integer</span><span class="kd">::</span> <span class="n">maxl</span><span class="p">,</span><span class="n">maxb</span><span class="p">,</span><span class="n">mlevel</span><span class="p">,</span><span class="n">mstride</span><span class="p">,</span><span class="n">mpar</span><span class="p">(:),</span><span class="n">irest</span><span class="p">,</span><span class="n">div</span><span class="p">,</span><span class="n">level</span>
372<a name="ln-22"></a>   <span class="kt">integer</span> <span class="kd">::</span> <span class="n">l</span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">mpar</span><span class="p">))</span>
373<a name="ln-23"></a>   <span class="kt">character</span><span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="kd">::</span> <span class="n">filename</span>   
374<a name="ln-24"></a>   
375<a name="ln-25"></a>   <span class="n">feld</span><span class="o">=</span><span class="mf">0.</span>                         
376<a name="ln-26"></a>
377<a name="ln-27"></a>   <span class="k">call </span><span class="n">grib_open_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span> <span class="nb">TRIM</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">),</span><span class="s1">&#39;r&#39;</span><span class="p">)</span>
378<a name="ln-28"></a> 
379<a name="ln-29"></a>   <span class="c">! count the messages in the file</span>
380<a name="ln-30"></a>   <span class="k">call </span><span class="n">grib_count_in_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
381<a name="ln-31"></a>   <span class="k">allocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
382<a name="ln-32"></a>   <span class="n">igrib</span><span class="o">=-</span><span class="mi">1</span>
383<a name="ln-33"></a> 
384<a name="ln-34"></a>   <span class="c">! Load the messages from the file.</span>
385<a name="ln-35"></a>   <span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span>
386<a name="ln-36"></a>      <span class="k">call </span><span class="n">grib_new_from_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">iret</span><span class="p">)</span>
387<a name="ln-37"></a>   <span class="k">END DO</span>
388<a name="ln-38"></a> 
389<a name="ln-39"></a>   <span class="c">! we can close the file</span>
390<a name="ln-40"></a>   <span class="k">call </span><span class="n">grib_close_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">)</span>
391<a name="ln-41"></a> 
392<a name="ln-42"></a>      <span class="n">nm</span><span class="o">=</span><span class="n">size</span><span class="p">(</span><span class="n">mpar</span><span class="p">)</span>
393<a name="ln-43"></a>      <span class="n">div</span><span class="o">=</span><span class="n">mlevel</span><span class="o">/</span><span class="n">nm</span>
394<a name="ln-44"></a>      <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
395<a name="ln-45"></a>     
396<a name="ln-46"></a>   <span class="c">! Loop on all the messages in memory</span>
397<a name="ln-47"></a>  <span class="n">iloop</span><span class="p">:</span>  <span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span>
398<a name="ln-48"></a><span class="c">!      write(*,*) &#39;processing message number &#39;,i</span>
399<a name="ln-49"></a>      <span class="c">!     get as a integer</span>
400<a name="ln-50"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;numberOfPointsAlongAParallel&#39;</span><span class="p">,</span> <span class="p">&amp;</span>
401<a name="ln-51"></a>           <span class="n">numberOfPointsAlongAParallel</span><span class="p">)</span>
402<a name="ln-52"></a> 
403<a name="ln-53"></a>      <span class="c">!     get as a integer</span>
404<a name="ln-54"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;numberOfPointsAlongAMeridian&#39;</span><span class="p">,</span> <span class="p">&amp;</span>
405<a name="ln-55"></a>           <span class="n">numberOfPointsAlongAMeridian</span><span class="p">)</span>
406<a name="ln-56"></a>
407<a name="ln-57"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;numberOfVerticalCoordinateValues&#39;</span><span class="p">,</span><span class="n">mk</span><span class="p">)</span>
408<a name="ln-58"></a>
409<a name="ln-59"></a>      <span class="k">call </span><span class="n">grib_get_size</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;values&#39;</span><span class="p">,</span><span class="n">numberOfValues</span><span class="p">)</span>
410<a name="ln-60"></a><span class="c">!      write(*,*) &#39;numberOfValues=&#39;,numberOfValues</span>
411<a name="ln-61"></a> 
412<a name="ln-62"></a>      <span class="k">allocate</span><span class="p">(</span><span class="n">values</span><span class="p">(</span><span class="n">numberOfValues</span><span class="p">),</span> <span class="nb">stat</span><span class="o">=</span><span class="n">iret</span><span class="p">)</span>
413<a name="ln-63"></a>      <span class="c">!     get data values</span>
414<a name="ln-64"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;values&#39;</span><span class="p">,</span><span class="n">values</span><span class="p">)</span>
415<a name="ln-65"></a>
416<a name="ln-66"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;paramId&#39;</span><span class="p">,</span><span class="n">parid</span><span class="p">)</span>
417<a name="ln-67"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;level&#39;</span><span class="p">,</span><span class="n">level</span><span class="p">)</span>
418<a name="ln-68"></a>
419<a name="ln-69"></a> <span class="n">kloop</span><span class="p">:</span>  <span class="k">do </span><span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">nm</span>
420<a name="ln-70"></a>        <span class="k">if</span><span class="p">(</span><span class="n">parid</span> <span class="p">.</span><span class="n">eq</span><span class="p">.</span> <span class="n">mpar</span><span class="p">(</span><span class="n">k</span><span class="p">))</span> <span class="k">then</span>
421<a name="ln-71"></a><span class="c">!         l(k)=l(k)+1</span>
422<a name="ln-72"></a>         <span class="n">feld</span><span class="p">(:,:,(</span><span class="n">k</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">div</span><span class="o">+</span><span class="n">level</span><span class="p">)</span><span class="o">=</span><span class="nb">reshape</span><span class="p">(</span><span class="n">values</span><span class="p">,(</span><span class="o">/</span><span class="n">maxl</span><span class="p">,</span><span class="n">maxb</span><span class="o">/</span><span class="p">))</span>
423<a name="ln-73"></a><span class="c">!         print*,(k-1)*div+l(k),parid</span>
424<a name="ln-74"></a>         <span class="k">exit </span><span class="n">kloop</span>
425<a name="ln-75"></a>        <span class="n">endif</span>
426<a name="ln-76"></a>      <span class="n">enddo</span> <span class="n">kloop</span>
427<a name="ln-77"></a>      <span class="k">if</span><span class="p">(</span><span class="n">k</span> <span class="p">.</span><span class="n">gt</span><span class="p">.</span> <span class="n">nm</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">parid</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="n">mpar</span><span class="p">(</span><span class="n">nm</span><span class="p">))</span> <span class="k">then</span>
428<a name="ln-78"></a><span class="k">        write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span> <span class="n">k</span><span class="p">,</span><span class="n">nm</span><span class="p">,</span><span class="n">parid</span><span class="p">,</span><span class="n">mpar</span><span class="p">(</span><span class="n">nm</span><span class="p">)</span>
429<a name="ln-79"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span> <span class="s1">&#39;ERROR readlatlon: parameter &#39;</span><span class="p">,</span><span class="n">parid</span><span class="p">,</span><span class="s1">&#39;is not&#39;</span><span class="p">,</span><span class="n">mpar</span>
430<a name="ln-80"></a>        <span class="k">stop</span>
431<a name="ln-81"></a><span class="k">      </span><span class="n">endif</span>
432<a name="ln-82"></a>
433<a name="ln-83"></a><span class="c">!      print*,i</span>
434<a name="ln-84"></a>   <span class="k">END DO </span><span class="n">iloop</span>
435<a name="ln-85"></a>   <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span> <span class="s1">&#39;readlatlon: &#39;</span><span class="p">,</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="s1">&#39; records read&#39;</span>
436<a name="ln-86"></a> 
437<a name="ln-87"></a>   <span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span>
438<a name="ln-88"></a>     <span class="k">call </span><span class="n">grib_release</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
439<a name="ln-89"></a>   <span class="k">END DO</span>
440<a name="ln-90"></a><span class="k"> </span>
441<a name="ln-91"></a><span class="k">   deallocate</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
442<a name="ln-92"></a>   <span class="k">deallocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">)</span>
443<a name="ln-93"></a>
444<a name="ln-94"></a>      <span class="k">END SUBROUTINE </span><span class="n">READLATLON</span>
445<a name="ln-95"></a>
446<a name="ln-96"></a>      <span class="k">SUBROUTINE </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">iunit</span><span class="p">,</span><span class="n">igrib</span><span class="p">,</span><span class="n">ogrib</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,&amp;</span>
447<a name="ln-97"></a>      <span class="n">MLEVELIST</span><span class="p">,</span><span class="n">MSTRIDE</span><span class="p">,</span><span class="n">MPAR</span><span class="p">)</span>
448<a name="ln-98"></a>
449<a name="ln-99"></a>      <span class="k">USE </span><span class="n">GRIB_API</span>
450<a name="ln-100"></a>
451<a name="ln-101"></a>      <span class="k">IMPLICIT NONE</span>
452<a name="ln-102"></a>
453<a name="ln-103"></a><span class="k">      </span><span class="kt">INTEGER </span><span class="n">IFIELD</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">I</span><span class="p">,</span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">L</span><span class="p">,</span><span class="n">MSTRIDE</span><span class="p">,</span><span class="n">IERR</span><span class="p">,</span><span class="n">JOUT</span>
454<a name="ln-104"></a>      <span class="kt">INTEGER </span><span class="n">MPAR</span><span class="p">(</span><span class="n">MSTRIDE</span><span class="p">),</span><span class="n">MAXL</span><span class="p">,</span><span class="n">MAXB</span><span class="p">,</span><span class="n">LEVMIN</span><span class="p">,</span><span class="n">LEVMAX</span>
455<a name="ln-105"></a>      <span class="kt">INTEGER </span><span class="n">IUNIT</span><span class="p">,</span><span class="n">igrib</span><span class="p">,</span><span class="n">ogrib</span>
456<a name="ln-106"></a>      <span class="kt">REAL </span><span class="n">ZSEC4</span><span class="p">(</span><span class="n">MAXL</span><span class="o">*</span><span class="n">MAXB</span><span class="p">)</span>
457<a name="ln-107"></a>      <span class="kt">REAL    </span><span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="p">,</span><span class="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
458<a name="ln-108"></a>      <span class="kt">CHARACTER</span><span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="n">MLEVELIST</span>
459<a name="ln-109"></a>      <span class="kt">INTEGER </span><span class="n">ILEVEL</span><span class="p">(</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">MLINDEX</span><span class="p">(</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span><span class="n">LLEN</span>
460<a name="ln-110"></a>
461<a name="ln-111"></a>    <span class="c">! parse MLEVELIST</span>
462<a name="ln-112"></a>   
463<a name="ln-113"></a>      <span class="n">LLEN</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="nb">trim</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">))</span>
464<a name="ln-114"></a>      <span class="k">if</span><span class="p">(</span><span class="nb">index</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">,</span><span class="s1">&#39;to&#39;</span><span class="p">)</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="mi">0</span> <span class="p">.</span><span class="nb">or</span><span class="p">.</span> <span class="nb">index</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">,</span><span class="s1">&#39;TO&#39;</span><span class="p">)</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="k">THEN</span>
465<a name="ln-115"></a><span class="k">        </span><span class="n">i</span><span class="o">=</span><span class="nb">index</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">,</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
466<a name="ln-116"></a>        <span class="k">read</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="o">*</span><span class="p">)</span> <span class="n">LEVMIN</span>
467<a name="ln-117"></a>        <span class="n">i</span><span class="o">=</span><span class="nb">index</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">,</span><span class="s1">&#39;/&#39;</span><span class="p">,.</span><span class="n">true</span><span class="p">.)</span>
468<a name="ln-118"></a>        <span class="k">read</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">LLEN</span><span class="p">),</span><span class="o">*</span><span class="p">)</span> <span class="n">LEVMAX</span>
469<a name="ln-119"></a>        <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
470<a name="ln-120"></a>        <span class="k">do </span><span class="n">i</span><span class="o">=</span><span class="n">LEVMIN</span><span class="p">,</span><span class="n">LEVMAX</span>
471<a name="ln-121"></a>          <span class="n">l</span><span class="o">=</span><span class="n">l</span><span class="o">+</span><span class="mi">1</span>
472<a name="ln-122"></a>          <span class="n">ILEVEL</span><span class="p">(</span><span class="n">l</span><span class="p">)</span><span class="o">=</span><span class="n">i</span>
473<a name="ln-123"></a>        <span class="n">enddo</span>
474<a name="ln-124"></a>      <span class="k">else</span>
475<a name="ln-125"></a><span class="k">        </span><span class="n">l</span><span class="o">=</span><span class="mi">1</span>
476<a name="ln-126"></a>   <span class="n">MLINDEX</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
477<a name="ln-127"></a>        <span class="k">do </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">LLEN</span>
478<a name="ln-128"></a>          <span class="k">if</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">(</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="p">)</span> <span class="p">.</span><span class="n">eq</span><span class="p">.</span> <span class="s1">&#39;/&#39;</span><span class="p">)</span> <span class="k">THEN</span>
479<a name="ln-129"></a><span class="k">       </span><span class="n">l</span><span class="o">=</span><span class="n">l</span><span class="o">+</span><span class="mi">1</span>
480<a name="ln-130"></a>       <span class="n">MLINDEX</span><span class="p">(</span><span class="n">l</span><span class="p">)</span><span class="o">=</span><span class="n">i</span>
481<a name="ln-131"></a>     <span class="n">endif</span>
482<a name="ln-132"></a>   <span class="n">enddo</span>
483<a name="ln-133"></a>   <span class="n">MLINDEX</span><span class="p">(</span><span class="n">l</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">LLEN</span><span class="o">+</span><span class="mi">1</span>
484<a name="ln-134"></a>   <span class="k">do </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">l</span>
485<a name="ln-135"></a>     <span class="k">read</span><span class="p">(</span><span class="n">MLEVELIST</span><span class="p">(</span><span class="n">MLINDEX</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">MLINDEX</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="o">*</span><span class="p">)</span> <span class="n">ILEVEL</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
486<a name="ln-136"></a>   <span class="n">enddo</span>
487<a name="ln-137"></a>      <span class="n">endif</span> 
488<a name="ln-138"></a>
489<a name="ln-139"></a>      <span class="k">DO </span><span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">l</span>
490<a name="ln-140"></a>        <span class="k">call </span><span class="n">grib_set</span><span class="p">(</span><span class="n">igrib</span><span class="p">,</span><span class="s2">&quot;level&quot;</span><span class="p">,</span><span class="n">ILEVEL</span><span class="p">(</span><span class="n">k</span><span class="p">))</span>
491<a name="ln-141"></a>        <span class="k">DO </span><span class="n">j</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MSTRIDE</span>
492<a name="ln-142"></a>         <span class="k">call </span><span class="n">grib_set</span><span class="p">(</span><span class="n">igrib</span><span class="p">,</span><span class="s2">&quot;paramId&quot;</span><span class="p">,</span><span class="n">MPAR</span><span class="p">(</span><span class="n">j</span><span class="p">))</span>
493<a name="ln-143"></a><span class="c">!         if(MPAR(j) .eq. 87) then</span>
494<a name="ln-144"></a><span class="c">!           call grib_set(igrib,&quot;shortName&quot;,&quot;etadot&quot;)</span>
495<a name="ln-145"></a><span class="c">!           call grib_set(igrib,&quot;units&quot;,&quot;Pa,s**-1&quot;)</span>
496<a name="ln-146"></a><span class="c">!         endif</span>
497<a name="ln-147"></a><span class="c">!         if(MPAR(j) .eq. 77) then</span>
498<a name="ln-148"></a><span class="c">!           call grib_set(igrib,&quot;shortName&quot;,&quot;etadot&quot;)</span>
499<a name="ln-149"></a><span class="c">!           call grib_set(igrib,&quot;units&quot;,&quot;s**-1&quot;)</span>
500<a name="ln-150"></a><span class="c">!         endif</span>
501<a name="ln-151"></a>    <span class="k">if</span><span class="p">(</span><span class="n">l</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="n">mlevel</span><span class="p">)</span> <span class="k">then</span>
502<a name="ln-152"></a><span class="k">           </span><span class="n">zsec4</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">maxl</span><span class="o">*</span><span class="n">maxb</span><span class="p">)</span><span class="o">=</span><span class="nb">RESHAPE</span><span class="p">(</span><span class="n">FELD</span><span class="p">(:,:,</span><span class="n">ILEVEL</span><span class="p">(</span><span class="n">k</span><span class="p">)),(</span><span class="o">/</span><span class="n">maxl</span><span class="o">*</span><span class="n">maxb</span><span class="o">/</span><span class="p">))</span>
503<a name="ln-153"></a>    <span class="k">else</span>
504<a name="ln-154"></a><span class="k">      </span><span class="n">zsec4</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">maxl</span><span class="o">*</span><span class="n">maxb</span><span class="p">)</span><span class="o">=</span><span class="nb">RESHAPE</span><span class="p">(</span><span class="n">FELD</span><span class="p">(:,:,</span><span class="n">k</span><span class="p">),(</span><span class="o">/</span><span class="n">maxl</span><span class="o">*</span><span class="n">maxb</span><span class="o">/</span><span class="p">))</span>
505<a name="ln-155"></a>    <span class="n">endif</span>
506<a name="ln-156"></a>         <span class="k">call </span><span class="n">grib_set</span><span class="p">(</span><span class="n">igrib</span><span class="p">,</span><span class="s2">&quot;values&quot;</span><span class="p">,</span><span class="n">zsec4</span><span class="p">)</span>
507<a name="ln-157"></a>
508<a name="ln-158"></a>         <span class="k">call </span><span class="n">grib_write</span><span class="p">(</span><span class="n">igrib</span><span class="p">,</span><span class="n">iunit</span><span class="p">)</span>
509<a name="ln-159"></a>
510<a name="ln-160"></a>        <span class="n">ENDDO</span>
511<a name="ln-161"></a>      <span class="n">ENDDO</span>
512<a name="ln-162"></a>
513<a name="ln-163"></a>
514<a name="ln-164"></a>
515<a name="ln-165"></a>      <span class="k">END SUBROUTINE </span><span class="n">WRITELATLON</span>
516<a name="ln-166"></a>
517<a name="ln-167"></a>      <span class="k">SUBROUTINE </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,&amp;</span>
518<a name="ln-168"></a>        <span class="n">MAXLEV</span><span class="p">,</span><span class="n">MPAR</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">B</span><span class="p">)</span>
519<a name="ln-169"></a>
520<a name="ln-170"></a>      <span class="k">USE </span><span class="n">GRIB_API</span>
521<a name="ln-171"></a>
522<a name="ln-172"></a>      <span class="k">IMPLICIT NONE</span>
523<a name="ln-173"></a>
524<a name="ln-174"></a>
525<a name="ln-175"></a><span class="k">        </span><span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">ifile</span>
526<a name="ln-176"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">iret</span>
527<a name="ln-177"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">n</span><span class="p">,</span><span class="n">mk</span><span class="p">,</span><span class="n">div</span><span class="p">,</span><span class="n">nm</span><span class="p">,</span><span class="n">k</span>
528<a name="ln-178"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">,</span><span class="n">parid</span>
529<a name="ln-179"></a>   <span class="kt">integer</span><span class="p">,</span><span class="k">dimension</span><span class="p">(:),</span><span class="k">allocatable</span>   <span class="kd">::</span>  <span class="n">igrib</span>
530<a name="ln-180"></a>   <span class="kt">real</span><span class="p">,</span> <span class="k">dimension</span><span class="p">(:),</span> <span class="k">allocatable</span>    <span class="kd">::</span>  <span class="n">values</span>
531<a name="ln-181"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfValues</span><span class="p">,</span><span class="n">maxlev</span>
532<a name="ln-182"></a>   <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">A</span><span class="p">(</span><span class="n">MAXLEV</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span><span class="n">B</span><span class="p">(</span><span class="n">MAXLEV</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span><span class="n">pv</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXLEV</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
533<a name="ln-183"></a>   <span class="kt">REAL</span><span class="kd">::</span> <span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">:(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
534<a name="ln-184"></a><span class="kt">integer</span><span class="kd">::</span> <span class="n">maxl</span><span class="p">,</span><span class="n">maxb</span><span class="p">,</span><span class="n">mlevel</span><span class="p">,</span><span class="n">mstride</span><span class="p">,</span><span class="n">mpar</span><span class="p">(:),</span><span class="n">mnauf</span><span class="p">,</span><span class="n">ioffset</span><span class="p">,</span><span class="n">ipar</span><span class="p">,</span><span class="n">ilev</span><span class="p">,</span><span class="n">l</span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">mpar</span><span class="p">))</span>
535<a name="ln-185"></a><span class="kt">character</span><span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="kd">::</span> <span class="n">filename</span>                             
536<a name="ln-186"></a> 
537<a name="ln-187"></a>   <span class="k">call </span><span class="n">grib_open_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span> <span class="nb">TRIM</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">),</span><span class="s1">&#39;r&#39;</span><span class="p">)</span>
538<a name="ln-188"></a> 
539<a name="ln-189"></a>   <span class="c">! count the messages in the file</span>
540<a name="ln-190"></a>   <span class="k">call </span><span class="n">grib_count_in_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span><span class="n">n</span><span class="p">)</span>
541<a name="ln-191"></a>   <span class="k">allocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
542<a name="ln-192"></a>   <span class="n">igrib</span><span class="o">=-</span><span class="mi">1</span>
543<a name="ln-193"></a> 
544<a name="ln-194"></a>   <span class="c">! Load the messages from the file.</span>
545<a name="ln-195"></a>   <span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span>
546<a name="ln-196"></a>      <span class="k">call </span><span class="n">grib_new_from_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">,</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">iret</span><span class="p">)</span>
547<a name="ln-197"></a>   <span class="k">END DO</span>
548<a name="ln-198"></a> 
549<a name="ln-199"></a>   <span class="c">! we can close the file</span>
550<a name="ln-200"></a>   <span class="k">call </span><span class="n">grib_close_file</span><span class="p">(</span><span class="n">ifile</span><span class="p">)</span>
551<a name="ln-201"></a> 
552<a name="ln-202"></a>    <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
553<a name="ln-203"></a>   <span class="c">! Loop on all the messages in memory</span>
554<a name="ln-204"></a>   <span class="n">iloop</span><span class="p">:</span> <span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span>
555<a name="ln-205"></a>   <span class="c">! write(*,*) &#39;processing message number &#39;,i</span>
556<a name="ln-206"></a>      <span class="c">!     get as a integer</span>
557<a name="ln-207"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;pentagonalResolutionParameterJ&#39;</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
558<a name="ln-208"></a>
559<a name="ln-209"></a>      <span class="k">call </span><span class="n">grib_get_size</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;values&#39;</span><span class="p">,</span><span class="n">numberOfValues</span><span class="p">)</span>
560<a name="ln-210"></a>   <span class="c">!   write(*,*) &#39;numberOfValues=&#39;,numberOfValues</span>
561<a name="ln-211"></a> 
562<a name="ln-212"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;numberOfVerticalCoordinateValues&#39;</span><span class="p">,</span><span class="n">mk</span><span class="p">)</span>
563<a name="ln-213"></a>
564<a name="ln-214"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;level&#39;</span><span class="p">,</span><span class="n">ilev</span><span class="p">)</span>
565<a name="ln-215"></a>
566<a name="ln-216"></a>     
567<a name="ln-217"></a>
568<a name="ln-218"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;pv&#39;</span><span class="p">,</span><span class="n">pv</span><span class="p">)</span>
569<a name="ln-219"></a>
570<a name="ln-220"></a>      <span class="k">allocate</span><span class="p">(</span><span class="n">values</span><span class="p">(</span><span class="n">numberOfValues</span><span class="p">),</span> <span class="nb">stat</span><span class="o">=</span><span class="n">iret</span><span class="p">)</span>
571<a name="ln-221"></a>      <span class="c">!     get data values</span>
572<a name="ln-222"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;values&#39;</span><span class="p">,</span><span class="n">values</span><span class="p">)</span>
573<a name="ln-223"></a>
574<a name="ln-224"></a><span class="c">!      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1)</span>
575<a name="ln-225"></a><span class="c">!           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2))</span>
576<a name="ln-226"></a>
577<a name="ln-227"></a>      <span class="k">call </span><span class="n">grib_get</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">),</span><span class="s1">&#39;paramId&#39;</span><span class="p">,</span><span class="n">parid</span><span class="p">)</span>
578<a name="ln-228"></a>    <span class="n">nm</span><span class="o">=</span><span class="n">size</span><span class="p">(</span><span class="n">mpar</span><span class="p">)</span>
579<a name="ln-229"></a>    <span class="n">div</span><span class="o">=</span><span class="n">mlevel</span><span class="o">/</span><span class="n">nm</span>
580<a name="ln-230"></a>    <span class="n">kloop</span><span class="p">:</span>  <span class="k">do </span><span class="n">k</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">nm</span>
581<a name="ln-231"></a>        <span class="k">if</span><span class="p">(</span><span class="n">parid</span> <span class="p">.</span><span class="n">eq</span><span class="p">.</span> <span class="n">mpar</span><span class="p">(</span><span class="n">k</span><span class="p">))</span> <span class="k">then</span>
582<a name="ln-232"></a><span class="k">         </span><span class="n">l</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">=</span><span class="n">l</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span>
583<a name="ln-233"></a>         <span class="n">cxmn</span><span class="p">(:,(</span><span class="n">k</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">div</span><span class="o">+</span><span class="n">l</span><span class="p">(</span><span class="n">k</span><span class="p">))</span><span class="o">=</span><span class="n">values</span><span class="p">(</span><span class="mi">1</span><span class="p">:(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">2</span><span class="p">))</span>
584<a name="ln-234"></a><span class="c">!         print*,(k-1)*div+l(k),parid</span>
585<a name="ln-235"></a>         <span class="k">exit </span><span class="n">kloop</span>
586<a name="ln-236"></a>        <span class="n">endif</span>
587<a name="ln-237"></a>       
588<a name="ln-238"></a>      <span class="n">enddo</span> <span class="n">kloop</span>
589<a name="ln-239"></a>      <span class="k">if</span><span class="p">(</span><span class="n">k</span> <span class="p">.</span><span class="n">gt</span><span class="p">.</span> <span class="n">nm</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">parid</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="n">mpar</span><span class="p">(</span><span class="n">nm</span><span class="p">))</span> <span class="k">then</span>
590<a name="ln-240"></a><span class="k">        write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span> <span class="n">k</span><span class="p">,</span><span class="n">nm</span><span class="p">,</span><span class="n">parid</span><span class="p">,</span><span class="n">mpar</span><span class="p">(</span><span class="n">nm</span><span class="p">)</span>
591<a name="ln-241"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span> <span class="s1">&#39;ERROR readspectral: parameter &#39;</span><span class="p">,</span><span class="n">parid</span><span class="p">,</span><span class="s1">&#39;is not&#39;</span><span class="p">,</span><span class="n">mpar</span>
592<a name="ln-242"></a>        <span class="k">stop</span>
593<a name="ln-243"></a><span class="k">      </span><span class="n">endif</span>
594<a name="ln-244"></a>
595<a name="ln-245"></a><span class="c">!      print*,i</span>
596<a name="ln-246"></a>
597<a name="ln-247"></a>   <span class="k">END DO </span><span class="n">iloop</span>
598<a name="ln-248"></a>
599<a name="ln-249"></a>   <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span> <span class="s1">&#39;readspectral: &#39;</span><span class="p">,</span><span class="n">i</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="s1">&#39; records read&#39;</span>
600<a name="ln-250"></a> 
601<a name="ln-251"></a>   <span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">n</span>
602<a name="ln-252"></a>     <span class="k">call </span><span class="n">grib_release</span><span class="p">(</span><span class="n">igrib</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
603<a name="ln-253"></a>   <span class="k">END DO</span>
604<a name="ln-254"></a><span class="k"> </span>
605<a name="ln-255"></a><span class="k">   deallocate</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
606<a name="ln-256"></a>   <span class="k">deallocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">)</span>
607<a name="ln-257"></a>
608<a name="ln-258"></a>
609<a name="ln-259"></a>
610<a name="ln-260"></a>        <span class="n">A</span><span class="o">=</span><span class="n">pv</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="mi">1</span><span class="o">+</span><span class="n">MAXLEV</span><span class="p">)</span>
611<a name="ln-261"></a>        <span class="n">B</span><span class="o">=</span><span class="n">pv</span><span class="p">(</span><span class="mi">2</span><span class="o">+</span><span class="n">MAXLEV</span><span class="p">:</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXLEV</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
612<a name="ln-262"></a>
613<a name="ln-263"></a>      <span class="k">END SUBROUTINE </span><span class="n">READSPECTRAL</span>
614<a name="ln-264"></a>
615<a name="ln-265"></a>      <span class="k">END MODULE </span><span class="n">RWGRIB2</span>
616</pre></div>
617
618    </section>
619    </div>
620  </div>
621
622  <section class="visible-xs visible-sm hidden-md">
623    <hr>
624   
625
626<div class="panel panel-default">
627  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#allfiles-1">All Source Files</a></h3></div>
628  <div id="allfiles-1" class="panel-collapse collapse">
629    <div class="list-group">
630     
631      <a class="list-group-item" href="../sourcefile/grphreal.f.html">grphreal.f</a>
632     
633      <a class="list-group-item" href="../sourcefile/phgrreal.f.html">phgrreal.f</a>
634     
635      <a class="list-group-item" href="../sourcefile/preconvert.f90.html">preconvert.f90</a>
636     
637      <a class="list-group-item" href="../sourcefile/rwgrib2.f90.html">rwGRIB2.f90</a>
638     
639    </div>
640  </div>
641</div>
642
643
644  </section>
645 
646    <hr>   
647    </div> <!-- /container -->
648    <footer>
649      <div class="container">
650      <div class="row">
651        <div class="col-xs-6 col-md-4"><p>&copy; 2019 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="../80x15.png" /></a></p></div>
652        <div class="col-xs-6 col-md-4 col-md-push-4">
653          <p class="text-right">
654            Documentation generated by
655            <a href="https://github.com/cmacmackin/ford">FORD</a>
656           
657          </p>
658        </div>
659        <div class="col-xs-12 col-md-4 col-md-pull-4"><p class="text-center"> Flex_extract: Calculation of etadot was developed by Leopold Haimberger</p></div>
660      </div>
661      <br>
662      </div> <!-- /container -->   
663    </footer>
664
665    <!-- Bootstrap core JavaScript
666    ================================================== -->
667    <!-- Placed at the end of the document so the pages load faster -->
668<!--
669    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
670-->
671    <script src="../js/bootstrap.min.js"></script>
672    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
673    <script src="../js/ie10-viewport-bug-workaround.js"></script>
674
675    <!-- MathJax JavaScript
676    ================================================== -->
677    <!-- Placed at the end of the document so the pages load faster -->
678    <script type="text/x-mathjax-config">
679      MathJax.Hub.Config({
680        TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } },
681        jax: ['input/TeX','input/MathML','output/HTML-CSS'],
682        extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js'],
683        'HTML-CSS': { 
684           styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: '#000000 ! important'} }
685        }
686      });
687    </script>
688    <!-- <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> -->
689  </body>
690</html>
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG