diff --git a/Documentation/html/Documentation/Api/Fortran/css/local.css b/Documentation/html/Documentation/Api/Fortran/css/local.css
index 44e3dec2a0085374d61777aa4ae8688a9aa6be15..8ab50bcaafa5878b1fc5e2440885d87aa94a70e9 100644
--- a/Documentation/html/Documentation/Api/Fortran/css/local.css
+++ b/Documentation/html/Documentation/Api/Fortran/css/local.css
@@ -101,9 +101,9 @@ body {
     }
 
     .hl pre a {
- display: inline-block;
- height: 4.5em;
- margin: -4.5em 0 0;
+	display: inline-block;
+	height: 4.5em;
+	margin: -4.5em 0 0;
     }
     .codesum h3 {
       margin-top: 2px;
diff --git a/Documentation/html/Documentation/Api/Fortran/index.html b/Documentation/html/Documentation/Api/Fortran/index.html
index 90381cf241f53c14a240274c57b91686fb3b3a2a..a91a0fae1e736d95e18af49bcb2d80aab20f29ea 100644
--- a/Documentation/html/Documentation/Api/Fortran/index.html
+++ b/Documentation/html/Documentation/Api/Fortran/index.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="./favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="./index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="./index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -108,7 +108,7 @@
     
       <!-- Main component for a primary marketing message or call to action -->
       <div class="jumbotron">
-        <p>Calculation of vertical velocity for FLEXPART</p>
+        <p>flex_extract calculates the vertical velocity for FLEXPART</p>
         	 
 	<p> Find us on&hellip;</p>
         <p>
@@ -116,11 +116,11 @@
 			 
 			 
 			 
-          <a class="btn btn-lg btn-primary" href="https://flexpart.eu/" role="button">The Web</a>
+          <a class="btn btn-lg btn-primary" href="https://www.flexpart.eu/wiki/FpInputMetEcmwf" role="button">The Web</a>
 			 
 	         
 			 
-          <a class="btn btn-lg btn-danger" style="float:right" href="https://www.flexpart.eu/downloads" role="button">Download the Source</a>
+          <a class="btn btn-lg btn-danger" style="float:right" href="https://www.flexpart.eu/wiki/FpInputMetEcmwf" role="button">Download the Source</a>
 			 
         </p>
       </div>
@@ -130,10 +130,7 @@
         <div class="col-md-8">
 		  
           <h1>Flex_extract: Calculation of etadot</h1>
-          <p></p><div class="alert alert-info" role="alert"><h4>Note</h4><p>for this version:
-All code transferred to free form.
-Some code cosmetics, should not have any effects
-Rename some source files</p></div>
+          
         </div>
 		  
         <div class="col-md-4">
@@ -141,8 +138,6 @@ Rename some source files</p></div>
           <h2>Developer Info</h2>
           <h4>Leopold Haimberger<sup>1</sup></h4>
           
-     		 <img src="./fplogo.jpg" alt="Developer picture" class="img-thumbnail">
-    		 
           <p><sup>1</sup>Univ. of Vienna, Dept. of Meteorology &amp; Geophysics</p>
 			   
        </div>
@@ -301,8 +296,8 @@ Rename some source files</p></div>
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/lists/files.html b/Documentation/html/Documentation/Api/Fortran/lists/files.html
index 4370eef314145b77c4443099e0e18f83e419fb82..1ec5e440df87dee18a4260f7496db1d4735e8dbf 100644
--- a/Documentation/html/Documentation/Api/Fortran/lists/files.html
+++ b/Documentation/html/Documentation/Api/Fortran/lists/files.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -46,7 +46,7 @@ All Files &ndash; Flex_extract: Calculation of etadot
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -134,88 +134,88 @@ All Files &ndash; Flex_extract: Calculation of etadot
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: file~~graph~~FileGraph Pages: 1 -->
-<svg id="filegraphFileGraph" width="305pt" height="154pt"
- viewBox="0.00 0.00 305.00 154.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="file~~graph~~FileGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 150)">
+<svg id="filegraphFileGraph" width="305pt" height="129pt"
+ viewBox="0.00 0.00 305.00 129.04" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="file~~graph~~FileGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 125.037)">
 <title>file~~graph~~FileGraph</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-150 301,-150 301,4 -4,4"/>
-<!-- sourcefile~grphreal.f90 -->
-<g id="file~~graph~~FileGraph_node1" class="node"><title>sourcefile~grphreal.f90</title>
-<g id="a_file~~graph~~FileGraph_node1"><a xlink:href=".././sourcefile/grphreal.f90.html" xlink:title="grphreal.f90">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="191,-104 121,-104 121,-80 191,-80 191,-104"/>
-<text text-anchor="middle" x="156" y="-89.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grphreal.f90</text>
+<polygon fill="white" stroke="none" points="-4,4 -4,-125.037 301,-125.037 301,4 -4,4"/>
+<!-- sourcefile~rwgrib2.f90 -->
+<g id="file~~graph~~FileGraph_node1" class="node"><title>sourcefile~rwgrib2.f90</title>
+<g id="a_file~~graph~~FileGraph_node1"><a xlink:href=".././sourcefile/rwgrib2.f90.html" xlink:title="rwgrib2.f90">
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="189,-121.037 123,-121.037 123,-97.0372 189,-97.0372 189,-121.037"/>
+<text text-anchor="middle" x="156" y="-106.637" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">rwgrib2.f90</text>
 </a>
 </g>
 </g>
 <!-- sourcefile~calc_etadot.f90 -->
-<g id="file~~graph~~FileGraph_node2" class="node"><title>sourcefile~calc_etadot.f90</title>
-<g id="a_file~~graph~~FileGraph_node2"><a xlink:href=".././sourcefile/calc_etadot.f90.html" xlink:title="calc_etadot.f90">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="85,-84 0,-84 0,-60 85,-60 85,-84"/>
-<text text-anchor="middle" x="42.5" y="-69.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">calc_etadot.f90</text>
+<g id="file~~graph~~FileGraph_node6" class="node"><title>sourcefile~calc_etadot.f90</title>
+<g id="a_file~~graph~~FileGraph_node6"><a xlink:href=".././sourcefile/calc_etadot.f90.html" xlink:title="calc_etadot.f90">
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="85,-58.0372 0,-58.0372 0,-34.0372 85,-34.0372 85,-58.0372"/>
+<text text-anchor="middle" x="42.5" y="-43.6372" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">calc_etadot.f90</text>
 </a>
 </g>
 </g>
-<!-- sourcefile~grphreal.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
-<g id="file~~graph~~FileGraph_edge4" class="edge"><title>sourcefile~grphreal.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
-<path fill="none" stroke="#000000" d="M120.94,-85.8907C112.839,-84.4375 104.014,-82.8544 95.3164,-81.2944"/>
-<polygon fill="#000000" stroke="#000000" points="95.6776,-77.8034 85.2167,-79.4828 94.4416,-84.6935 95.6776,-77.8034"/>
+<!-- sourcefile~rwgrib2.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
+<g id="file~~graph~~FileGraph_edge3" class="edge"><title>sourcefile~rwgrib2.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
+<path fill="none" stroke="#000000" d="M133.502,-96.8901C116.534,-87.303 92.6554,-73.8111 73.7574,-63.1332"/>
+<polygon fill="#000000" stroke="#000000" points="75.3605,-60.019 64.9323,-58.1469 71.9169,-66.1135 75.3605,-60.019"/>
 </g>
-<!-- sourcefile~rwgrib2.f90 -->
-<g id="file~~graph~~FileGraph_node3" class="node"><title>sourcefile~rwgrib2.f90</title>
-<g id="a_file~~graph~~FileGraph_node3"><a xlink:href=".././sourcefile/rwgrib2.f90.html" xlink:title="rwgrib2.f90">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="189,-146 123,-146 123,-122 189,-122 189,-146"/>
-<text text-anchor="middle" x="156" y="-131.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">rwgrib2.f90</text>
+<!-- sourcefile~ftrafo.f90 -->
+<g id="file~~graph~~FileGraph_node2" class="node"><title>sourcefile~ftrafo.f90</title>
+<g id="a_file~~graph~~FileGraph_node2"><a xlink:href=".././sourcefile/ftrafo.f90.html" xlink:title="ftrafo.f90">
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="183.5,-79.0372 128.5,-79.0372 128.5,-55.0372 183.5,-55.0372 183.5,-79.0372"/>
+<text text-anchor="middle" x="156" y="-64.6372" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">ftrafo.f90</text>
 </a>
 </g>
 </g>
-<!-- sourcefile~rwgrib2.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
-<g id="file~~graph~~FileGraph_edge2" class="edge"><title>sourcefile~rwgrib2.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
-<path fill="none" stroke="#000000" d="M133.237,-121.899C116.353,-112.51 92.7443,-99.3825 73.9799,-88.9485"/>
-<polygon fill="#000000" stroke="#000000" points="75.6488,-85.8718 65.2081,-84.0709 72.2469,-91.9896 75.6488,-85.8718"/>
+<!-- sourcefile~ftrafo.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
+<g id="file~~graph~~FileGraph_edge4" class="edge"><title>sourcefile~ftrafo.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
+<path fill="none" stroke="#000000" d="M128.293,-62.0071C118.327,-60.1301 106.643,-57.9296 95.1891,-55.7723"/>
+<polygon fill="#000000" stroke="#000000" points="95.7066,-52.3083 85.2316,-53.8969 94.411,-59.1874 95.7066,-52.3083"/>
 </g>
 <!-- sourcefile~posnam.f90 -->
-<g id="file~~graph~~FileGraph_node4" class="node"><title>sourcefile~posnam.f90</title>
-<g id="a_file~~graph~~FileGraph_node4"><a xlink:href=".././sourcefile/posnam.f90.html" xlink:title="posnam.f90">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="296.5,-106 227.5,-106 227.5,-82 296.5,-82 296.5,-106"/>
-<text text-anchor="middle" x="262" y="-91.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">posnam.f90</text>
+<g id="file~~graph~~FileGraph_node3" class="node"><title>sourcefile~posnam.f90</title>
+<g id="a_file~~graph~~FileGraph_node3"><a xlink:href=".././sourcefile/posnam.f90.html" xlink:title="posnam.f90">
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="296.5,-79.0372 227.5,-79.0372 227.5,-55.0372 296.5,-55.0372 296.5,-79.0372"/>
+<text text-anchor="middle" x="262" y="-64.6372" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">posnam.f90</text>
 </a>
 </g>
 </g>
-<!-- sourcefile~phgrreal.f90 -->
-<g id="file~~graph~~FileGraph_node5" class="node"><title>sourcefile~phgrreal.f90</title>
-<g id="a_file~~graph~~FileGraph_node5"><a xlink:href=".././sourcefile/phgrreal.f90.html" xlink:title="phgrreal.f90">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="297,-64 227,-64 227,-40 297,-40 297,-64"/>
-<text text-anchor="middle" x="262" y="-49.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">phgrreal.f90</text>
+<!-- sourcefile~grphreal.f90 -->
+<g id="file~~graph~~FileGraph_node4" class="node"><title>sourcefile~grphreal.f90</title>
+<g id="a_file~~graph~~FileGraph_node4"><a xlink:href=".././sourcefile/grphreal.f90.html" xlink:title="grphreal.f90">
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="191,-37.0372 121,-37.0372 121,-13.0372 191,-13.0372 191,-37.0372"/>
+<text text-anchor="middle" x="156" y="-22.6372" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grphreal.f90</text>
 </a>
 </g>
 </g>
-<!-- sourcefile~phgrreal.f90&#45;&gt;sourcefile~grphreal.f90 -->
-<g id="file~~graph~~FileGraph_edge1" class="edge"><title>sourcefile~phgrreal.f90&#45;&gt;sourcefile~grphreal.f90</title>
-<path fill="none" stroke="#000000" d="M229.797,-64.0013C219.81,-67.8422 208.599,-72.1543 198.022,-76.2222"/>
-<polygon fill="#000000" stroke="#000000" points="196.618,-73.0123 188.541,-79.8689 199.131,-79.5458 196.618,-73.0123"/>
-</g>
-<!-- sourcefile~phgrreal.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
-<g id="file~~graph~~FileGraph_edge5" class="edge"><title>sourcefile~phgrreal.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
-<path fill="none" stroke="#000000" d="M226.536,-55.1691C191.2,-58.4184 135.82,-63.5108 95.2244,-67.2437"/>
-<polygon fill="#000000" stroke="#000000" points="94.8806,-63.7605 85.2431,-68.1616 95.5216,-70.7311 94.8806,-63.7605"/>
+<!-- sourcefile~grphreal.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
+<g id="file~~graph~~FileGraph_edge5" class="edge"><title>sourcefile~grphreal.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
+<path fill="none" stroke="#000000" d="M120.94,-31.452C112.839,-32.9778 104.014,-34.64 95.3164,-36.278"/>
+<polygon fill="#000000" stroke="#000000" points="94.3961,-32.8897 85.2167,-38.1802 95.6918,-39.7688 94.3961,-32.8897"/>
 </g>
-<!-- sourcefile~ftrafo.f90 -->
-<g id="file~~graph~~FileGraph_node6" class="node"><title>sourcefile~ftrafo.f90</title>
-<g id="a_file~~graph~~FileGraph_node6"><a xlink:href=".././sourcefile/ftrafo.f90.html" xlink:title="ftrafo.f90">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="183.5,-24 128.5,-24 128.5,-0 183.5,-0 183.5,-24"/>
-<text text-anchor="middle" x="156" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">ftrafo.f90</text>
+<!-- sourcefile~phgrreal.f90 -->
+<g id="file~~graph~~FileGraph_node5" class="node"><title>sourcefile~phgrreal.f90</title>
+<g id="a_file~~graph~~FileGraph_node5"><a xlink:href=".././sourcefile/phgrreal.f90.html" xlink:title="phgrreal.f90">
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="297,-37.0372 227,-37.0372 227,-13.0372 297,-13.0372 297,-37.0372"/>
+<text text-anchor="middle" x="262" y="-22.6372" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">phgrreal.f90</text>
 </a>
 </g>
 </g>
 <!-- sourcefile~phgrreal.f90&#45;&gt;sourcefile~ftrafo.f90 -->
-<g id="file~~graph~~FileGraph_edge6" class="edge"><title>sourcefile~phgrreal.f90&#45;&gt;sourcefile~ftrafo.f90</title>
-<path fill="none" stroke="#000000" d="M229.797,-39.9987C218.298,-35.576 205.174,-30.5286 193.266,-25.9486"/>
-<polygon fill="#000000" stroke="#000000" points="194.202,-22.5584 183.612,-22.2353 191.689,-29.0918 194.202,-22.5584"/>
+<g id="file~~graph~~FileGraph_edge1" class="edge"><title>sourcefile~phgrreal.f90&#45;&gt;sourcefile~ftrafo.f90</title>
+<path fill="none" stroke="#000000" d="M231.198,-37.0727C219.357,-41.8544 205.626,-47.3995 193.22,-52.41"/>
+<polygon fill="#000000" stroke="#000000" points="191.577,-49.2988 183.615,-56.2888 194.198,-55.7895 191.577,-49.2988"/>
 </g>
-<!-- sourcefile~ftrafo.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
-<g id="file~~graph~~FileGraph_edge3" class="edge"><title>sourcefile~ftrafo.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
-<path fill="none" stroke="#000000" d="M132.436,-24.1419C115.887,-33.0471 93.2048,-45.253 74.8889,-55.1091"/>
-<polygon fill="#000000" stroke="#000000" points="73.1776,-52.0554 66.0301,-59.8762 76.4947,-58.2196 73.1776,-52.0554"/>
+<!-- sourcefile~phgrreal.f90&#45;&gt;sourcefile~grphreal.f90 -->
+<g id="file~~graph~~FileGraph_edge2" class="edge"><title>sourcefile~phgrreal.f90&#45;&gt;sourcefile~grphreal.f90</title>
+<path fill="none" stroke="#000000" d="M226.947,-25.0372C218.776,-25.0372 209.932,-25.0372 201.37,-25.0372"/>
+<polygon fill="#000000" stroke="#000000" points="201.13,-21.5373 191.13,-25.0372 201.13,-28.5373 201.13,-21.5373"/>
+</g>
+<!-- sourcefile~phgrreal.f90&#45;&gt;sourcefile~calc_etadot.f90 -->
+<g id="file~~graph~~FileGraph_edge6" class="edge"><title>sourcefile~phgrreal.f90&#45;&gt;sourcefile~calc_etadot.f90</title>
+<path fill="none" stroke="#000000" d="M228.668,-12.9979C200.058,-4.04077 157.331,5.17451 121,-4.03716 102.205,-8.80271 83.0297,-19.1393 68.4552,-28.365"/>
+<polygon fill="#000000" stroke="#000000" points="66.4562,-25.4905 60.0195,-33.906 70.2992,-31.3412 66.4562,-25.4905"/>
 </g>
 </g>
 </svg>
@@ -259,8 +259,8 @@ All Files &ndash; Flex_extract: Calculation of etadot
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/lists/modules.html b/Documentation/html/Documentation/Api/Fortran/lists/modules.html
index fc2de68eade645128203e368c35cb187014e6745..edac8c32f02614b34a951c0200ca285ff692f9a6 100644
--- a/Documentation/html/Documentation/Api/Fortran/lists/modules.html
+++ b/Documentation/html/Documentation/Api/Fortran/lists/modules.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -46,7 +46,7 @@ All Modules &ndash; Flex_extract: Calculation of etadot
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -117,19 +117,21 @@ All Modules &ndash; Flex_extract: Calculation of etadot
 			 <tbody>
              
 			 
-			   <tr class="active"><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td><a href='../sourcefile/ftrafo.f90.html'>ftrafo.f90</a></td><td><p>Implementation of the spectral transformation using reduced the Gaussian grid</p></td></tr>
+			   <tr class="active"><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td><a href='../sourcefile/ftrafo.f90.html'>ftrafo.f90</a></td><td><p>Implementation of the spectral transformation using the reduced Gaussian grid</p></td></tr>
                
                <!--active-->
 			 
-			   <tr class=""><td><a href='../module/grtoph.html'>GRTOPH</a></td><td><a href='../sourcefile/grphreal.f90.html'>grphreal.f90</a></td><td></td></tr>
+			   <tr class=""><td><a href='../module/grtoph.html'>GRTOPH</a></td><td><a href='../sourcefile/grphreal.f90.html'>grphreal.f90</a></td><td><p>Module for transformation from phase space into physical space</p></td></tr>
                
                <!---->
 			 
-			   <tr class="active"><td><a href='../module/phtogr.html'>PHTOGR</a></td><td><a href='../sourcefile/phgrreal.f90.html'>phgrreal.f90</a></td><td></td></tr>
+			   <tr class="active"><td><a href='../module/phtogr.html'>PHTOGR</a></td><td><a href='../sourcefile/phgrreal.f90.html'>phgrreal.f90</a></td><td><p>Module for transformation of a field variable from the phase space
+ into the physical space onto the reduced Gaussian grid</p></td></tr>
                
                <!--active-->
 			 
-			   <tr class=""><td><a href='../module/rwgrib2.html'>RWGRIB2</a></td><td><a href='../sourcefile/rwgrib2.f90.html'>rwgrib2.f90</a></td><td></td></tr>
+			   <tr class=""><td><a href='../module/rwgrib2.html'>RWGRIB2</a></td><td><a href='../sourcefile/rwgrib2.f90.html'>rwgrib2.f90</a></td><td><p>Read or write a field variable on a lat/lon grid from/to GRIB file, or 
+ read a field in spectral representation from GRIB file</p></td></tr>
                
                <!---->
 			 
@@ -145,70 +147,70 @@ All Modules &ndash; Flex_extract: Calculation of etadot
 <g id="module~~graph~~ModuleGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 360)">
 <title>module~~graph~~ModuleGraph</title>
 <polygon fill="white" stroke="none" points="-4,4 -4,-360 301,-360 301,4 -4,4"/>
-<!-- module~rwgrib2 -->
-<g id="module~~graph~~ModuleGraph_node1" class="node"><title>module~rwgrib2</title>
-<g id="a_module~~graph~~ModuleGraph_node1"><a xlink:href=".././module/rwgrib2.html" xlink:title="RWGRIB2">
-<polygon fill="#337ab7" stroke="#337ab7" points="160,-356 99,-356 99,-332 160,-332 160,-356"/>
-<text text-anchor="middle" x="129.5" y="-341.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">RWGRIB2</text>
+<!-- module~ftrafo -->
+<g id="module~~graph~~ModuleGraph_node1" class="node"><title>module~ftrafo</title>
+<g id="a_module~~graph~~ModuleGraph_node1"><a xlink:href=".././module/ftrafo.html" xlink:title="FTRAFO">
+<polygon fill="#337ab7" stroke="#337ab7" points="157,-356 102,-356 102,-332 157,-332 157,-356"/>
+<text text-anchor="middle" x="129.5" y="-341.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">FTRAFO</text>
 </a>
 </g>
 </g>
-<!-- module~ftrafo -->
-<g id="module~~graph~~ModuleGraph_node2" class="node"><title>module~ftrafo</title>
-<g id="a_module~~graph~~ModuleGraph_node2"><a xlink:href=".././module/ftrafo.html" xlink:title="FTRAFO">
-<polygon fill="#337ab7" stroke="#337ab7" points="157,-314 102,-314 102,-290 157,-290 157,-314"/>
-<text text-anchor="middle" x="129.5" y="-299.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">FTRAFO</text>
+<!-- module~phtogr -->
+<g id="module~~graph~~ModuleGraph_node2" class="node"><title>module~phtogr</title>
+<g id="a_module~~graph~~ModuleGraph_node2"><a xlink:href=".././module/phtogr.html" xlink:title="PHTOGR">
+<polygon fill="#337ab7" stroke="#337ab7" points="58,-129 0,-129 0,-105 58,-105 58,-129"/>
+<text text-anchor="middle" x="29" y="-114.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHTOGR</text>
 </a>
 </g>
 </g>
-<!-- module~grtoph -->
-<g id="module~~graph~~ModuleGraph_node3" class="node"><title>module~grtoph</title>
-<g id="a_module~~graph~~ModuleGraph_node3"><a xlink:href=".././module/grtoph.html" xlink:title="GRTOPH">
-<polygon fill="#337ab7" stroke="#337ab7" points="158.5,-272 100.5,-272 100.5,-248 158.5,-248 158.5,-272"/>
-<text text-anchor="middle" x="129.5" y="-257.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GRTOPH</text>
+<!-- module~rwgrib2 -->
+<g id="module~~graph~~ModuleGraph_node3" class="node"><title>module~rwgrib2</title>
+<g id="a_module~~graph~~ModuleGraph_node3"><a xlink:href=".././module/rwgrib2.html" xlink:title="RWGRIB2">
+<polygon fill="#337ab7" stroke="#337ab7" points="160,-276 99,-276 99,-252 160,-252 160,-276"/>
+<text text-anchor="middle" x="129.5" y="-261.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">RWGRIB2</text>
 </a>
 </g>
 </g>
-<!-- module~phtogr -->
-<g id="module~~graph~~ModuleGraph_node4" class="node"><title>module~phtogr</title>
-<g id="a_module~~graph~~ModuleGraph_node4"><a xlink:href=".././module/phtogr.html" xlink:title="PHTOGR">
-<polygon fill="#337ab7" stroke="#337ab7" points="58,-129 0,-129 0,-105 58,-105 58,-129"/>
-<text text-anchor="middle" x="29" y="-114.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHTOGR</text>
+<!-- module~grtoph -->
+<g id="module~~graph~~ModuleGraph_node4" class="node"><title>module~grtoph</title>
+<g id="a_module~~graph~~ModuleGraph_node4"><a xlink:href=".././module/grtoph.html" xlink:title="GRTOPH">
+<polygon fill="#337ab7" stroke="#337ab7" points="158.5,-234 100.5,-234 100.5,-210 158.5,-210 158.5,-234"/>
+<text text-anchor="middle" x="129.5" y="-219.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GRTOPH</text>
 </a>
 </g>
 </g>
 <!-- module~grtoph&#45;&gt;module~phtogr -->
 <g id="module~~graph~~ModuleGraph_edge1" class="edge"><title>module~grtoph&#45;&gt;module~phtogr</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M109.362,-247.823C103.988,-243.836 98.414,-239.107 94,-234 68.5839,-204.595 48.9806,-163.444 38.4957,-138.596"/>
-<polygon fill="#000000" stroke="#000000" points="41.726,-137.248 34.6898,-129.327 35.2506,-139.907 41.726,-137.248"/>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M105.741,-209.821C101.638,-207.169 97.5427,-204.191 94,-201 73.2359,-182.296 54.5087,-156.085 42.7542,-137.938"/>
+<polygon fill="#000000" stroke="#000000" points="45.5726,-135.846 37.2692,-129.265 39.6566,-139.588 45.5726,-135.846"/>
 </g>
 <!-- program~calc_etadot -->
 <g id="module~~graph~~ModuleGraph_node5" class="node"><title>program~calc_etadot</title>
 <g id="a_module~~graph~~ModuleGraph_node5"><a xlink:href=".././program/calc_etadot.html" xlink:title="calc_etadot">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="282.5,-274 215.5,-274 215.5,-250 282.5,-250 282.5,-274"/>
-<text text-anchor="middle" x="249" y="-259.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">calc_etadot</text>
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="282.5,-276 215.5,-276 215.5,-252 282.5,-252 282.5,-276"/>
+<text text-anchor="middle" x="249" y="-261.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">calc_etadot</text>
 </a>
 </g>
 </g>
-<!-- program~calc_etadot&#45;&gt;module~rwgrib2 -->
-<g id="module~~graph~~ModuleGraph_edge3" class="edge"><title>program~calc_etadot&#45;&gt;module~rwgrib2</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M232.381,-274.111C215.912,-286.731 189.068,-306.875 165,-323 163.34,-324.112 161.622,-325.237 159.879,-326.358"/>
-<polygon fill="#000000" stroke="#000000" points="157.73,-323.575 151.117,-331.853 161.449,-329.505 157.73,-323.575"/>
-</g>
 <!-- program~calc_etadot&#45;&gt;module~ftrafo -->
 <g id="module~~graph~~ModuleGraph_edge5" class="edge"><title>program~calc_etadot&#45;&gt;module~ftrafo</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.27,-273.142C200.23,-278.262 182.339,-284.353 166.878,-289.616"/>
-<polygon fill="#000000" stroke="#000000" points="165.462,-286.401 157.124,-292.937 167.718,-293.027 165.462,-286.401"/>
-</g>
-<!-- program~calc_etadot&#45;&gt;module~grtoph -->
-<g id="module~~graph~~ModuleGraph_edge4" class="edge"><title>program~calc_etadot&#45;&gt;module~grtoph</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.27,-261.443C200.814,-261.197 183.726,-260.906 168.692,-260.65"/>
-<polygon fill="#000000" stroke="#000000" points="168.728,-257.15 158.67,-260.479 168.609,-264.149 168.728,-257.15"/>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M230.154,-276.15C210.544,-289.502 178.864,-311.071 156.495,-326.302"/>
+<polygon fill="#000000" stroke="#000000" points="154.425,-323.476 148.129,-331.998 158.364,-329.263 154.425,-323.476"/>
 </g>
 <!-- program~calc_etadot&#45;&gt;module~phtogr -->
 <g id="module~~graph~~ModuleGraph_edge6" class="edge"><title>program~calc_etadot&#45;&gt;module~phtogr</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.363,-254.585C182.299,-245.88 130.902,-228.962 94,-201 71.3738,-183.855 52.7047,-156.72 41.4834,-137.952"/>
-<polygon fill="#000000" stroke="#000000" points="44.4849,-136.151 36.4504,-129.244 38.4244,-139.654 44.4849,-136.151"/>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M225.108,-276.123C192.884,-291.339 133.66,-312.332 94,-285 45.7891,-251.775 33.8683,-177.032 30.9399,-139.459"/>
+<polygon fill="#000000" stroke="#000000" points="34.4082,-138.841 30.2896,-129.079 27.4218,-139.278 34.4082,-138.841"/>
+</g>
+<!-- program~calc_etadot&#45;&gt;module~rwgrib2 -->
+<g id="module~~graph~~ModuleGraph_edge3" class="edge"><title>program~calc_etadot&#45;&gt;module~rwgrib2</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.27,-264C201.391,-264 185.084,-264 170.499,-264"/>
+<polygon fill="#000000" stroke="#000000" points="170.243,-260.5 160.243,-264 170.243,-267.5 170.243,-260.5"/>
+</g>
+<!-- program~calc_etadot&#45;&gt;module~grtoph -->
+<g id="module~~graph~~ModuleGraph_edge4" class="edge"><title>program~calc_etadot&#45;&gt;module~grtoph</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.27,-252.301C200.675,-247.084 183.397,-240.908 168.259,-235.497"/>
+<polygon fill="#000000" stroke="#000000" points="169.264,-232.139 158.67,-232.069 166.908,-238.731 169.264,-232.139"/>
 </g>
 <!-- GRIB_API -->
 <g id="module~~graph~~ModuleGraph_node13" class="node"><title>GRIB_API</title>
@@ -217,97 +219,97 @@ All Modules &ndash; Flex_extract: Calculation of etadot
 </g>
 <!-- program~calc_etadot&#45;&gt;GRIB_API -->
 <g id="module~~graph~~ModuleGraph_edge2" class="edge"><title>program~calc_etadot&#45;&gt;GRIB_API</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M216.829,-249.937C211.371,-247.309 205.882,-244.31 201,-241 182.529,-228.478 181.944,-220.522 165,-206 161.948,-203.384 158.662,-200.724 155.373,-198.153"/>
-<polygon fill="#000000" stroke="#000000" points="157.401,-195.298 147.326,-192.021 153.158,-200.866 157.401,-195.298"/>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.585,-251.809C210.487,-249.255 205.441,-246.314 201,-243 181.298,-228.294 183.733,-216.922 165,-201 163.831,-200.007 162.61,-199.03 161.355,-198.074"/>
+<polygon fill="#000000" stroke="#000000" points="162.963,-194.93 152.749,-192.114 158.978,-200.685 162.963,-194.93"/>
 </g>
-<!-- proc~readlatlon -->
-<g id="module~~graph~~ModuleGraph_node6" class="node"><title>proc~readlatlon</title>
-<g id="a_module~~graph~~ModuleGraph_node6"><a xlink:href=".././proc/readlatlon.html" xlink:title="READLATLON">
-<polygon fill="#d9534f" stroke="#d9534f" points="290,-232 208,-232 208,-208 290,-208 290,-232"/>
-<text text-anchor="middle" x="249" y="-217.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READLATLON</text>
+<!-- proc~writelatlon -->
+<g id="module~~graph~~ModuleGraph_node6" class="node"><title>proc~writelatlon</title>
+<g id="a_module~~graph~~ModuleGraph_node6"><a xlink:href=".././proc/writelatlon.html" xlink:title="WRITELATLON">
+<polygon fill="#d9534f" stroke="#d9534f" points="293,-234 205,-234 205,-210 293,-210 293,-234"/>
+<text text-anchor="middle" x="249" y="-219.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">WRITELATLON</text>
 </a>
 </g>
 </g>
-<!-- proc~readlatlon&#45;&gt;GRIB_API -->
-<g id="module~~graph~~ModuleGraph_edge7" class="edge"><title>proc~readlatlon&#45;&gt;GRIB_API</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M212.746,-207.999C199.256,-203.406 183.787,-198.14 169.931,-193.423"/>
-<polygon fill="#000000" stroke="#000000" points="170.773,-190.013 160.179,-190.103 168.517,-196.639 170.773,-190.013"/>
+<!-- proc~writelatlon&#45;&gt;GRIB_API -->
+<g id="module~~graph~~ModuleGraph_edge7" class="edge"><title>proc~writelatlon&#45;&gt;GRIB_API</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M214.329,-209.964C200.444,-205.001 184.258,-199.216 169.832,-194.059"/>
+<polygon fill="#000000" stroke="#000000" points="170.771,-190.678 160.176,-190.608 168.415,-197.269 170.771,-190.678"/>
 </g>
-<!-- proc~phgracut -->
-<g id="module~~graph~~ModuleGraph_node7" class="node"><title>proc~phgracut</title>
-<g id="a_module~~graph~~ModuleGraph_node7"><a xlink:href=".././proc/phgracut.html" xlink:title="PHGRACUT">
-<polygon fill="#d9534f" stroke="#d9534f" points="165,-150 94,-150 94,-126 165,-126 165,-150"/>
-<text text-anchor="middle" x="129.5" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRACUT</text>
+<!-- proc~readlatlon -->
+<g id="module~~graph~~ModuleGraph_node7" class="node"><title>proc~readlatlon</title>
+<g id="a_module~~graph~~ModuleGraph_node7"><a xlink:href=".././proc/readlatlon.html" xlink:title="READLATLON">
+<polygon fill="#d9534f" stroke="#d9534f" points="290,-192 208,-192 208,-168 290,-168 290,-192"/>
+<text text-anchor="middle" x="249" y="-177.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READLATLON</text>
 </a>
 </g>
 </g>
-<!-- proc~phgracut&#45;&gt;module~phtogr -->
-<g id="module~~graph~~ModuleGraph_edge8" class="edge"><title>proc~phgracut&#45;&gt;module~phtogr</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M93.7726,-130.596C85.5033,-128.833 76.6341,-126.942 68.2181,-125.148"/>
-<polygon fill="#000000" stroke="#000000" points="68.7578,-121.684 58.2478,-123.022 67.2982,-128.531 68.7578,-121.684"/>
+<!-- proc~readlatlon&#45;&gt;GRIB_API -->
+<g id="module~~graph~~ModuleGraph_edge8" class="edge"><title>proc~readlatlon&#45;&gt;GRIB_API</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M207.892,-180C195.757,-180 182.438,-180 170.322,-180"/>
+<polygon fill="#000000" stroke="#000000" points="170.044,-176.5 160.044,-180 170.044,-183.5 170.044,-176.5"/>
 </g>
-<!-- proc~vduvsub -->
-<g id="module~~graph~~ModuleGraph_node8" class="node"><title>proc~vduvsub</title>
-<g id="a_module~~graph~~ModuleGraph_node8"><a xlink:href=".././proc/vduvsub.html" xlink:title="VDUVSUB">
-<polygon fill="#d9534f" stroke="#d9534f" points="160.5,-108 98.5,-108 98.5,-84 160.5,-84 160.5,-108"/>
-<text text-anchor="middle" x="129.5" y="-93.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDUVSUB</text>
+<!-- proc~vdtouv -->
+<g id="module~~graph~~ModuleGraph_node8" class="node"><title>proc~vdtouv</title>
+<g id="a_module~~graph~~ModuleGraph_node8"><a xlink:href=".././proc/vdtouv.html" xlink:title="VDTOUV">
+<polygon fill="#d9534f" stroke="#d9534f" points="157.5,-150 101.5,-150 101.5,-126 157.5,-126 157.5,-150"/>
+<text text-anchor="middle" x="129.5" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDTOUV</text>
 </a>
 </g>
 </g>
-<!-- proc~vduvsub&#45;&gt;module~phtogr -->
-<g id="module~~graph~~ModuleGraph_edge9" class="edge"><title>proc~vduvsub&#45;&gt;module~phtogr</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M98.4115,-102.415C88.8219,-104.459 78.0839,-106.749 68.0089,-108.897"/>
-<polygon fill="#000000" stroke="#000000" points="67.2724,-105.475 58.222,-110.983 68.732,-112.321 67.2724,-105.475"/>
+<!-- proc~vdtouv&#45;&gt;module~phtogr -->
+<g id="module~~graph~~ModuleGraph_edge9" class="edge"><title>proc~vdtouv&#45;&gt;module~phtogr</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M101.324,-132.206C91.0346,-130.012 79.1248,-127.473 68.0197,-125.106"/>
+<polygon fill="#000000" stroke="#000000" points="68.627,-121.657 58.117,-122.994 67.1674,-128.503 68.627,-121.657"/>
 </g>
-<!-- proc~readspectral -->
-<g id="module~~graph~~ModuleGraph_node9" class="node"><title>proc~readspectral</title>
-<g id="a_module~~graph~~ModuleGraph_node9"><a xlink:href=".././proc/readspectral.html" xlink:title="READSPECTRAL">
-<polygon fill="#d9534f" stroke="#d9534f" points="297,-190 201,-190 201,-166 297,-166 297,-190"/>
-<text text-anchor="middle" x="249" y="-175.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READSPECTRAL</text>
+<!-- proc~phgracut -->
+<g id="module~~graph~~ModuleGraph_node9" class="node"><title>proc~phgracut</title>
+<g id="a_module~~graph~~ModuleGraph_node9"><a xlink:href=".././proc/phgracut.html" xlink:title="PHGRACUT">
+<polygon fill="#d9534f" stroke="#d9534f" points="165,-108 94,-108 94,-84 165,-84 165,-108"/>
+<text text-anchor="middle" x="129.5" y="-93.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRACUT</text>
 </a>
 </g>
 </g>
-<!-- proc~readspectral&#45;&gt;GRIB_API -->
-<g id="module~~graph~~ModuleGraph_edge10" class="edge"><title>proc~readspectral&#45;&gt;GRIB_API</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M200.885,-178.802C190.758,-178.974 180.149,-179.155 170.331,-179.322"/>
-<polygon fill="#000000" stroke="#000000" points="169.985,-175.827 160.046,-179.497 170.104,-182.826 169.985,-175.827"/>
+<!-- proc~phgracut&#45;&gt;module~phtogr -->
+<g id="module~~graph~~ModuleGraph_edge10" class="edge"><title>proc~phgracut&#45;&gt;module~phtogr</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M93.7726,-103.404C85.5033,-105.167 76.6341,-107.058 68.2181,-108.852"/>
+<polygon fill="#000000" stroke="#000000" points="67.2982,-105.469 58.2478,-110.978 68.7578,-112.316 67.2982,-105.469"/>
 </g>
-<!-- proc~writelatlon -->
-<g id="module~~graph~~ModuleGraph_node10" class="node"><title>proc~writelatlon</title>
-<g id="a_module~~graph~~ModuleGraph_node10"><a xlink:href=".././proc/writelatlon.html" xlink:title="WRITELATLON">
-<polygon fill="#d9534f" stroke="#d9534f" points="293,-148 205,-148 205,-124 293,-124 293,-148"/>
-<text text-anchor="middle" x="249" y="-133.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">WRITELATLON</text>
+<!-- proc~readspectral -->
+<g id="module~~graph~~ModuleGraph_node10" class="node"><title>proc~readspectral</title>
+<g id="a_module~~graph~~ModuleGraph_node10"><a xlink:href=".././proc/readspectral.html" xlink:title="READSPECTRAL">
+<polygon fill="#d9534f" stroke="#d9534f" points="297,-150 201,-150 201,-126 297,-126 297,-150"/>
+<text text-anchor="middle" x="249" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READSPECTRAL</text>
 </a>
 </g>
 </g>
-<!-- proc~writelatlon&#45;&gt;GRIB_API -->
-<g id="module~~graph~~ModuleGraph_edge11" class="edge"><title>proc~writelatlon&#45;&gt;GRIB_API</title>
-<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M215.893,-148.023C201.623,-153.367 184.694,-159.706 169.687,-165.326"/>
-<polygon fill="#000000" stroke="#000000" points="168.288,-162.112 160.15,-168.897 170.743,-168.668 168.288,-162.112"/>
+<!-- proc~readspectral&#45;&gt;GRIB_API -->
+<g id="module~~graph~~ModuleGraph_edge11" class="edge"><title>proc~readspectral&#45;&gt;GRIB_API</title>
+<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M214.329,-150.036C200.444,-154.999 184.258,-160.784 169.832,-165.941"/>
+<polygon fill="#000000" stroke="#000000" points="168.415,-162.731 160.176,-169.392 170.771,-169.322 168.415,-162.731"/>
 </g>
-<!-- proc~vdtouv -->
-<g id="module~~graph~~ModuleGraph_node11" class="node"><title>proc~vdtouv</title>
-<g id="a_module~~graph~~ModuleGraph_node11"><a xlink:href=".././proc/vdtouv.html" xlink:title="VDTOUV">
-<polygon fill="#d9534f" stroke="#d9534f" points="157.5,-66 101.5,-66 101.5,-42 157.5,-42 157.5,-66"/>
-<text text-anchor="middle" x="129.5" y="-51.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDTOUV</text>
+<!-- proc~phgrad -->
+<g id="module~~graph~~ModuleGraph_node11" class="node"><title>proc~phgrad</title>
+<g id="a_module~~graph~~ModuleGraph_node11"><a xlink:href=".././proc/phgrad.html" xlink:title="PHGRAD">
+<polygon fill="#d9534f" stroke="#d9534f" points="158,-66 101,-66 101,-42 158,-42 158,-66"/>
+<text text-anchor="middle" x="129.5" y="-51.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRAD</text>
 </a>
 </g>
 </g>
-<!-- proc~vdtouv&#45;&gt;module~phtogr -->
-<g id="module~~graph~~ModuleGraph_edge12" class="edge"><title>proc~vdtouv&#45;&gt;module~phtogr</title>
+<!-- proc~phgrad&#45;&gt;module~phtogr -->
+<g id="module~~graph~~ModuleGraph_edge12" class="edge"><title>proc~phgrad&#45;&gt;module~phtogr</title>
 <path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M108.362,-66.1004C103.632,-68.9861 98.6229,-72.0773 94,-75 81.6793,-82.7894 68.1682,-91.6137 56.7482,-99.1563"/>
 <polygon fill="#000000" stroke="#000000" points="54.5035,-96.445 48.1007,-104.886 58.37,-102.28 54.5035,-96.445"/>
 </g>
-<!-- proc~phgrad -->
-<g id="module~~graph~~ModuleGraph_node12" class="node"><title>proc~phgrad</title>
-<g id="a_module~~graph~~ModuleGraph_node12"><a xlink:href=".././proc/phgrad.html" xlink:title="PHGRAD">
-<polygon fill="#d9534f" stroke="#d9534f" points="158,-24 101,-24 101,-0 158,-0 158,-24"/>
-<text text-anchor="middle" x="129.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRAD</text>
+<!-- proc~vduvsub -->
+<g id="module~~graph~~ModuleGraph_node12" class="node"><title>proc~vduvsub</title>
+<g id="a_module~~graph~~ModuleGraph_node12"><a xlink:href=".././proc/vduvsub.html" xlink:title="VDUVSUB">
+<polygon fill="#d9534f" stroke="#d9534f" points="160.5,-24 98.5,-24 98.5,-0 160.5,-0 160.5,-24"/>
+<text text-anchor="middle" x="129.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDUVSUB</text>
 </a>
 </g>
 </g>
-<!-- proc~phgrad&#45;&gt;module~phtogr -->
-<g id="module~~graph~~ModuleGraph_edge13" class="edge"><title>proc~phgrad&#45;&gt;module~phtogr</title>
+<!-- proc~vduvsub&#45;&gt;module~phtogr -->
+<g id="module~~graph~~ModuleGraph_edge13" class="edge"><title>proc~vduvsub&#45;&gt;module~phtogr</title>
 <path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M105.741,-24.1789C101.638,-26.8312 97.5427,-29.8087 94,-33 73.2359,-51.7042 54.5087,-77.9153 42.7542,-96.0624"/>
 <polygon fill="#000000" stroke="#000000" points="39.6566,-94.4123 37.2692,-104.735 45.5726,-98.1541 39.6566,-94.4123"/>
 </g>
@@ -373,8 +375,8 @@ All Modules &ndash; Flex_extract: Calculation of etadot
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/lists/procedures.html b/Documentation/html/Documentation/Api/Fortran/lists/procedures.html
index bc4ca6cb6bbcfaaa8db594d05588571368edcb79..095286b9595a0ef5740ef0ade9300b24ac47598c 100644
--- a/Documentation/html/Documentation/Api/Fortran/lists/procedures.html
+++ b/Documentation/html/Documentation/Api/Fortran/lists/procedures.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -46,7 +46,7 @@ All Procedures &ndash; Flex_extract: Calculation of etadot
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -115,78 +115,75 @@ All Procedures &ndash; Flex_extract: Calculation of etadot
 			 <thead><tr><th>Procedure</th><th>Location</th><th>Procedure Type</th><th>Description</th></tr></thead>
 			 <tbody>
 			 
-			   <tr><td><a href='../proc/contgl.html'>CONTGL</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Berechnung der Divergenz aus dem Windfeld (U,V)
- im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p></td></tr>
+			   <tr><td><a href='../proc/contgl.html'>CONTGL</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Calculation of divergence from the wind field (U,V)
+ in phase space. Returns fields of the componentens of the 
+ horizontal gradients XLAM,XPHI on the Gaussian grid</p></td></tr>
 			 
-			   <tr><td><a href='../proc/dplgnd.html'>DPLGND</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN
- LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
- UND SCHREIBT SIE IN DAS FELD DZ</p></td></tr>
+			   <tr><td><a href='../proc/dplgnd.html'>DPLGND</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Calculates the derivatives of the normalised associated Legendre function 
+ from P00(X) to PLL(X) and writes them into the field DZ.
+ Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)</p></td></tr>
 			 
-			   <tr><td><a href='../proc/gauleg.html'>GAULEG</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>BERECHNET DIE GAUSS+SCHEN BREITEN</p></td></tr>
+			   <tr><td><a href='../proc/gauleg.html'>GAULEG</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Calculates the Gaussian latitudes</p></td></tr>
 			 
-			   <tr><td><a href='../proc/grph213.html'>GRPH213</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td><p>WRONG&gt;&gt;&gt; DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH</p></td></tr>
+			   <tr><td><a href='../proc/grph213.html'>GRPH213</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td></td></tr>
 			 
-			   <tr><td><a href='../proc/grphsub.html'>GRPHSUB</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td><p>DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH</p></td></tr>
+			   <tr><td><a href='../proc/grphsub.html'>GRPHSUB</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td><p>Carries out the transformation from the phase space into the physical
+ space on spherical coordinates</p></td></tr>
 			 
 			   <tr><td><a href='../proc/ia.html'>IA</a></td><td><a href='../sourcefile/calc_etadot.f90.html'>calc_etadot.f90</a></td><td>Function</td><td><p>Calculate something that is roughly log10( maxval(field1)/g ) [PS]           </p></td></tr>
 			 
-			   <tr><td><a href='../proc/legtr.html'>LEGTR</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM</p></td></tr>
+			   <tr><td><a href='../proc/legtr.html'>LEGTR</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Calculate the Fourier coefficients CXM</p></td></tr>
 			 
-			   <tr><td><a href='../proc/lgtr213.html'>LGTR213</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td><a href="../proc/lgtr213.html" class="pull-right"><emph>Read more&hellip;</emph></a></td></tr>
+			   <tr><td><a href='../proc/lgtr213.html'>LGTR213</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td><p>Calculates the KFFKs (Fourier coefficients) CXMN</p></td></tr>
 			 
-			   <tr><td><a href='../proc/omega.html'>OMEGA</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>calculates $\omega$ in the hybrid ($\eta$-) coordinate system</p></td></tr>
+			   <tr><td><a href='../proc/omega.html'>OMEGA</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Calculates <script type="math/tex">\omega</script> in the hybrid (<script type="math/tex">\eta</script>-)coordinate system</p></td></tr>
 			 
-			   <tr><td><a href='../proc/phgcut.html'>PHGCUT</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt
- Der Erde angegeben werden. Diese Routine ist langsamer als phgrph</p><a href="../proc/phgcut.html" class="pull-right"><emph>Read more&hellip;</emph></a></td></tr>
+			   <tr><td><a href='../proc/phgcut.html'>PHGCUT</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Carries out the transformation of a field variable from the phase space
+ into the physical space on spherical coordinates. It is possible to 
+ specify a section of the Earth. This subroutine is slower thatn PHGRPH.</p></td></tr>
 			 
 			   <tr><td><a href='../proc/phgpns.html'>PHGPNS</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td></td></tr>
 			 
-			   <tr><td><a href='../proc/phgr213.html'>PHGR213</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH</p></td></tr>
+			   <tr><td><a href='../proc/phgr213.html'>PHGR213</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td></td></tr>
 			 
-			   <tr><td><a href='../proc/phgracut.html'>PHGRACUT</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Berechnung des Gradienten eines Skalars aus dem Feld des
- Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p></td></tr>
+			   <tr><td><a href='../proc/phgracut.html'>PHGRACUT</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Calculated the gradient of a scalar from the field of the scalar XMN 
+ in phase space. Returns the fields of the components of the horizontal
+ gradient XLAM,XPHI on the Gaussian grid</p></td></tr>
 			 
-			   <tr><td><a href='../proc/phgrad.html'>PHGRAD</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Berechnung des Gradienten eines Skalars aus dem Feld des
- Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p></td></tr>
+			   <tr><td><a href='../proc/phgrad.html'>PHGRAD</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Calculates the gradient of a scalar from the field of the scalar XMN
+ in phase space. Returns fields of the componentens of the horizontal
+ gradients XLAM,XPHI on the Gaussian grid.</p></td></tr>
 			 
 			   <tr><td><a href='../proc/phsym.html'>PHSYM</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td></td></tr>
 			 
 			   <tr><td><a href='../proc/phsymcut.html'>PHSYMCUT</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td></td></tr>
 			 
-			   <tr><td><a href='../proc/plgnfa.html'>PLGNFA</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN
- LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
- UND SCHREIBT SIE IN DAS FELD Z</p></td></tr>
+			   <tr><td><a href='../proc/plgnfa.html'>PLGNFA</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Calculates all normalised associated Legendre functions from 
+ P00(X) to PLL(X) and writes them into the field Z.
+ The polynomials have indices as with ECMWF, i.e.
+ P00,P10,P11,P20,P21,P22,...
+ Otherwise, this subroutine is analogous to PLGNDN</p></td></tr>
 			 
-			   <tr><td><a href='../proc/posnam.html'>POSNAM</a></td><td><a href='../sourcefile/posnam.f90.html'>posnam.f90</a></td><td>Subroutine</td><td><p>position in namelist file.</p></td></tr>
+			   <tr><td><a href='../proc/posnam.html'>POSNAM</a></td><td><a href='../sourcefile/posnam.f90.html'>posnam.f90</a></td><td>Subroutine</td><td><p>Position in namelist file.
+ Author:  Mats Hamrud, ECMWF</p></td></tr>
 			 
-			   <tr><td><a href='../proc/readlatlon.html'>READLATLON</a></td><td><a href='../module/rwgrib2.html'>RWGRIB2</a></td><td>Subroutine</td><td><p>Read a field from GRIB file on lat-lon grid</p><a href="../proc/readlatlon.html" class="pull-right"><emph>Read more&hellip;</emph></a></td></tr>
+			   <tr><td><a href='../proc/readlatlon.html'>READLATLON</a></td><td><a href='../module/rwgrib2.html'>RWGRIB2</a></td><td>Subroutine</td><td><p>Read a field from GRIB file on lat-lon grid</p></td></tr>
 			 
-			   <tr><td><a href='../proc/readspectral.html'>READSPECTRAL</a></td><td><a href='../module/rwgrib2.html'>RWGRIB2</a></td><td>Subroutine</td><td><p>read a GRIB file in spherical harmonics</p><a href="../proc/readspectral.html" class="pull-right"><emph>Read more&hellip;</emph></a></td></tr>
+			   <tr><td><a href='../proc/readspectral.html'>READSPECTRAL</a></td><td><a href='../module/rwgrib2.html'>RWGRIB2</a></td><td>Subroutine</td><td><p>Read a GRIB file in spherical harmonics</p></td></tr>
 			 
-			   <tr><td><a href='../proc/rfouftr.html'>RFOUFTR</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td></td></tr>
+			   <tr><td><a href='../proc/rfouftr.html'>RFOUFTR</a></td><td><a href='../module/grtoph.html'>GRTOPH</a></td><td>Subroutine</td><td><p>Calculates the Fourier sum with an FFT algorithm</p></td></tr>
 			 
-			   <tr><td><a href='../proc/rfourtr.html'>RFOURTR</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><a href="../proc/rfourtr.html" class="pull-right"><emph>Read more&hellip;</emph></a></td></tr>
+			   <tr><td><a href='../proc/rfourtr.html'>RFOURTR</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Calculates the Fourier sum with an FFT algorithm</p></td></tr>
 			 
-			   <tr><td><a href='../proc/spfilter.html'>SPFILTER</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Spectral Filter of Sardeshmukh and Hoskins (1984, MWR)</p></td></tr>
+			   <tr><td><a href='../proc/spfilter.html'>SPFILTER</a></td><td><a href='../module/phtogr.html'>PHTOGR</a></td><td>Subroutine</td><td><p>Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984)</p></td></tr>
 			 
 			   <tr><td><a href='../proc/statis.html'>STATIS</a></td><td><a href='../sourcefile/calc_etadot.f90.html'>calc_etadot.f90</a></td><td>Subroutine</td><td><p>calculate mean, rms, stdev</p></td></tr>
 			 
-			   <tr><td><a href='../proc/vdtouv.html'>VDTOUV</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Berechnung der scale winds aus Vorticity und Divergenz
- uebergibt man in XMN die Divergenz, so wird der divergente Anteil des
- Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so
- erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).
- Summiert man beide, erhaelt man den gesamten Scale wind</p></td></tr>
+			   <tr><td><a href='../proc/vdtouv.html'>VDTOUV</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td><p>Calculates scale winds from vorticity and divergence.
+ If in XMN the divergence is passed, then the divergent part of the wind
+ (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the 
+ rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.
+ Summing both, one obtains the whole scale wind.</p></td></tr>
 			 
 			   <tr><td><a href='../proc/vduvsub.html'>VDUVSUB</a></td><td><a href='../module/ftrafo.html'>FTRAFO</a></td><td>Subroutine</td><td></td></tr>
 			 
@@ -199,429 +196,429 @@ All Procedures &ndash; Flex_extract: Calculation of etadot
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: call~~graph~~CallGraph Pages: 1 -->
-<svg id="callgraphCallGraph" width="551pt" height="725pt"
- viewBox="0.00 0.00 551.00 725.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="call~~graph~~CallGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 721)">
+<svg id="callgraphCallGraph" width="551pt" height="973pt"
+ viewBox="0.00 0.00 551.00 973.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="call~~graph~~CallGraph" class="graph" transform="scale(1 1) rotate(0) translate(4 969)">
 <title>call~~graph~~CallGraph</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-721 547,-721 547,4 -4,4"/>
-<!-- proc~phsymcut -->
-<g id="call~~graph~~CallGraph_node1" class="node"><title>proc~phsymcut</title>
-<g id="a_call~~graph~~CallGraph_node1"><a xlink:href=".././proc/phsymcut.html" xlink:title="PHSYMCUT">
-<polygon fill="#d9534f" stroke="#d9534f" points="340,-482 269,-482 269,-458 340,-458 340,-482"/>
-<text text-anchor="middle" x="304.5" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHSYMCUT</text>
+<polygon fill="white" stroke="none" points="-4,4 -4,-969 547,-969 547,4 -4,4"/>
+<!-- proc~phgpns -->
+<g id="call~~graph~~CallGraph_node1" class="node"><title>proc~phgpns</title>
+<g id="a_call~~graph~~CallGraph_node1"><a xlink:href=".././proc/phgpns.html" xlink:title="PHGPNS">
+<polygon fill="#d9534f" stroke="#d9534f" points="332.5,-482 276.5,-482 276.5,-458 332.5,-458 332.5,-482"/>
+<text text-anchor="middle" x="304.5" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGPNS</text>
 </a>
 </g>
 </g>
 <!-- proc~rfourtr -->
-<g id="call~~graph~~CallGraph_node13" class="node"><title>proc~rfourtr</title>
-<g id="a_call~~graph~~CallGraph_node13"><a xlink:href=".././proc/rfourtr.html" xlink:title="RFOURTR">
-<polygon fill="#d9534f" stroke="#d9534f" points="453,-524 389,-524 389,-500 453,-500 453,-524"/>
-<text text-anchor="middle" x="421" y="-509.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">RFOURTR</text>
+<g id="call~~graph~~CallGraph_node24" class="node"><title>proc~rfourtr</title>
+<g id="a_call~~graph~~CallGraph_node24"><a xlink:href=".././proc/rfourtr.html" xlink:title="RFOURTR">
+<polygon fill="#d9534f" stroke="#d9534f" points="453,-482 389,-482 389,-458 453,-458 453,-482"/>
+<text text-anchor="middle" x="421" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">RFOURTR</text>
 </a>
 </g>
 </g>
-<!-- proc~phsymcut&#45;&gt;proc~rfourtr -->
-<g id="call~~graph~~CallGraph_edge1" class="edge"><title>proc~phsymcut&#45;&gt;proc~rfourtr</title>
-<path fill="none" stroke="#000000" d="M338.311,-482.036C351.073,-486.717 365.83,-492.13 379.262,-497.057"/>
-<polygon fill="#000000" stroke="#000000" points="378.166,-500.383 388.76,-500.541 380.577,-493.811 378.166,-500.383"/>
-</g>
-<!-- proc~contgl -->
-<g id="call~~graph~~CallGraph_node2" class="node"><title>proc~contgl</title>
-<g id="a_call~~graph~~CallGraph_node2"><a xlink:href=".././proc/contgl.html" xlink:title="CONTGL">
-<polygon fill="#d9534f" stroke="#d9534f" points="72.5,-297 15.5,-297 15.5,-273 72.5,-273 72.5,-297"/>
-<text text-anchor="middle" x="44" y="-282.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">CONTGL</text>
-</a>
-</g>
+<!-- proc~phgpns&#45;&gt;proc~rfourtr -->
+<g id="call~~graph~~CallGraph_edge1" class="edge"><title>proc~phgpns&#45;&gt;proc~rfourtr</title>
+<path fill="none" stroke="#000000" d="M332.635,-470C346.283,-470 363.123,-470 378.364,-470"/>
+<polygon fill="#000000" stroke="#000000" points="378.601,-473.5 388.601,-470 378.601,-466.5 378.601,-473.5"/>
 </g>
-<!-- proc~rfouftr -->
-<g id="call~~graph~~CallGraph_node3" class="node"><title>proc~rfouftr</title>
-<g id="a_call~~graph~~CallGraph_node3"><a xlink:href=".././proc/rfouftr.html" xlink:title="RFOUFTR">
-<polygon fill="#d9534f" stroke="#d9534f" points="453,-482 389,-482 389,-458 453,-458 453,-482"/>
-<text text-anchor="middle" x="421" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">RFOUFTR</text>
+<!-- proc~writelatlon -->
+<g id="call~~graph~~CallGraph_node2" class="node"><title>proc~writelatlon</title>
+<g id="a_call~~graph~~CallGraph_node2"><a xlink:href=".././proc/writelatlon.html" xlink:title="WRITELATLON">
+<polygon fill="#d9534f" stroke="#d9534f" points="88,-545 7.10543e-15,-545 7.10543e-15,-521 88,-521 88,-545"/>
+<text text-anchor="middle" x="44" y="-530.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">WRITELATLON</text>
 </a>
 </g>
 </g>
-<!-- fft99 -->
-<g id="call~~graph~~CallGraph_node31" class="node"><title>fft99</title>
-<polygon fill="#777777" stroke="#777777" points="543,-524 489,-524 489,-500 543,-500 543,-524"/>
-<text text-anchor="middle" x="516" y="-509.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">fft99</text>
+<!-- grib_set -->
+<g id="call~~graph~~CallGraph_node32" class="node"><title>grib_set</title>
+<polygon fill="#777777" stroke="#777777" points="199,-566 145,-566 145,-542 199,-542 199,-566"/>
+<text text-anchor="middle" x="172" y="-551.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_set</text>
 </g>
-<!-- proc~rfouftr&#45;&gt;fft99 -->
-<g id="call~~graph~~CallGraph_edge3" class="edge"><title>proc~rfouftr&#45;&gt;fft99</title>
-<path fill="none" stroke="#000000" d="M448.899,-482.148C458.412,-486.444 469.265,-491.345 479.388,-495.917"/>
-<polygon fill="#000000" stroke="#000000" points="478.248,-499.243 488.802,-500.169 481.129,-492.863 478.248,-499.243"/>
+<!-- proc~writelatlon&#45;&gt;grib_set -->
+<g id="call~~graph~~CallGraph_edge3" class="edge"><title>proc~writelatlon&#45;&gt;grib_set</title>
+<path fill="none" stroke="#000000" d="M88.0096,-540.168C103.155,-542.692 120.019,-545.503 134.569,-547.928"/>
+<polygon fill="#000000" stroke="#000000" points="134.257,-551.424 144.697,-549.616 135.408,-544.52 134.257,-551.424"/>
 </g>
-<!-- wsave -->
-<g id="call~~graph~~CallGraph_node39" class="node"><title>wsave</title>
-<polygon fill="#777777" stroke="#777777" points="543,-482 489,-482 489,-458 543,-458 543,-482"/>
-<text text-anchor="middle" x="516" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">wsave</text>
+<!-- grib_write -->
+<g id="call~~graph~~CallGraph_node35" class="node"><title>grib_write</title>
+<polygon fill="#777777" stroke="#777777" points="201.5,-524 142.5,-524 142.5,-500 201.5,-500 201.5,-524"/>
+<text text-anchor="middle" x="172" y="-509.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_write</text>
 </g>
-<!-- proc~rfouftr&#45;&gt;wsave -->
-<g id="call~~graph~~CallGraph_edge2" class="edge"><title>proc~rfouftr&#45;&gt;wsave</title>
-<path fill="none" stroke="#000000" d="M453.226,-470C461.48,-470 470.455,-470 478.941,-470"/>
-<polygon fill="#000000" stroke="#000000" points="478.969,-473.5 488.969,-470 478.969,-466.5 478.969,-473.5"/>
+<!-- proc~writelatlon&#45;&gt;grib_write -->
+<g id="call~~graph~~CallGraph_edge2" class="edge"><title>proc~writelatlon&#45;&gt;grib_write</title>
+<path fill="none" stroke="#000000" d="M88.0096,-525.832C102.326,-523.446 118.179,-520.804 132.16,-518.473"/>
+<polygon fill="#000000" stroke="#000000" points="133.142,-521.858 142.431,-516.762 131.991,-514.953 133.142,-521.858"/>
 </g>
-<!-- proc~phgr213 -->
-<g id="call~~graph~~CallGraph_node4" class="node"><title>proc~phgr213</title>
-<g id="a_call~~graph~~CallGraph_node4"><a xlink:href=".././proc/phgr213.html" xlink:title="PHGR213">
-<polygon fill="#d9534f" stroke="#d9534f" points="202.5,-440 141.5,-440 141.5,-416 202.5,-416 202.5,-440"/>
-<text text-anchor="middle" x="172" y="-425.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGR213</text>
+<!-- proc~omega -->
+<g id="call~~graph~~CallGraph_node3" class="node"><title>proc~omega</title>
+<g id="a_call~~graph~~CallGraph_node3"><a xlink:href=".././proc/omega.html" xlink:title="OMEGA">
+<polygon fill="#d9534f" stroke="#d9534f" points="71,-587 17,-587 17,-563 71,-563 71,-587"/>
+<text text-anchor="middle" x="44" y="-572.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">OMEGA</text>
 </a>
 </g>
 </g>
-<!-- proc~phsym -->
-<g id="call~~graph~~CallGraph_node21" class="node"><title>proc~phsym</title>
-<g id="a_call~~graph~~CallGraph_node21"><a xlink:href=".././proc/phsym.html" xlink:title="PHSYM">
-<polygon fill="#d9534f" stroke="#d9534f" points="331.5,-440 277.5,-440 277.5,-416 331.5,-416 331.5,-440"/>
-<text text-anchor="middle" x="304.5" y="-425.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHSYM</text>
+<!-- proc~lgtr213 -->
+<g id="call~~graph~~CallGraph_node4" class="node"><title>proc~lgtr213</title>
+<g id="a_call~~graph~~CallGraph_node4"><a xlink:href=".././proc/lgtr213.html" xlink:title="LGTR213">
+<polygon fill="#d9534f" stroke="#d9534f" points="73.5,-629 14.5,-629 14.5,-605 73.5,-605 73.5,-629"/>
+<text text-anchor="middle" x="44" y="-614.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">LGTR213</text>
 </a>
 </g>
 </g>
-<!-- proc~phgr213&#45;&gt;proc~phsym -->
-<g id="call~~graph~~CallGraph_edge4" class="edge"><title>proc~phgr213&#45;&gt;proc~phsym</title>
-<path fill="none" stroke="#000000" d="M202.612,-428C221.696,-428 246.646,-428 266.959,-428"/>
-<polygon fill="#000000" stroke="#000000" points="267.104,-431.5 277.104,-428 267.104,-424.5 267.104,-431.5"/>
-</g>
-<!-- proc~readlatlon -->
-<g id="call~~graph~~CallGraph_node5" class="node"><title>proc~readlatlon</title>
-<g id="a_call~~graph~~CallGraph_node5"><a xlink:href=".././proc/readlatlon.html" xlink:title="READLATLON">
-<polygon fill="#d9534f" stroke="#d9534f" points="213,-398 131,-398 131,-374 213,-374 213,-398"/>
-<text text-anchor="middle" x="172" y="-383.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READLATLON</text>
+<!-- proc~contgl -->
+<g id="call~~graph~~CallGraph_node5" class="node"><title>proc~contgl</title>
+<g id="a_call~~graph~~CallGraph_node5"><a xlink:href=".././proc/contgl.html" xlink:title="CONTGL">
+<polygon fill="#d9534f" stroke="#d9534f" points="72.5,-671 15.5,-671 15.5,-647 72.5,-647 72.5,-671"/>
+<text text-anchor="middle" x="44" y="-656.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">CONTGL</text>
 </a>
 </g>
 </g>
-<!-- grib_count_in_file -->
-<g id="call~~graph~~CallGraph_node34" class="node"><title>grib_count_in_file</title>
-<polygon fill="#777777" stroke="#777777" points="353,-398 256,-398 256,-374 353,-374 353,-398"/>
-<text text-anchor="middle" x="304.5" y="-383.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_count_in_file</text>
+<!-- proc~plgnfa -->
+<g id="call~~graph~~CallGraph_node6" class="node"><title>proc~plgnfa</title>
+<g id="a_call~~graph~~CallGraph_node6"><a xlink:href=".././proc/plgnfa.html" xlink:title="PLGNFA">
+<polygon fill="#d9534f" stroke="#d9534f" points="71.5,-713 16.5,-713 16.5,-689 71.5,-689 71.5,-713"/>
+<text text-anchor="middle" x="44" y="-698.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PLGNFA</text>
+</a>
 </g>
-<!-- proc~readlatlon&#45;&gt;grib_count_in_file -->
-<g id="call~~graph~~CallGraph_edge5" class="edge"><title>proc~readlatlon&#45;&gt;grib_count_in_file</title>
-<path fill="none" stroke="#000000" d="M213.219,-386C223.435,-386 234.615,-386 245.521,-386"/>
-<polygon fill="#000000" stroke="#000000" points="245.853,-389.5 255.853,-386 245.853,-382.5 245.853,-389.5"/>
 </g>
-<!-- grib_close_file -->
-<g id="call~~graph~~CallGraph_node40" class="node"><title>grib_close_file</title>
-<polygon fill="#777777" stroke="#777777" points="345,-356 264,-356 264,-332 345,-332 345,-356"/>
-<text text-anchor="middle" x="304.5" y="-341.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_close_file</text>
+<!-- proc~posnam -->
+<g id="call~~graph~~CallGraph_node7" class="node"><title>proc~posnam</title>
+<g id="a_call~~graph~~CallGraph_node7"><a xlink:href=".././proc/posnam.html" xlink:title="POSNAM">
+<polygon fill="#d9534f" stroke="#d9534f" points="201,-440 143,-440 143,-416 201,-416 201,-440"/>
+<text text-anchor="middle" x="172" y="-425.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">POSNAM</text>
+</a>
 </g>
-<!-- proc~readlatlon&#45;&gt;grib_close_file -->
-<g id="call~~graph~~CallGraph_edge6" class="edge"><title>proc~readlatlon&#45;&gt;grib_close_file</title>
-<path fill="none" stroke="#000000" d="M210.396,-373.964C224.73,-369.351 241.271,-364.028 256.399,-359.159"/>
-<polygon fill="#000000" stroke="#000000" points="257.652,-362.433 266.098,-356.037 255.507,-355.769 257.652,-362.433"/>
 </g>
-<!-- proc~phgracut -->
-<g id="call~~graph~~CallGraph_node6" class="node"><title>proc~phgracut</title>
-<g id="a_call~~graph~~CallGraph_node6"><a xlink:href=".././proc/phgracut.html" xlink:title="PHGRACUT">
-<polygon fill="#d9534f" stroke="#d9534f" points="340,-524 269,-524 269,-500 340,-500 340,-524"/>
-<text text-anchor="middle" x="304.5" y="-509.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRACUT</text>
+<!-- proc~gauleg -->
+<g id="call~~graph~~CallGraph_node8" class="node"><title>proc~gauleg</title>
+<g id="a_call~~graph~~CallGraph_node8"><a xlink:href=".././proc/gauleg.html" xlink:title="GAULEG">
+<polygon fill="#d9534f" stroke="#d9534f" points="200,-398 144,-398 144,-374 200,-374 200,-398"/>
+<text text-anchor="middle" x="172" y="-383.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GAULEG</text>
 </a>
 </g>
 </g>
-<!-- proc~phgracut&#45;&gt;proc~rfourtr -->
-<g id="call~~graph~~CallGraph_edge7" class="edge"><title>proc~phgracut&#45;&gt;proc~rfourtr</title>
-<path fill="none" stroke="#000000" d="M340.165,-512C352.3,-512 366.048,-512 378.674,-512"/>
-<polygon fill="#000000" stroke="#000000" points="378.956,-515.5 388.956,-512 378.956,-508.5 378.956,-515.5"/>
+<!-- dcos -->
+<g id="call~~graph~~CallGraph_node33" class="node"><title>dcos</title>
+<polygon fill="#777777" stroke="#777777" points="331.5,-398 277.5,-398 277.5,-374 331.5,-374 331.5,-398"/>
+<text text-anchor="middle" x="304.5" y="-383.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">dcos</text>
+</g>
+<!-- proc~gauleg&#45;&gt;dcos -->
+<g id="call~~graph~~CallGraph_edge4" class="edge"><title>proc~gauleg&#45;&gt;dcos</title>
+<path fill="none" stroke="#000000" d="M200.04,-386C219.455,-386 245.84,-386 267.104,-386"/>
+<polygon fill="#000000" stroke="#000000" points="267.385,-389.5 277.385,-386 267.385,-382.5 267.385,-389.5"/>
 </g>
 <!-- proc~dplgnd -->
-<g id="call~~graph~~CallGraph_node7" class="node"><title>proc~dplgnd</title>
-<g id="a_call~~graph~~CallGraph_node7"><a xlink:href=".././proc/dplgnd.html" xlink:title="DPLGND">
-<polygon fill="#d9534f" stroke="#d9534f" points="72,-339 16,-339 16,-315 72,-315 72,-339"/>
-<text text-anchor="middle" x="44" y="-324.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">DPLGND</text>
+<g id="call~~graph~~CallGraph_node9" class="node"><title>proc~dplgnd</title>
+<g id="a_call~~graph~~CallGraph_node9"><a xlink:href=".././proc/dplgnd.html" xlink:title="DPLGND">
+<polygon fill="#d9534f" stroke="#d9534f" points="72,-755 16,-755 16,-731 72,-731 72,-755"/>
+<text text-anchor="middle" x="44" y="-740.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">DPLGND</text>
 </a>
 </g>
 </g>
-<!-- proc~ia -->
-<g id="call~~graph~~CallGraph_node8" class="node"><title>proc~ia</title>
-<g id="a_call~~graph~~CallGraph_node8"><a xlink:href=".././proc/ia.html" xlink:title="IA">
-<polygon fill="#d94e8f" stroke="#d94e8f" points="71,-381 17,-381 17,-357 71,-357 71,-381"/>
-<text text-anchor="middle" x="44" y="-366.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">IA</text>
+<!-- proc~phgcut -->
+<g id="call~~graph~~CallGraph_node10" class="node"><title>proc~phgcut</title>
+<g id="a_call~~graph~~CallGraph_node10"><a xlink:href=".././proc/phgcut.html" xlink:title="PHGCUT">
+<polygon fill="#d9534f" stroke="#d9534f" points="200.5,-482 143.5,-482 143.5,-458 200.5,-458 200.5,-482"/>
+<text text-anchor="middle" x="172" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGCUT</text>
 </a>
 </g>
 </g>
-<!-- proc~vduvsub -->
-<g id="call~~graph~~CallGraph_node9" class="node"><title>proc~vduvsub</title>
-<g id="a_call~~graph~~CallGraph_node9"><a xlink:href=".././proc/vduvsub.html" xlink:title="VDUVSUB">
-<polygon fill="#d9534f" stroke="#d9534f" points="75,-423 13,-423 13,-399 75,-399 75,-423"/>
-<text text-anchor="middle" x="44" y="-408.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDUVSUB</text>
-</a>
-</g>
+<!-- proc~phgcut&#45;&gt;proc~phgpns -->
+<g id="call~~graph~~CallGraph_edge6" class="edge"><title>proc~phgcut&#45;&gt;proc~phgpns</title>
+<path fill="none" stroke="#000000" d="M200.676,-470C219.749,-470 245.32,-470 266.19,-470"/>
+<polygon fill="#000000" stroke="#000000" points="266.312,-473.5 276.312,-470 266.312,-466.5 266.312,-473.5"/>
 </g>
-<!-- proc~plgnfa -->
-<g id="call~~graph~~CallGraph_node10" class="node"><title>proc~plgnfa</title>
-<g id="a_call~~graph~~CallGraph_node10"><a xlink:href=".././proc/plgnfa.html" xlink:title="PLGNFA">
-<polygon fill="#d9534f" stroke="#d9534f" points="71.5,-465 16.5,-465 16.5,-441 71.5,-441 71.5,-465"/>
-<text text-anchor="middle" x="44" y="-450.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PLGNFA</text>
+<!-- proc~phsymcut -->
+<g id="call~~graph~~CallGraph_node11" class="node"><title>proc~phsymcut</title>
+<g id="a_call~~graph~~CallGraph_node11"><a xlink:href=".././proc/phsymcut.html" xlink:title="PHSYMCUT">
+<polygon fill="#d9534f" stroke="#d9534f" points="340,-524 269,-524 269,-500 340,-500 340,-524"/>
+<text text-anchor="middle" x="304.5" y="-509.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHSYMCUT</text>
 </a>
 </g>
 </g>
-<!-- proc~legtr -->
-<g id="call~~graph~~CallGraph_node11" class="node"><title>proc~legtr</title>
-<g id="a_call~~graph~~CallGraph_node11"><a xlink:href=".././proc/legtr.html" xlink:title="LEGTR">
-<polygon fill="#d9534f" stroke="#d9534f" points="71,-507 17,-507 17,-483 71,-483 71,-507"/>
-<text text-anchor="middle" x="44" y="-492.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">LEGTR</text>
-</a>
+<!-- proc~phgcut&#45;&gt;proc~phsymcut -->
+<g id="call~~graph~~CallGraph_edge5" class="edge"><title>proc~phgcut&#45;&gt;proc~phsymcut</title>
+<path fill="none" stroke="#000000" d="M200.676,-478.907C217.701,-484.387 239.904,-491.532 259.318,-497.781"/>
+<polygon fill="#000000" stroke="#000000" points="258.29,-501.126 268.882,-500.858 260.435,-494.463 258.29,-501.126"/>
 </g>
+<!-- proc~phsymcut&#45;&gt;proc~rfourtr -->
+<g id="call~~graph~~CallGraph_edge7" class="edge"><title>proc~phsymcut&#45;&gt;proc~rfourtr</title>
+<path fill="none" stroke="#000000" d="M338.311,-499.964C351.073,-495.283 365.83,-489.87 379.262,-484.943"/>
+<polygon fill="#000000" stroke="#000000" points="380.577,-488.189 388.76,-481.459 378.166,-481.617 380.577,-488.189"/>
 </g>
-<!-- proc~phgpns -->
-<g id="call~~graph~~CallGraph_node12" class="node"><title>proc~phgpns</title>
-<g id="a_call~~graph~~CallGraph_node12"><a xlink:href=".././proc/phgpns.html" xlink:title="PHGPNS">
-<polygon fill="#d9534f" stroke="#d9534f" points="332.5,-566 276.5,-566 276.5,-542 332.5,-542 332.5,-566"/>
-<text text-anchor="middle" x="304.5" y="-551.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGPNS</text>
+<!-- proc~rfouftr -->
+<g id="call~~graph~~CallGraph_node12" class="node"><title>proc~rfouftr</title>
+<g id="a_call~~graph~~CallGraph_node12"><a xlink:href=".././proc/rfouftr.html" xlink:title="RFOUFTR">
+<polygon fill="#d9534f" stroke="#d9534f" points="453,-440 389,-440 389,-416 453,-416 453,-440"/>
+<text text-anchor="middle" x="421" y="-425.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">RFOUFTR</text>
 </a>
 </g>
 </g>
-<!-- proc~phgpns&#45;&gt;proc~rfourtr -->
-<g id="call~~graph~~CallGraph_edge8" class="edge"><title>proc~phgpns&#45;&gt;proc~rfourtr</title>
-<path fill="none" stroke="#000000" d="M332.635,-544.047C346.414,-538.992 363.447,-532.744 378.803,-527.112"/>
-<polygon fill="#000000" stroke="#000000" points="380.418,-530.247 388.601,-523.517 378.008,-523.675 380.418,-530.247"/>
+<!-- fft99 -->
+<g id="call~~graph~~CallGraph_node31" class="node"><title>fft99</title>
+<polygon fill="#777777" stroke="#777777" points="543,-482 489,-482 489,-458 543,-458 543,-482"/>
+<text text-anchor="middle" x="516" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">fft99</text>
 </g>
-<!-- proc~rfourtr&#45;&gt;fft99 -->
-<g id="call~~graph~~CallGraph_edge9" class="edge"><title>proc~rfourtr&#45;&gt;fft99</title>
-<path fill="none" stroke="#000000" d="M453.226,-512C461.48,-512 470.455,-512 478.941,-512"/>
-<polygon fill="#000000" stroke="#000000" points="478.969,-515.5 488.969,-512 478.969,-508.5 478.969,-515.5"/>
+<!-- proc~rfouftr&#45;&gt;fft99 -->
+<g id="call~~graph~~CallGraph_edge9" class="edge"><title>proc~rfouftr&#45;&gt;fft99</title>
+<path fill="none" stroke="#000000" d="M448.899,-440.148C458.412,-444.444 469.265,-449.345 479.388,-453.917"/>
+<polygon fill="#000000" stroke="#000000" points="478.248,-457.243 488.802,-458.169 481.129,-450.863 478.248,-457.243"/>
 </g>
-<!-- proc~readspectral -->
-<g id="call~~graph~~CallGraph_node14" class="node"><title>proc~readspectral</title>
-<g id="a_call~~graph~~CallGraph_node14"><a xlink:href=".././proc/readspectral.html" xlink:title="READSPECTRAL">
-<polygon fill="#d9534f" stroke="#d9534f" points="220,-356 124,-356 124,-332 220,-332 220,-356"/>
-<text text-anchor="middle" x="172" y="-341.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READSPECTRAL</text>
-</a>
+<!-- wsave -->
+<g id="call~~graph~~CallGraph_node39" class="node"><title>wsave</title>
+<polygon fill="#777777" stroke="#777777" points="543,-440 489,-440 489,-416 543,-416 543,-440"/>
+<text text-anchor="middle" x="516" y="-425.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">wsave</text>
 </g>
+<!-- proc~rfouftr&#45;&gt;wsave -->
+<g id="call~~graph~~CallGraph_edge8" class="edge"><title>proc~rfouftr&#45;&gt;wsave</title>
+<path fill="none" stroke="#000000" d="M453.226,-428C461.48,-428 470.455,-428 478.941,-428"/>
+<polygon fill="#000000" stroke="#000000" points="478.969,-431.5 488.969,-428 478.969,-424.5 478.969,-431.5"/>
 </g>
-<!-- proc~readspectral&#45;&gt;grib_count_in_file -->
-<g id="call~~graph~~CallGraph_edge10" class="edge"><title>proc~readspectral&#45;&gt;grib_count_in_file</title>
-<path fill="none" stroke="#000000" d="M210.396,-356.036C224.73,-360.649 241.271,-365.972 256.399,-370.841"/>
-<polygon fill="#000000" stroke="#000000" points="255.507,-374.231 266.098,-373.963 257.652,-367.567 255.507,-374.231"/>
+<!-- proc~phsym -->
+<g id="call~~graph~~CallGraph_node13" class="node"><title>proc~phsym</title>
+<g id="a_call~~graph~~CallGraph_node13"><a xlink:href=".././proc/phsym.html" xlink:title="PHSYM">
+<polygon fill="#d9534f" stroke="#d9534f" points="331.5,-188 277.5,-188 277.5,-164 331.5,-164 331.5,-188"/>
+<text text-anchor="middle" x="304.5" y="-173.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHSYM</text>
+</a>
 </g>
-<!-- proc~readspectral&#45;&gt;grib_close_file -->
-<g id="call~~graph~~CallGraph_edge11" class="edge"><title>proc~readspectral&#45;&gt;grib_close_file</title>
-<path fill="none" stroke="#000000" d="M220.113,-344C230.957,-344 242.527,-344 253.49,-344"/>
-<polygon fill="#000000" stroke="#000000" points="253.77,-347.5 263.77,-344 253.77,-340.5 253.77,-347.5"/>
 </g>
-<!-- proc~writelatlon -->
-<g id="call~~graph~~CallGraph_node15" class="node"><title>proc~writelatlon</title>
-<g id="a_call~~graph~~CallGraph_node15"><a xlink:href=".././proc/writelatlon.html" xlink:title="WRITELATLON">
-<polygon fill="#d9534f" stroke="#d9534f" points="88,-549 7.10543e-15,-549 7.10543e-15,-525 88,-525 88,-549"/>
-<text text-anchor="middle" x="44" y="-534.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">WRITELATLON</text>
+<!-- proc~readlatlon -->
+<g id="call~~graph~~CallGraph_node14" class="node"><title>proc~readlatlon</title>
+<g id="a_call~~graph~~CallGraph_node14"><a xlink:href=".././proc/readlatlon.html" xlink:title="READLATLON">
+<polygon fill="#d9534f" stroke="#d9534f" points="213,-356 131,-356 131,-332 213,-332 213,-356"/>
+<text text-anchor="middle" x="172" y="-341.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READLATLON</text>
 </a>
 </g>
 </g>
-<!-- grib_set -->
-<g id="call~~graph~~CallGraph_node32" class="node"><title>grib_set</title>
-<polygon fill="#777777" stroke="#777777" points="199,-579 145,-579 145,-555 199,-555 199,-579"/>
-<text text-anchor="middle" x="172" y="-564.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_set</text>
+<!-- grib_count_in_file -->
+<g id="call~~graph~~CallGraph_node34" class="node"><title>grib_count_in_file</title>
+<polygon fill="#777777" stroke="#777777" points="353,-356 256,-356 256,-332 353,-332 353,-356"/>
+<text text-anchor="middle" x="304.5" y="-341.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_count_in_file</text>
 </g>
-<!-- proc~writelatlon&#45;&gt;grib_set -->
-<g id="call~~graph~~CallGraph_edge13" class="edge"><title>proc~writelatlon&#45;&gt;grib_set</title>
-<path fill="none" stroke="#000000" d="M88.0096,-547.24C103.155,-550.846 120.019,-554.862 134.569,-558.326"/>
-<polygon fill="#000000" stroke="#000000" points="134.158,-561.826 144.697,-560.737 135.779,-555.016 134.158,-561.826"/>
+<!-- proc~readlatlon&#45;&gt;grib_count_in_file -->
+<g id="call~~graph~~CallGraph_edge10" class="edge"><title>proc~readlatlon&#45;&gt;grib_count_in_file</title>
+<path fill="none" stroke="#000000" d="M213.219,-344C223.435,-344 234.615,-344 245.521,-344"/>
+<polygon fill="#000000" stroke="#000000" points="245.853,-347.5 255.853,-344 245.853,-340.5 245.853,-347.5"/>
 </g>
-<!-- grib_write -->
-<g id="call~~graph~~CallGraph_node35" class="node"><title>grib_write</title>
-<polygon fill="#777777" stroke="#777777" points="201.5,-537 142.5,-537 142.5,-513 201.5,-513 201.5,-537"/>
-<text text-anchor="middle" x="172" y="-522.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_write</text>
+<!-- grib_close_file -->
+<g id="call~~graph~~CallGraph_node40" class="node"><title>grib_close_file</title>
+<polygon fill="#777777" stroke="#777777" points="345,-314 264,-314 264,-290 345,-290 345,-314"/>
+<text text-anchor="middle" x="304.5" y="-299.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">grib_close_file</text>
 </g>
-<!-- proc~writelatlon&#45;&gt;grib_write -->
-<g id="call~~graph~~CallGraph_edge12" class="edge"><title>proc~writelatlon&#45;&gt;grib_write</title>
-<path fill="none" stroke="#000000" d="M88.0096,-532.904C102.326,-531.54 118.179,-530.031 132.16,-528.699"/>
-<polygon fill="#000000" stroke="#000000" points="132.808,-532.153 142.431,-527.721 132.144,-525.185 132.808,-532.153"/>
+<!-- proc~readlatlon&#45;&gt;grib_close_file -->
+<g id="call~~graph~~CallGraph_edge11" class="edge"><title>proc~readlatlon&#45;&gt;grib_close_file</title>
+<path fill="none" stroke="#000000" d="M210.396,-331.964C224.73,-327.351 241.271,-322.028 256.399,-317.159"/>
+<polygon fill="#000000" stroke="#000000" points="257.652,-320.433 266.098,-314.037 255.507,-313.769 257.652,-320.433"/>
 </g>
-<!-- proc~omega -->
-<g id="call~~graph~~CallGraph_node16" class="node"><title>proc~omega</title>
-<g id="a_call~~graph~~CallGraph_node16"><a xlink:href=".././proc/omega.html" xlink:title="OMEGA">
-<polygon fill="#d9534f" stroke="#d9534f" points="71,-591 17,-591 17,-567 71,-567 71,-591"/>
-<text text-anchor="middle" x="44" y="-576.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">OMEGA</text>
+<!-- proc~vdtouv -->
+<g id="call~~graph~~CallGraph_node15" class="node"><title>proc~vdtouv</title>
+<g id="a_call~~graph~~CallGraph_node15"><a xlink:href=".././proc/vdtouv.html" xlink:title="VDTOUV">
+<polygon fill="#d9534f" stroke="#d9534f" points="72,-797 16,-797 16,-773 72,-773 72,-797"/>
+<text text-anchor="middle" x="44" y="-782.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDTOUV</text>
 </a>
 </g>
 </g>
-<!-- proc~statis -->
-<g id="call~~graph~~CallGraph_node17" class="node"><title>proc~statis</title>
-<g id="a_call~~graph~~CallGraph_node17"><a xlink:href=".././proc/statis.html" xlink:title="STATIS">
-<polygon fill="#d9534f" stroke="#d9534f" points="199,-276 145,-276 145,-252 199,-252 199,-276"/>
-<text text-anchor="middle" x="172" y="-261.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">STATIS</text>
+<!-- proc~legtr -->
+<g id="call~~graph~~CallGraph_node16" class="node"><title>proc~legtr</title>
+<g id="a_call~~graph~~CallGraph_node16"><a xlink:href=".././proc/legtr.html" xlink:title="LEGTR">
+<polygon fill="#d9534f" stroke="#d9534f" points="71,-839 17,-839 17,-815 71,-815 71,-839"/>
+<text text-anchor="middle" x="44" y="-824.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">LEGTR</text>
 </a>
 </g>
 </g>
-<!-- proc~vdtouv -->
-<g id="call~~graph~~CallGraph_node18" class="node"><title>proc~vdtouv</title>
-<g id="a_call~~graph~~CallGraph_node18"><a xlink:href=".././proc/vdtouv.html" xlink:title="VDTOUV">
-<polygon fill="#d9534f" stroke="#d9534f" points="72,-633 16,-633 16,-609 72,-609 72,-633"/>
-<text text-anchor="middle" x="44" y="-618.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDTOUV</text>
+<!-- proc~phgracut -->
+<g id="call~~graph~~CallGraph_node17" class="node"><title>proc~phgracut</title>
+<g id="a_call~~graph~~CallGraph_node17"><a xlink:href=".././proc/phgracut.html" xlink:title="PHGRACUT">
+<polygon fill="#d9534f" stroke="#d9534f" points="340,-440 269,-440 269,-416 340,-416 340,-440"/>
+<text text-anchor="middle" x="304.5" y="-425.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRACUT</text>
 </a>
 </g>
 </g>
-<!-- proc~spfilter -->
-<g id="call~~graph~~CallGraph_node19" class="node"><title>proc~spfilter</title>
-<g id="a_call~~graph~~CallGraph_node19"><a xlink:href=".././proc/spfilter.html" xlink:title="SPFILTER">
-<polygon fill="#d9534f" stroke="#d9534f" points="75.5,-675 12.5,-675 12.5,-651 75.5,-651 75.5,-675"/>
-<text text-anchor="middle" x="44" y="-660.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">SPFILTER</text>
+<!-- proc~phgracut&#45;&gt;proc~rfourtr -->
+<g id="call~~graph~~CallGraph_edge12" class="edge"><title>proc~phgracut&#45;&gt;proc~rfourtr</title>
+<path fill="none" stroke="#000000" d="M338.311,-440.036C351.073,-444.717 365.83,-450.13 379.262,-455.057"/>
+<polygon fill="#000000" stroke="#000000" points="378.166,-458.383 388.76,-458.541 380.577,-451.811 378.166,-458.383"/>
+</g>
+<!-- proc~grph213 -->
+<g id="call~~graph~~CallGraph_node18" class="node"><title>proc~grph213</title>
+<g id="a_call~~graph~~CallGraph_node18"><a xlink:href=".././proc/grph213.html" xlink:title="GRPH213">
+<polygon fill="#d9534f" stroke="#d9534f" points="202.5,-234 141.5,-234 141.5,-210 202.5,-210 202.5,-234"/>
+<text text-anchor="middle" x="172" y="-219.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GRPH213</text>
 </a>
 </g>
 </g>
-<!-- float -->
-<g id="call~~graph~~CallGraph_node29" class="node"><title>float</title>
-<polygon fill="#777777" stroke="#777777" points="199,-696 145,-696 145,-672 199,-672 199,-696"/>
-<text text-anchor="middle" x="172" y="-681.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">float</text>
+<!-- proc~grphsub -->
+<g id="call~~graph~~CallGraph_node19" class="node"><title>proc~grphsub</title>
+<g id="a_call~~graph~~CallGraph_node19"><a xlink:href=".././proc/grphsub.html" xlink:title="GRPHSUB">
+<polygon fill="#d9534f" stroke="#d9534f" points="336.5,-230 272.5,-230 272.5,-206 336.5,-206 336.5,-230"/>
+<text text-anchor="middle" x="304.5" y="-215.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GRPHSUB</text>
+</a>
 </g>
-<!-- proc~spfilter&#45;&gt;float -->
-<g id="call~~graph~~CallGraph_edge14" class="edge"><title>proc~spfilter&#45;&gt;float</title>
-<path fill="none" stroke="#000000" d="M75.5011,-668.084C93.3222,-671.054 115.921,-674.82 134.661,-677.943"/>
-<polygon fill="#000000" stroke="#000000" points="134.18,-681.412 144.62,-679.603 135.331,-674.507 134.18,-681.412"/>
 </g>
-<!-- alog -->
-<g id="call~~graph~~CallGraph_node37" class="node"><title>alog</title>
-<polygon fill="#777777" stroke="#777777" points="199,-654 145,-654 145,-630 199,-630 199,-654"/>
-<text text-anchor="middle" x="172" y="-639.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">alog</text>
+<!-- proc~grph213&#45;&gt;proc~grphsub -->
+<g id="call~~graph~~CallGraph_edge14" class="edge"><title>proc~grph213&#45;&gt;proc~grphsub</title>
+<path fill="none" stroke="#000000" d="M202.612,-221.092C220.206,-220.553 242.786,-219.861 262.122,-219.268"/>
+<polygon fill="#000000" stroke="#000000" points="262.297,-222.765 272.185,-218.96 262.082,-215.768 262.297,-222.765"/>
 </g>
-<!-- proc~spfilter&#45;&gt;alog -->
-<g id="call~~graph~~CallGraph_edge15" class="edge"><title>proc~spfilter&#45;&gt;alog</title>
-<path fill="none" stroke="#000000" d="M75.5011,-657.916C93.3222,-654.946 115.921,-651.18 134.661,-648.057"/>
-<polygon fill="#000000" stroke="#000000" points="135.331,-651.493 144.62,-646.397 134.18,-644.588 135.331,-651.493"/>
+<!-- ind -->
+<g id="call~~graph~~CallGraph_node30" class="node"><title>ind</title>
+<polygon fill="#777777" stroke="#777777" points="331.5,-272 277.5,-272 277.5,-248 331.5,-248 331.5,-272"/>
+<text text-anchor="middle" x="304.5" y="-257.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">ind</text>
 </g>
-<!-- proc~posnam -->
-<g id="call~~graph~~CallGraph_node20" class="node"><title>proc~posnam</title>
-<g id="a_call~~graph~~CallGraph_node20"><a xlink:href=".././proc/posnam.html" xlink:title="POSNAM">
-<polygon fill="#d9534f" stroke="#d9534f" points="201,-234 143,-234 143,-210 201,-210 201,-234"/>
-<text text-anchor="middle" x="172" y="-219.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">POSNAM</text>
+<!-- proc~grph213&#45;&gt;ind -->
+<g id="call~~graph~~CallGraph_edge13" class="edge"><title>proc~grph213&#45;&gt;ind</title>
+<path fill="none" stroke="#000000" d="M202.612,-230.623C221.783,-236.205 246.875,-243.512 267.239,-249.441"/>
+<polygon fill="#000000" stroke="#000000" points="266.524,-252.878 277.104,-252.314 268.481,-246.157 266.524,-252.878"/>
+</g>
+<!-- proc~readspectral -->
+<g id="call~~graph~~CallGraph_node20" class="node"><title>proc~readspectral</title>
+<g id="a_call~~graph~~CallGraph_node20"><a xlink:href=".././proc/readspectral.html" xlink:title="READSPECTRAL">
+<polygon fill="#d9534f" stroke="#d9534f" points="220,-314 124,-314 124,-290 220,-290 220,-314"/>
+<text text-anchor="middle" x="172" y="-299.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">READSPECTRAL</text>
 </a>
 </g>
 </g>
-<!-- proc~grphsub -->
-<g id="call~~graph~~CallGraph_node22" class="node"><title>proc~grphsub</title>
-<g id="a_call~~graph~~CallGraph_node22"><a xlink:href=".././proc/grphsub.html" xlink:title="GRPHSUB">
-<polygon fill="#d9534f" stroke="#d9534f" points="336.5,-108 272.5,-108 272.5,-84 336.5,-84 336.5,-108"/>
-<text text-anchor="middle" x="304.5" y="-93.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GRPHSUB</text>
-</a>
+<!-- proc~readspectral&#45;&gt;grib_count_in_file -->
+<g id="call~~graph~~CallGraph_edge15" class="edge"><title>proc~readspectral&#45;&gt;grib_count_in_file</title>
+<path fill="none" stroke="#000000" d="M210.396,-314.036C224.73,-318.649 241.271,-323.972 256.399,-328.841"/>
+<polygon fill="#000000" stroke="#000000" points="255.507,-332.231 266.098,-331.963 257.652,-325.567 255.507,-332.231"/>
 </g>
+<!-- proc~readspectral&#45;&gt;grib_close_file -->
+<g id="call~~graph~~CallGraph_edge16" class="edge"><title>proc~readspectral&#45;&gt;grib_close_file</title>
+<path fill="none" stroke="#000000" d="M220.113,-302C230.957,-302 242.527,-302 253.49,-302"/>
+<polygon fill="#000000" stroke="#000000" points="253.77,-305.5 263.77,-302 253.77,-298.5 253.77,-305.5"/>
 </g>
-<!-- proc~gauleg -->
-<g id="call~~graph~~CallGraph_node23" class="node"><title>proc~gauleg</title>
-<g id="a_call~~graph~~CallGraph_node23"><a xlink:href=".././proc/gauleg.html" xlink:title="GAULEG">
-<polygon fill="#d9534f" stroke="#d9534f" points="200,-192 144,-192 144,-168 200,-168 200,-192"/>
-<text text-anchor="middle" x="172" y="-177.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GAULEG</text>
+<!-- proc~phgr213 -->
+<g id="call~~graph~~CallGraph_node21" class="node"><title>proc~phgr213</title>
+<g id="a_call~~graph~~CallGraph_node21"><a xlink:href=".././proc/phgr213.html" xlink:title="PHGR213">
+<polygon fill="#d9534f" stroke="#d9534f" points="202.5,-192 141.5,-192 141.5,-168 202.5,-168 202.5,-192"/>
+<text text-anchor="middle" x="172" y="-177.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGR213</text>
 </a>
 </g>
 </g>
-<!-- dcos -->
-<g id="call~~graph~~CallGraph_node33" class="node"><title>dcos</title>
-<polygon fill="#777777" stroke="#777777" points="331.5,-192 277.5,-192 277.5,-168 331.5,-168 331.5,-192"/>
-<text text-anchor="middle" x="304.5" y="-177.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">dcos</text>
+<!-- proc~phgr213&#45;&gt;proc~phsym -->
+<g id="call~~graph~~CallGraph_edge17" class="edge"><title>proc~phgr213&#45;&gt;proc~phsym</title>
+<path fill="none" stroke="#000000" d="M202.612,-179.092C221.696,-178.507 246.646,-177.743 266.959,-177.12"/>
+<polygon fill="#000000" stroke="#000000" points="267.216,-180.614 277.104,-176.809 267.001,-173.617 267.216,-180.614"/>
 </g>
-<!-- proc~gauleg&#45;&gt;dcos -->
-<g id="call~~graph~~CallGraph_edge16" class="edge"><title>proc~gauleg&#45;&gt;dcos</title>
-<path fill="none" stroke="#000000" d="M200.04,-180C219.455,-180 245.84,-180 267.104,-180"/>
-<polygon fill="#000000" stroke="#000000" points="267.385,-183.5 277.385,-180 267.385,-176.5 267.385,-183.5"/>
+<!-- proc~phgrad -->
+<g id="call~~graph~~CallGraph_node22" class="node"><title>proc~phgrad</title>
+<g id="a_call~~graph~~CallGraph_node22"><a xlink:href=".././proc/phgrad.html" xlink:title="PHGRAD">
+<polygon fill="#d9534f" stroke="#d9534f" points="200.5,-150 143.5,-150 143.5,-126 200.5,-126 200.5,-150"/>
+<text text-anchor="middle" x="172" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRAD</text>
+</a>
 </g>
-<!-- proc~grph213 -->
-<g id="call~~graph~~CallGraph_node24" class="node"><title>proc~grph213</title>
-<g id="a_call~~graph~~CallGraph_node24"><a xlink:href=".././proc/grph213.html" xlink:title="GRPH213">
-<polygon fill="#d9534f" stroke="#d9534f" points="202.5,-150 141.5,-150 141.5,-126 202.5,-126 202.5,-150"/>
-<text text-anchor="middle" x="172" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">GRPH213</text>
+</g>
+<!-- proc~spfilter -->
+<g id="call~~graph~~CallGraph_node23" class="node"><title>proc~spfilter</title>
+<g id="a_call~~graph~~CallGraph_node23"><a xlink:href=".././proc/spfilter.html" xlink:title="SPFILTER">
+<polygon fill="#d9534f" stroke="#d9534f" points="75.5,-881 12.5,-881 12.5,-857 75.5,-857 75.5,-881"/>
+<text text-anchor="middle" x="44" y="-866.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">SPFILTER</text>
 </a>
 </g>
 </g>
-<!-- proc~grph213&#45;&gt;proc~grphsub -->
-<g id="call~~graph~~CallGraph_edge18" class="edge"><title>proc~grph213&#45;&gt;proc~grphsub</title>
-<path fill="none" stroke="#000000" d="M202.612,-128.47C220.368,-122.755 243.203,-115.406 262.656,-109.145"/>
-<polygon fill="#000000" stroke="#000000" points="263.738,-112.474 272.185,-106.078 261.593,-105.81 263.738,-112.474"/>
+<!-- float -->
+<g id="call~~graph~~CallGraph_node29" class="node"><title>float</title>
+<polygon fill="#777777" stroke="#777777" points="199,-902 145,-902 145,-878 199,-878 199,-902"/>
+<text text-anchor="middle" x="172" y="-887.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">float</text>
 </g>
-<!-- ind -->
-<g id="call~~graph~~CallGraph_node30" class="node"><title>ind</title>
-<polygon fill="#777777" stroke="#777777" points="331.5,-150 277.5,-150 277.5,-126 331.5,-126 331.5,-150"/>
-<text text-anchor="middle" x="304.5" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">ind</text>
+<!-- proc~spfilter&#45;&gt;float -->
+<g id="call~~graph~~CallGraph_edge18" class="edge"><title>proc~spfilter&#45;&gt;float</title>
+<path fill="none" stroke="#000000" d="M75.5011,-874.084C93.3222,-877.054 115.921,-880.82 134.661,-883.943"/>
+<polygon fill="#000000" stroke="#000000" points="134.18,-887.412 144.62,-885.603 135.331,-880.507 134.18,-887.412"/>
 </g>
-<!-- proc~grph213&#45;&gt;ind -->
-<g id="call~~graph~~CallGraph_edge17" class="edge"><title>proc~grph213&#45;&gt;ind</title>
-<path fill="none" stroke="#000000" d="M202.612,-138C221.696,-138 246.646,-138 266.959,-138"/>
-<polygon fill="#000000" stroke="#000000" points="267.104,-141.5 277.104,-138 267.104,-134.5 267.104,-141.5"/>
+<!-- alog -->
+<g id="call~~graph~~CallGraph_node37" class="node"><title>alog</title>
+<polygon fill="#777777" stroke="#777777" points="199,-860 145,-860 145,-836 199,-836 199,-860"/>
+<text text-anchor="middle" x="172" y="-845.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">alog</text>
 </g>
-<!-- proc~phgrad -->
-<g id="call~~graph~~CallGraph_node25" class="node"><title>proc~phgrad</title>
-<g id="a_call~~graph~~CallGraph_node25"><a xlink:href=".././proc/phgrad.html" xlink:title="PHGRAD">
-<polygon fill="#d9534f" stroke="#d9534f" points="200.5,-108 143.5,-108 143.5,-84 200.5,-84 200.5,-108"/>
-<text text-anchor="middle" x="172" y="-93.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGRAD</text>
-</a>
+<!-- proc~spfilter&#45;&gt;alog -->
+<g id="call~~graph~~CallGraph_edge19" class="edge"><title>proc~spfilter&#45;&gt;alog</title>
+<path fill="none" stroke="#000000" d="M75.5011,-863.916C93.3222,-860.946 115.921,-857.18 134.661,-854.057"/>
+<polygon fill="#000000" stroke="#000000" points="135.331,-857.493 144.62,-852.397 134.18,-850.588 135.331,-857.493"/>
 </g>
+<!-- proc~rfourtr&#45;&gt;fft99 -->
+<g id="call~~graph~~CallGraph_edge20" class="edge"><title>proc~rfourtr&#45;&gt;fft99</title>
+<path fill="none" stroke="#000000" d="M453.226,-470C461.48,-470 470.455,-470 478.941,-470"/>
+<polygon fill="#000000" stroke="#000000" points="478.969,-473.5 488.969,-470 478.969,-466.5 478.969,-473.5"/>
 </g>
-<!-- proc~phgcut -->
-<g id="call~~graph~~CallGraph_node26" class="node"><title>proc~phgcut</title>
-<g id="a_call~~graph~~CallGraph_node26"><a xlink:href=".././proc/phgcut.html" xlink:title="PHGCUT">
-<polygon fill="#d9534f" stroke="#d9534f" points="200.5,-482 143.5,-482 143.5,-458 200.5,-458 200.5,-482"/>
-<text text-anchor="middle" x="172" y="-467.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">PHGCUT</text>
+<!-- proc~ia -->
+<g id="call~~graph~~CallGraph_node25" class="node"><title>proc~ia</title>
+<g id="a_call~~graph~~CallGraph_node25"><a xlink:href=".././proc/ia.html" xlink:title="IA">
+<polygon fill="#d94e8f" stroke="#d94e8f" points="71,-923 17,-923 17,-899 71,-899 71,-923"/>
+<text text-anchor="middle" x="44" y="-908.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">IA</text>
 </a>
 </g>
 </g>
-<!-- proc~phgcut&#45;&gt;proc~phsymcut -->
-<g id="call~~graph~~CallGraph_edge19" class="edge"><title>proc~phgcut&#45;&gt;proc~phsymcut</title>
-<path fill="none" stroke="#000000" d="M200.676,-470C217.546,-470 239.498,-470 258.786,-470"/>
-<polygon fill="#000000" stroke="#000000" points="258.882,-473.5 268.882,-470 258.882,-466.5 258.882,-473.5"/>
+<!-- proc~statis -->
+<g id="call~~graph~~CallGraph_node26" class="node"><title>proc~statis</title>
+<g id="a_call~~graph~~CallGraph_node26"><a xlink:href=".././proc/statis.html" xlink:title="STATIS">
+<polygon fill="#d9534f" stroke="#d9534f" points="199,-108 145,-108 145,-84 199,-84 199,-108"/>
+<text text-anchor="middle" x="172" y="-93.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">STATIS</text>
+</a>
 </g>
-<!-- proc~phgcut&#45;&gt;proc~phgpns -->
-<g id="call~~graph~~CallGraph_edge20" class="edge"><title>proc~phgcut&#45;&gt;proc~phgpns</title>
-<path fill="none" stroke="#000000" d="M190.125,-482.065C199.103,-488.472 210.235,-496.543 220,-504 236.329,-516.47 238.454,-522.31 256,-533 259.453,-535.104 263.154,-537.115 266.91,-539.001"/>
-<polygon fill="#000000" stroke="#000000" points="265.712,-542.307 276.249,-543.415 268.703,-535.978 265.712,-542.307"/>
 </g>
-<!-- proc~lgtr213 -->
-<g id="call~~graph~~CallGraph_node27" class="node"><title>proc~lgtr213</title>
-<g id="a_call~~graph~~CallGraph_node27"><a xlink:href=".././proc/lgtr213.html" xlink:title="LGTR213">
-<polygon fill="#d9534f" stroke="#d9534f" points="73.5,-717 14.5,-717 14.5,-693 73.5,-693 73.5,-717"/>
-<text text-anchor="middle" x="44" y="-702.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">LGTR213</text>
+<!-- proc~vduvsub -->
+<g id="call~~graph~~CallGraph_node27" class="node"><title>proc~vduvsub</title>
+<g id="a_call~~graph~~CallGraph_node27"><a xlink:href=".././proc/vduvsub.html" xlink:title="VDUVSUB">
+<polygon fill="#d9534f" stroke="#d9534f" points="75,-965 13,-965 13,-941 75,-941 75,-965"/>
+<text text-anchor="middle" x="44" y="-950.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">VDUVSUB</text>
 </a>
 </g>
 </g>
 <!-- program~calc_etadot -->
 <g id="call~~graph~~CallGraph_node28" class="node"><title>program~calc_etadot</title>
 <g id="a_call~~graph~~CallGraph_node28"><a xlink:href=".././program/calc_etadot.html" xlink:title="calc_etadot">
-<polygon fill="#f0ad4e" stroke="#f0ad4e" points="77.5,-255 10.5,-255 10.5,-231 77.5,-231 77.5,-255"/>
-<text text-anchor="middle" x="44" y="-240.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">calc_etadot</text>
+<polygon fill="#f0ad4e" stroke="#f0ad4e" points="77.5,-254 10.5,-254 10.5,-230 77.5,-230 77.5,-254"/>
+<text text-anchor="middle" x="44" y="-239.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">calc_etadot</text>
 </a>
 </g>
 </g>
-<!-- program~calc_etadot&#45;&gt;proc~phgr213 -->
-<g id="call~~graph~~CallGraph_edge25" class="edge"><title>program~calc_etadot&#45;&gt;proc~phgr213</title>
-<path fill="none" stroke="#000000" d="M77.788,-255.083C81.6263,-257.567 85.1736,-260.516 88,-264 129.29,-314.897 81.8485,-356.815 124,-407 126.443,-409.908 129.37,-412.43 132.553,-414.613"/>
-<polygon fill="#000000" stroke="#000000" points="130.995,-417.753 141.421,-419.634 134.444,-411.661 130.995,-417.753"/>
-</g>
-<!-- program~calc_etadot&#45;&gt;proc~readlatlon -->
-<g id="call~~graph~~CallGraph_edge31" class="edge"><title>program~calc_etadot&#45;&gt;proc~readlatlon</title>
-<path fill="none" stroke="#000000" d="M77.0499,-255.074C81.0976,-257.575 84.8993,-260.531 88,-264 119.76,-299.529 91.6387,-330.018 124,-365 124.888,-365.959 125.827,-366.878 126.81,-367.757"/>
-<polygon fill="#000000" stroke="#000000" points="124.897,-370.693 135.042,-373.746 129.015,-365.033 124.897,-370.693"/>
-</g>
-<!-- program~calc_etadot&#45;&gt;proc~readspectral -->
-<g id="call~~graph~~CallGraph_edge21" class="edge"><title>program~calc_etadot&#45;&gt;proc~readspectral</title>
-<path fill="none" stroke="#000000" d="M74.975,-255.06C79.6011,-257.629 84.1226,-260.609 88,-264 109.713,-282.988 102.778,-298.465 124,-318 127.332,-321.067 131.091,-323.906 134.995,-326.493"/>
-<polygon fill="#000000" stroke="#000000" points="133.298,-329.557 143.665,-331.745 136.925,-323.57 133.298,-329.557"/>
-</g>
-<!-- program~calc_etadot&#45;&gt;proc~statis -->
-<g id="call~~graph~~CallGraph_edge24" class="edge"><title>program~calc_etadot&#45;&gt;proc~statis</title>
-<path fill="none" stroke="#000000" d="M77.7761,-248.463C95.2088,-251.368 116.688,-254.948 134.633,-257.939"/>
-<polygon fill="#000000" stroke="#000000" points="134.294,-261.431 144.734,-259.622 135.445,-254.526 134.294,-261.431"/>
-</g>
 <!-- program~calc_etadot&#45;&gt;proc~posnam -->
 <g id="call~~graph~~CallGraph_edge30" class="edge"><title>program~calc_etadot&#45;&gt;proc~posnam</title>
-<path fill="none" stroke="#000000" d="M77.7761,-237.537C94.5993,-234.733 115.191,-231.302 132.738,-228.377"/>
-<polygon fill="#000000" stroke="#000000" points="133.378,-231.819 142.667,-226.722 132.227,-224.914 133.378,-231.819"/>
+<path fill="none" stroke="#000000" d="M47.7094,-254.062C54.979,-283.858 77.5871,-361.794 124,-407 126.871,-409.796 130.178,-412.257 133.681,-414.415"/>
+<polygon fill="#000000" stroke="#000000" points="132.178,-417.58 142.653,-419.17 135.457,-411.395 132.178,-417.58"/>
 </g>
 <!-- program~calc_etadot&#45;&gt;proc~gauleg -->
 <g id="call~~graph~~CallGraph_edge26" class="edge"><title>program~calc_etadot&#45;&gt;proc~gauleg</title>
-<path fill="none" stroke="#000000" d="M66.9259,-230.824C82.6657,-222.212 104.461,-210.545 124,-201 127.328,-199.374 130.809,-197.725 134.308,-196.102"/>
-<polygon fill="#000000" stroke="#000000" points="135.87,-199.236 143.515,-191.901 132.965,-192.868 135.87,-199.236"/>
+<path fill="none" stroke="#000000" d="M49.9261,-254.128C60.2776,-278.259 86.47,-332.74 124,-365 127.202,-367.753 130.824,-370.205 134.6,-372.373"/>
+<polygon fill="#000000" stroke="#000000" points="133.069,-375.521 143.57,-376.926 136.237,-369.279 133.069,-375.521"/>
+</g>
+<!-- program~calc_etadot&#45;&gt;proc~phgcut -->
+<g id="call~~graph~~CallGraph_edge22" class="edge"><title>program~calc_etadot&#45;&gt;proc~phgcut</title>
+<path fill="none" stroke="#000000" d="M46.4244,-254.464C51.06,-289.585 68.7558,-390.595 124,-449 126.971,-452.141 130.497,-454.845 134.263,-457.164"/>
+<polygon fill="#000000" stroke="#000000" points="132.852,-460.376 143.336,-461.905 136.094,-454.172 132.852,-460.376"/>
+</g>
+<!-- program~calc_etadot&#45;&gt;proc~readlatlon -->
+<g id="call~~graph~~CallGraph_edge31" class="edge"><title>program~calc_etadot&#45;&gt;proc~readlatlon</title>
+<path fill="none" stroke="#000000" d="M54.3146,-254.116C68.0277,-271.298 95.1606,-302.884 124,-323 125.906,-324.329 127.909,-325.605 129.971,-326.825"/>
+<polygon fill="#000000" stroke="#000000" points="128.793,-330.164 139.26,-331.803 132.1,-323.995 128.793,-330.164"/>
 </g>
 <!-- program~calc_etadot&#45;&gt;proc~grph213 -->
 <g id="call~~graph~~CallGraph_edge23" class="edge"><title>program~calc_etadot&#45;&gt;proc~grph213</title>
-<path fill="none" stroke="#000000" d="M53.989,-230.707C67.5067,-212.928 94.6326,-179.883 124,-159 126.54,-157.194 129.26,-155.49 132.065,-153.894"/>
-<polygon fill="#000000" stroke="#000000" points="133.917,-156.876 141.189,-149.172 130.7,-150.66 133.917,-156.876"/>
+<path fill="none" stroke="#000000" d="M77.7761,-236.797C94.0798,-234.21 113.923,-231.06 131.104,-228.333"/>
+<polygon fill="#000000" stroke="#000000" points="132.075,-231.722 141.403,-226.698 130.978,-224.809 132.075,-231.722"/>
+</g>
+<!-- program~calc_etadot&#45;&gt;proc~readspectral -->
+<g id="call~~graph~~CallGraph_edge21" class="edge"><title>program~calc_etadot&#45;&gt;proc~readspectral</title>
+<path fill="none" stroke="#000000" d="M70.498,-254.142C89.4551,-263.169 115.535,-275.588 136.377,-285.513"/>
+<polygon fill="#000000" stroke="#000000" points="135.007,-288.737 145.54,-289.876 138.016,-282.417 135.007,-288.737"/>
+</g>
+<!-- program~calc_etadot&#45;&gt;proc~phgr213 -->
+<g id="call~~graph~~CallGraph_edge25" class="edge"><title>program~calc_etadot&#45;&gt;proc~phgr213</title>
+<path fill="none" stroke="#000000" d="M67.2982,-229.984C83.0266,-221.618 104.654,-210.332 124,-201 127.154,-199.478 130.444,-197.93 133.755,-196.4"/>
+<polygon fill="#000000" stroke="#000000" points="135.392,-199.5 143.041,-192.17 132.49,-193.13 135.392,-199.5"/>
 </g>
 <!-- program~calc_etadot&#45;&gt;proc~phgrad -->
 <g id="call~~graph~~CallGraph_edge29" class="edge"><title>program~calc_etadot&#45;&gt;proc~phgrad</title>
-<path fill="none" stroke="#000000" d="M49.6902,-230.951C59.7874,-206.42 85.8043,-150.196 124,-117 127.025,-114.371 130.432,-112.019 133.995,-109.927"/>
-<polygon fill="#000000" stroke="#000000" points="135.764,-112.952 143.043,-105.254 132.552,-106.733 135.764,-112.952"/>
+<path fill="none" stroke="#000000" d="M54.0216,-229.861C67.5798,-212.303 94.7557,-179.664 124,-159 127.102,-156.808 130.469,-154.765 133.929,-152.882"/>
+<polygon fill="#000000" stroke="#000000" points="135.787,-155.867 143.181,-148.279 132.668,-149.6 135.787,-155.867"/>
 </g>
-<!-- program~calc_etadot&#45;&gt;proc~phgcut -->
-<g id="call~~graph~~CallGraph_edge22" class="edge"><title>program~calc_etadot&#45;&gt;proc~phgcut</title>
-<path fill="none" stroke="#000000" d="M77.5424,-254.666C81.5179,-257.227 85.1683,-260.309 88,-264 138.982,-330.463 71.8918,-383.416 124,-449 126.828,-452.56 130.389,-455.534 134.279,-458.015"/>
-<polygon fill="#000000" stroke="#000000" points="132.685,-461.132 143.164,-462.694 135.947,-454.938 132.685,-461.132"/>
+<!-- program~calc_etadot&#45;&gt;proc~statis -->
+<g id="call~~graph~~CallGraph_edge24" class="edge"><title>program~calc_etadot&#45;&gt;proc~statis</title>
+<path fill="none" stroke="#000000" d="M49.8727,-229.673C60.1282,-205.144 86.1565,-149.771 124,-117 127.437,-114.024 131.364,-111.401 135.451,-109.109"/>
+<polygon fill="#000000" stroke="#000000" points="137.12,-112.188 144.524,-104.61 134.01,-105.916 137.12,-112.188"/>
 </g>
 <!-- set99 -->
 <g id="call~~graph~~CallGraph_node36" class="node"><title>set99</title>
@@ -630,8 +627,8 @@ All Procedures &ndash; Flex_extract: Calculation of etadot
 </g>
 <!-- program~calc_etadot&#45;&gt;set99 -->
 <g id="call~~graph~~CallGraph_edge28" class="edge"><title>program~calc_etadot&#45;&gt;set99</title>
-<path fill="none" stroke="#000000" d="M47.6442,-230.72C54.7648,-200.385 77.0598,-121.04 124,-75 127.32,-71.7438 131.232,-68.9438 135.358,-66.549"/>
-<polygon fill="#000000" stroke="#000000" points="137.208,-69.5371 144.586,-61.9338 134.077,-63.2764 137.208,-69.5371"/>
+<path fill="none" stroke="#000000" d="M47.6659,-229.792C54.8362,-199.637 77.2357,-120.762 124,-75 127.324,-71.7477 131.238,-68.9499 135.365,-66.5563"/>
+<polygon fill="#000000" stroke="#000000" points="137.215,-69.5445 144.594,-61.9421 134.085,-63.2833 137.215,-69.5445"/>
 </g>
 <!-- grib_open_file -->
 <g id="call~~graph~~CallGraph_node38" class="node"><title>grib_open_file</title>
@@ -640,13 +637,13 @@ All Procedures &ndash; Flex_extract: Calculation of etadot
 </g>
 <!-- program~calc_etadot&#45;&gt;grib_open_file -->
 <g id="call~~graph~~CallGraph_edge27" class="edge"><title>program~calc_etadot&#45;&gt;grib_open_file</title>
-<path fill="none" stroke="#000000" d="M46.3044,-230.865C50.6899,-195.717 67.9305,-92.5616 124,-33 125.034,-31.9019 126.135,-30.8573 127.292,-29.8639"/>
-<polygon fill="#000000" stroke="#000000" points="129.414,-32.65 135.57,-24.0274 125.381,-26.9289 129.414,-32.65"/>
+<path fill="none" stroke="#000000" d="M46.3226,-229.922C50.7572,-194.939 68.1176,-92.2692 124,-33 125.035,-31.9027 126.137,-30.8588 127.294,-29.866"/>
+<polygon fill="#000000" stroke="#000000" points="129.416,-32.6525 135.576,-24.0322 125.385,-26.9298 129.416,-32.6525"/>
 </g>
 <!-- program~calc_etadot&#45;&gt;grib_close_file -->
 <g id="call~~graph~~CallGraph_edge32" class="edge"><title>program~calc_etadot&#45;&gt;grib_close_file</title>
-<path fill="none" stroke="#000000" d="M70.6232,-255.129C76.3808,-257.961 82.4324,-261.022 88,-264 104.333,-272.737 107.108,-277.399 124,-285 166.52,-304.132 217.158,-320.207 253.793,-330.722"/>
-<polygon fill="#000000" stroke="#000000" points="253.16,-334.18 263.736,-333.538 255.068,-327.445 253.16,-334.18"/>
+<path fill="none" stroke="#000000" d="M77.6363,-248.996C112.831,-256.606 170.48,-269.257 220,-281 230.913,-283.588 242.602,-286.463 253.674,-289.234"/>
+<polygon fill="#000000" stroke="#000000" points="253.078,-292.693 263.63,-291.739 254.786,-285.904 253.078,-292.693"/>
 </g>
 </g>
 </svg>
@@ -711,8 +708,8 @@ All Procedures &ndash; Flex_extract: Calculation of etadot
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/media/tipuesearch/tipuesearch_content.js b/Documentation/html/Documentation/Api/Fortran/media/tipuesearch/tipuesearch_content.js
index db1f3534ffa2746682897995953b4028afe1c0e9..88640d52abab64f83affdc1e19461ee708195cfa 100644
--- a/Documentation/html/Documentation/Api/Fortran/media/tipuesearch/tipuesearch_content.js
+++ b/Documentation/html/Documentation/Api/Fortran/media/tipuesearch/tipuesearch_content.js
@@ -1 +1 @@
-var tipuesearch = {"pages":[{"text":"Flex_extract: Calculation of etadot Note for this version:\nAll code transferred to free form.\nSome code cosmetics, should not have any effects\nRename some source files Developer Info Leopold Haimberger 1 1 Univ. of Vienna, Dept. of Meteorology & Geophysics","tags":"home","loc":"index.html","title":" Flex_extract: Calculation of etadot "},{"text":"This file depends on sourcefile~~calc_etadot.f90~~EfferentGraph sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Programs calc_etadot Functions IA Subroutines STATIS Source Code calc_etadot.f90 Source Code PROGRAM calc_etadot !! Prepare input data for FLEXPART, esp. vertical velocity as !! etadot or etadot * dp/deta !*---------------------------------------------------------------- ! author: L. Haimberger ! date:   03/2010 ! version: V4.0 ! !## Program calc_etadot ! ! **Prepares input data for POP model meteorological preprocessor** ! !----------------------------------------------------------------- ! ! Calculation of etapoint on a regular \\lambda-\\phi grid and writing ! `U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, ! EWSS,NSSS` ! to an output file (input and output in GRIB 1 or 2 format). !  etapoint is defined as the total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} ! !### Version history and authors: ! - 04/1994: Leopold Haimberger, Gerhard Wotawa ! ! - 2003-05-11: Alexander Beck ! ! - 12/2006: L. Haimberger V2.0, !           handle arbitrary regular grids and T799 resolution data ! ! - 03/2010: L. Haimberger V4.0, !           handle GRIB edition 2 fields and T1279 resolution data ! - 04-06/2019: Petra Seibert, !            beautify code and add FORD documentation ! !----------------------------------------------------------------- !  # !## Input required: ! !     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION ! !     11    fort.11   T,U,V           regular lambda phi grid !     12    fort.12   D               regular lambda phi grid !     13    fort.13   LNSP            spherical harmonics !     14    fort.14   SD,MSL,TCC,10U, !                     10V,2T,2D       regular lambda phi grid !     16    fort.16   LSP,CP,SSHF, !                     SSR,EWSS,NSSS   regular lambda phi grid !     17    fort.17   Q               regular lambda phi grid ! !------------------------------------------------------------------ ! !### Output produced: ! !    UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION ! !    15    fort.15   `U,V,ETA,T,PS, !                    `Q,SD,MSL,TCC,` !                    `10U,10V,2T,2D,`  regular lambda phi grid !                    `LSP,CP,SSHF,` !                    `SSR,EWSS,NSSS` ! !------------------------------------------------------------------ USE PHTOGR USE GRTOPH USE FTRAFO USE RWGRIB2 USE GRIB_API IMPLICIT NONE REAL , ALLOCATABLE , DIMENSION (:,:) :: LNPS REAL , ALLOCATABLE , DIMENSION (:,:) :: Z REAL , ALLOCATABLE , DIMENSION (:,:,:) :: T , UV , UV2 REAL , ALLOCATABLE , DIMENSION (:,:,:) :: QA , OM , OMR REAL , ALLOCATABLE , DIMENSION (:,:,:) :: DIV , ETA , ETAR REAL , ALLOCATABLE , DIMENSION (:,:) :: DPSDL , DPSDM REAL , ALLOCATABLE , DIMENSION (:,:,:) :: PS , DPSDT REAL , ALLOCATABLE , DIMENSION (:,:,:) :: SURF , FLUX , OROLSM REAL , ALLOCATABLE , DIMENSION (:) :: WSAVE , H , SINL , COSL , WSAVE2 REAL , ALLOCATABLE , DIMENSION (:) :: BREITE , GBREITE , AK , BK , pv ! Arrays for Gaussian grid calculations REAL :: X1 , X2 , RMS , MW , SIG , LAM REAL , ALLOCATABLE :: CUA (:,:,:), CVA (:,:,:) REAL , ALLOCATABLE , DIMENSION (:,:) :: P , PP , P2 REAL , ALLOCATABLE , DIMENSION (:,:) :: XMN , HILFUV REAL , ALLOCATABLE , DIMENSION (:) :: LNPMN , LNPMN2 , LNPMN3 REAL , ALLOCATABLE , DIMENSION (:) :: WEIGHT REAL , ALLOCATABLE , DIMENSION (:,:) :: UGVG REAL , ALLOCATABLE , DIMENSION (:,:) :: DG , ETAG REAL , ALLOCATABLE , DIMENSION (:,:) :: GWSAVE REAL , ALLOCATABLE , DIMENSION (:) :: PSG , HILF ! end arrays for Gaussian grid calculations INTEGER , ALLOCATABLE , DIMENSION (:) :: MLAT , MPSURF , MPFLUX , MPORO , MPAR INTEGER , ALLOCATABLE :: GIFAX (:,:) REAL PI , COSB , DAK , DBK , P00 REAL URLAR8 , JMIN1 , LLLAR8 , MAXBMIN1 , PIR8 , DCOSB INTEGER I , J , K , L , IERR , M , LTEST , MK , NGI , NGJ INTEGER MFLUX , MSURF , MORO INTEGER LUNIT , LUNIT2 INTEGER MAXL , MAXB , MLEVEL , LEVOUT , LEVMIN , LEVMAX INTEGER MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , MNAUF , META , METADIFF INTEGER MDPDETA , METAPAR REAL RLO0 , RLO1 , RLA0 , RLA1 CHARACTER * 300 MLEVELIST INTEGER MAUF , MANF , IFAX ( 10 ) INTEGER IGRIB ( 1 ), iret , ogrib CHARACTER * 80 FILENAME NAMELIST / NAMGEN / & MAXL , MAXB , & MLEVEL , MLEVELIST , MNAUF , METAPAR , & RLO0 , RLO1 , RLA0 , RLA1 , & MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , META , METADIFF ,& MDPDETA LTEST = 1 CALL POSNAM ( 4 , 'NAMGEN' ) READ ( 4 , NAMGEN ) MAUF = INT ( 36 0. * ( REAL ( MAXL ) - 1. ) / ( RLO1 - RLO0 ) + 0.0001 ) !      PRINT*, MAUF MANF = INT ( REAL ( MAUF ) / 36 0. * ( 36 0. + RLO0 ) + 1.0001 ) IF ( MANF . gt . MAUF ) MANF = MANF - MAUF !------------------------------------------------------------------ !! ALLOCATE VARIABLES !------------------------------------------------------------------ ALLOCATE ( LNPS ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 1 )) ALLOCATE ( H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 )) ALLOCATE ( OM ( MAXL , MAXB , MLEVEL )) ALLOCATE ( ETA ( MAXL , MAXB , MLEVEL )) ALLOCATE ( PS ( MAXL , MAXB , 1 ), DPSDT ( MAXL , MAXB , 1 )) ALLOCATE ( WSAVE ( 4 * MAUF + 15 ), WSAVE2 ( 4 * MAUF + 15 )) ALLOCATE ( BREITE ( MAXB ), AK ( MLEVEL + 1 ), BK ( MLEVEL + 1 ), PV ( 2 * MLEVEL + 2 )) ALLOCATE ( MPAR ( 2 )) ALLOCATE ( COSL ( MAXL ), SINL ( MAXL )) ALLOCATE ( CUA ( 2 , 4 , MLEVEL ), CVA ( 2 , 4 , MLEVEL )) !------------------------------------------------------------------ ! GAUSS STUFF !------------------------------------------------------------------ IF ( MGAUSS . EQ . 1 ) THEN LUNIT = 0 FILENAME = 'fort.18' CALL GRIB_OPEN_FILE ( LUNIT , TRIM ( FILENAME ), 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT , IGRIB ( 1 ), IRET ) ! we can close the file CALL GRIB_CLOSE_FILE ( LUNIT ) !      call grib_get(igrib(1),'gridType', j) NGJ = MNAUF + 1 ALLOCATE ( GWSAVE ( 8 * NGJ + 15 , NGJ / 2 )) ALLOCATE ( GIFAX ( 10 , NGJ )) ALLOCATE ( GBREITE ( NGJ ), WEIGHT ( NGJ )) ALLOCATE ( MLAT ( NGJ )) ALLOCATE ( P ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , NGJ / 2 )) ALLOCATE ( PP ( NGJ / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 )) ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB )) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfPointsAlongAMeridian' , NGJ ) !   get as a integer call grib_get ( igrib ( 1 ), 'pl' , MLAT ) NGI = SUM ( MLAT ) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfVerticalCoordinateValues' , MK ) IF ( MK / 2 - 1 . NE . MLEVEL ) THEN WRITE ( * , * ) 'FATAL: Number of model levels' , mk , & ' does not agree with' , MLEVEL , ' in namelist' STOP END IF call grib_get ( igrib ( 1 ), 'pv' , pv ) AK = PV ( 1 : 1 + MLEVEL ) BK = PV ( 2 + MLEVEL : 2 * MLEVEL + 2 ) ALLOCATE ( LNPMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( LNPMN2 ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( UGVG ( NGI , 2 * MLEVEL ), HILFUV ( 2 * MAXL , 2 )) ALLOCATE ( DPSDL ( NGI , 1 ), DPSDM ( NGI , 1 )) ALLOCATE ( PSG ( NGI ), HILF ( NGI )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL )) !      ALLOCATE (UV2(MAXL, MAXB, 2*MLEVEL)) ALLOCATE ( XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 2 * MLEVEL )) ALLOCATE ( DG ( NGI , MLEVEL ), ETAG ( NGI , MLEVEL )) !! Initialisieren  Legendretransformation auf das LaT/LON Gitter PI = ACOS ( - 1.D0 ) !$OMP PARALLEL DO DO 20 J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , J )) 20 CONTINUE !$OMP END PARALLEL DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) !* Initialisation of fields for FFT and Legendre transformation ! to Gaussian grid and back to phase space X1 =- 1.D0 X2 = 1.D0 CALL GAULEG ( X1 , X2 , GBREITE , WEIGHT , NGJ ) !$OMP PARALLEL DO PRIVATE(M) DO J = 1 , NGJ / 2 CALL PLGNFA ( MNAUF , GBREITE ( J ), P (:, J )) DO M = 0 ,( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 PP ( J , M ) = P ( M , J ) END DO END DO !$OMP END PARALLEL DO !       MPAR(1)=152 FILENAME = 'fort.12' !!  read LNSP in SH CALL READSPECTRAL ( FILENAME , LNPMN , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) CALL SET99 ( WSAVE , IFAX , mauf ) CALL PHGCUT ( LNPMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , EXP ( PS ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG DO J = 1 , NGJ / 2 CALL SET99 ( GWSAVE ( 1 , J ), GIFAX ( 1 , J ), MLAT ( J )) END DO CALL PHGR213 ( LNPMN , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) PSG = HILF CALL GRPH213 ( LNPMN2 , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL PHGR213 ( LNPMN2 , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) HILF = exp ( PSG ) - exp ( HILF ) CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS ratio of PS: ' , RMS , MW , SIG PSG = EXP ( PSG ) HILF = PSG CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG: ' , RMS , MW , SIG 111 FILENAME = 'fort.10' !!  read u,v in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , 2 * MLEVEL , MLEVEL ,( / 131 , 132 / ), AK , BK ) !!  Transformieren des Windes auf das Gaussgitter CALL PHGR213 ( XMN , UGVG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 2 * MLEVEL ) DO K = 1 , MLEVEL ! North Pole CALL JSPPOLE ( XMN (:, K ), 1 , MNAUF ,. TRUE ., CUA (:,:, K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), 1 , MNAUF ,. TRUE ., CVA (:,:, K )) ! South Pole CALL JSPPOLE ( XMN (:, K ), - 1 , MNAUF ,. TRUE ., CUA (:, 3 : 4 , K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), - 1 , MNAUF ,. TRUE ., CVA (:, 3 : 4 , K )) END DO DO K = 1 , 2 * MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , UV , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 2 * MLEVEL ) 112 FILENAME = 'fort.13' !!  read DIV in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , MLEVEL , MLEVEL ,( / 155 / ), AK , BK ) !! Transformieren der horizontalen Divergenz auf das Gaussgitter CALL PHGR213 ( XMN , DG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , DG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS DG-PS: ' , RMS , MW , SIG !! Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter CALL PHGRAD ( LNPMN , DPSDL , DPSDM , GWSAVE , GIFAX , P , H , MLAT , MNAUF , NGI , NGJ , 1 ) !! Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter CALL CONTGL ( HILF , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) ! note that HILF is ps on input and  dpsdt*ps on output CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , ETA , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETA , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETA-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , HILF , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS HILF-PS: ' , RMS , MW , SIG IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, 1 ), MNAUF , MSMOOTH ) CALL PHGCUT ( XMN , DPSDT , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , DPSDT , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS DPSDT: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN !! Berechnung von Omega auf dem Gaussgitter CALL OMEGA ( PSG , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , OM , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END IF ! MOMEGA CALL GRPH213 ( XMN , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PSG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG-PS: ' , RMS , MW , SIG CALL PHGCUT ( XMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PS , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG 114 DEALLOCATE ( HILF , PSG , DPSDL , DPSDM , ETAG , DG , LNPMN ) !      ALLOCATE (UV(MAXL, MAXB, 2*MLEVEL)) ! CALL GRPH213(XMN,UGVG,GWSAVE,GIFAX,PP,WEIGHT,MLAT, !     *MNAUF,NGI,NGJ,2*MLEVEL) !        DO K=1,2*MLEVEL !          IF (MSMOOTH .ne. 0) CALL SPFILTER(XMN(:,K),MNAUF,MSMOOTH) !        END DO !        CALL PHGCUT(XMN,UV,WSAVE,IFAX,Z, !     *MNAUF,MNAUF,MAUF,MANF,MAXL,MAXB,2*MLEVEL) DEALLOCATE ( PP , P , UGVG , MLAT , GBREITE , WEIGHT , GWSAVE , XMN ) !        CALL ETAGAUSS(Z,WSAVE !     *,BREITE,UV,ETA,OM,PS, !     *MAUF,MAXB,MAXL,MANF,MNAUF,MLEVEL,MSMOOTH) ELSE !----------------------------------------------------------------- !     READING OF PREPARED METEOROLOGICAL FIELDS ! !     THE FOLLOWING FIELDS ARE EXPECTED: ! !     UNIT 11: T,U,V        (REGULAR GRID) !     UNIT 17: Q            (REGULAR GRID) !     UNIT 13: D            (REGULAR GRID) !     UNIT 12: LNSP         (SPHERICAL HARMONICS) !     UNIT 14: SURFACE DATA (REGULAR GRID) !     UNIT 16: FLUX DATA    (REGULAR GRID) !------------------------------------------------------------------ ALLOCATE ( MLAT ( MAXB )) MLAT = MAXL ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , 1 )) ALLOCATE ( DPSDL ( MAXL , MAXB ), DPSDM ( MAXL , MAXB )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL ), DIV ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF SURFACE PRESSURE !------------------------------------------------------------------ FILENAME = 'fort.12' CALL READSPECTRAL ( FILENAME , LNPS , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) !------------------------------------------------------------------ !! READING OF U,V !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.10' CALL READLATLON ( FILENAME , UV , MAXL , MAXB , 2 * MLEVEL ,( / 131 , 132 / )) PI = ACOS ( - 1.D0 ) DO J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) END DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) DO K = 1 , 2 * MLEVEL DO J = 1 , MAXB COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) / 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) * COSB END IF END DO END DO !------------------------------------------------------------------ !! READING OF LNSP on grid !------------------------------------------------------------------ ! For debugging only !      FILENAME='LNSPG_G.20060330.600' !      INQUIRE(FILE=FILENAME,EXIST=EX) !      CALL READLATLON(FILENAME,QA, !     *MAXL,MAXB,1,1,(/152/)) !------------------------------------------------------------------ !! READING OF DIVERGENCE !------------------------------------------------------------------ IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN FILENAME = 'fort.13' CALL READLATLON ( FILENAME , DIV , MAXL , MAXB , MLEVEL ,( / 155 / )) END IF !------------------------------------------------------------------ ! !  Calculation of etapoint --> total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} !------------------------------------------------------------------ !* Initialisieren  Legendretransformation auf das LaT/LON Gitter !! Without Gaussian grid calculation Legendre Polynomials are calculated !! only for one latitude to save space DO J = 1 , MAXB CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , 1 )) CALL PHGCUT ( LNPS , PS (:, J , 1 ), WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , 1 , 1 ) IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN CALL PHGRACUT ( LNPS , DPSDL (:, J ), DPSDM (:, J ), WSAVE , IFAX , Z , H , MAUF , & MNAUF , MAXL , 1 , MANF , 1 ) END IF END DO PS = EXP ( PS ) ! For debugging only CALL STATIS ( MAXL , MAXB , 1 , PS (:,:, 1 ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN CALL OMEGA ( PS , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , OM , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF IF ( META . EQ . 0 . OR . METADIFF . ne . 0 ) THEN DPSDT = PS CALL CONTGL ( DPSDT , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , ETA , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF END IF ! MGAUSS !! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL OPEN ( 21 , FILE = 'VERTICAL.EC' ) WRITE ( 21 , '(A)' ) WRITE ( 21 , '(A)' ) 'VERTICAL DISCRETIZATION OF POP MODEL' WRITE ( 21 , '(A)' ) write ( 21 , '(i3,a)' ) MLEVEL , '   number of layers' WRITE ( 21 , '(A)' ) WRITE ( 21 , '(A)' ) '* A(NLEV+1)' WRITE ( 21 , '(A)' ) DO 205 I = 1 , MLEVEL + 1 205 WRITE ( 21 , '(F18.12)' ) AK ( I ) WRITE ( 21 , '(A)' ) WRITE ( 21 , '(A)' ) '* B(NLEV+1)' WRITE ( 21 , '(A)' ) DO 210 I = 1 , MLEVEL + 1 210 WRITE ( 21 , '(F18.12)' ) BK ( I ) CLOSE ( 21 ) !------------------------------------------------------------------ ! READING OF OMEGA !------------------------------------------------------------------ IF ( MOMEGA . NE . 0 ) THEN ALLOCATE ( OMR ( MAXL , MAXB , MLEVEL )) FILENAME = 'fort.19' CALL READLATLON ( FILENAME , OMR , MAXL , MAXB , MLEVEL ,( / 135 / )) IF ( MOMEGADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     OMEGA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OM (:,:, K ) - OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'OMEGA DIFF: ' , K , RMS , MW , SIG END DO END IF END IF !------------------------------------------------------------------ ! READING OF ETA !------------------------------------------------------------------ IF ( META . NE . 0 ) THEN ALLOCATE ( ETAR ( MAXL , MAXB , MLEVEL )) P00 = 10132 5. FILENAME = 'fort.21' CALL READLATLON ( FILENAME , ETAR , MAXL , MAXB , MLEVEL ,( / 77 / )) IF ( MDPDETA . EQ . 1 ) THEN DO K = 1 , MLEVEL DAK = AK ( K + 1 ) - AK ( K ) DBK = BK ( K + 1 ) - BK ( K ) DO J = 1 , MAXB DO I = 1 , MAXL ETAR ( I , J , K ) = 2 * ETAR ( I , J , K ) * PS ( I , J , 1 ) * ( DAK / PS ( I , J , 1 ) + DBK ) / & ( DAK / P00 + DBK ) IF ( K . GT . 1 ) ETAR ( I , J , K ) = ETAR ( I , J , K ) - ETAR ( I , J , K - 1 ) END DO END DO END DO END IF IF ( METADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     ETAR: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ) - ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'ETA DIFF: ' , K , RMS , MW , SIG END DO DO K = 1 , MLEVEL WRITE ( * , '(I3,2F12.4)' ) K , ETA ( 1 , MAXB / 2 , K ), ETAR ( 1 , MAXB / 2 , K ) END DO ELSE ETA = ETAR END IF END IF ALLOCATE ( T ( MAXL , MAXB , MLEVEL )) ALLOCATE ( QA ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF T !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.11' CALL READLATLON ( FILENAME , T , MAXL , MAXB , MLEVEL ,( / 130 / )) !------------------------------------------------------------------ !! READING OF SPECIFIC HUMIDITY !------------------------------------------------------------------ FILENAME = 'fort.17' CALL READLATLON ( FILENAME , QA , MAXL , MAXB , MLEVEL ,( / 133 / )) !------------------------------------------------------------------ !                     TEST READING OF UV from MARS (debug only) !------------------------------------------------------------------ !      FILENAME='fort.22' !      CALL READLATLON(FILENAME,UV2,MAXL,MAXB,2*MLEVEL,2,(/131,132/)) !------------------------------------------------------------------ !! WRITE MODEL LEVEL DATA TO fort.15 !------------------------------------------------------------------ !!     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi) !!     Now we are transforming back to the usual winds. DO K = 1 , MLEVEL DO J = 2 , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END DO ! special treatment for poles, if necessary. DO J = 1 , MAXB , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( 1.0 - BREITE ( J ) * BREITE ( J ) . GT . 0 . OR . MGAUSS . NE . 1 ) THEN IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) * 1.D6 UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) * 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END IF ELSE HILFUV ( 5 : MAXL ,:) = 0. HILFUV ( 1 : 2 ,:) = 0. IF ( J . EQ . MAXB ) THEN ! Suedpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 4 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 4 , K ) ELSE ! Nordpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 2 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 2 , K ) END IF CALL RFOURTR ( HILFUV (:, 1 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , K ) = HILFUV ( MANF + I , 1 ) ELSE UV ( I + 1 , J , K ) = HILFUV ( MANF - MAXL + I , 1 ) END IF END DO CALL RFOURTR ( HILFUV (:, 2 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF + I , 2 ) ELSE UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF - MAXL + I , 2 ) END IF END DO end if END DO END DO ! open output file call grib_open_file ( LUNIT , 'fort.15' , 'w' ) ! we use temperature on lat/lon on model levels as template for model level data LUNIT2 = 0 CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.11' , 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT2 , IGRIB ( 1 ), IRET ) CALL GRIB_CLOSE_FILE ( LUNIT2 ) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 131 / )) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, MLEVEL + 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 132 / )) IF ( MDPDETA . ne . 1 . AND . MGAUSS . EQ . 0 . and . META . eq . 1 ) THEN CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 77 / )) ELSE CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / METAPAR / )) END IF CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , T , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 130 / )) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , PS , MAXL , MAXB , 1 , '1' , 1 ,( / 134 / )) CALL GRIB_SET ( IGRIB ( 1 ), \"levelType\" , \"ml\" ) CALL GRIB_SET ( IGRIB ( 1 ), \"typeOfLevel\" , \"hybrid\" ) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , QA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 133 / )) IF ( MOMEGA . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.25' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OMR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) IF ( MOMEGADIFF . EQ . 1 ) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = OM - OMR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) END IF END IF IF ( META . EQ . 1 . AND . METADIFF . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.26' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , ETAR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) !        IF (MOMEGADIFF .EQ. 1) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = ETA - ETAR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) !        END IF END IF CALL GRIB_CLOSE_FILE ( LUNIT ) 2000 STOP 'SUCCESSFULLY FINISHED calc_etadot: CONGRATULATIONS' 3000 STOP 'ROUTINE calc_etadot: ERROR' 9999 stop 'ROUTINE calc_etadot: ERROR' END !------------------------------------------------------------------ INTEGER FUNCTION IA ( FIELD1 , NI , NJ , NK , G ) !------------------------------------------------------------------ !! Calculate something that is roughly log10( maxval(field1)/g ) [PS] !------------------------------------------------------------------ IMPLICIT NONE INTEGER :: I , J , K INTEGER , INTENT ( IN ) :: NI , NJ , NK REAL , INTENT ( IN ) :: FIELD1 ( NI , NJ , NK ) REAL , INTENT ( IN ) :: G REAL :: RMIN , RMAX , XMAX , A , A1 , A2 RMAX = FIELD1 ( 1 , 1 , 1 ) RMIN = FIELD1 ( 1 , 1 , 1 ) DO 100 K = 1 , NK DO 100 J = 1 , NJ DO 100 I = 1 , NI IF ( FIELD1 ( I , J , K ) . GT . RMAX ) RMAX = FIELD1 ( I , J , K ) IF ( FIELD1 ( I , J , K ) . LT . RMIN ) RMIN = FIELD1 ( I , J , K ) 100 CONTINUE IF ( ABS ( RMIN ) . GT . RMAX . OR . ABS ( RMIN ) . EQ . RMAX ) THEN XMAX = ABS ( RMIN ) ELSE XMAX = RMAX END IF IF ( XMAX . EQ . 0 ) THEN IA = 0 RETURN END IF A1 = LOG10 ( ( G / 1 0.d0 ) / XMAX ) A2 = LOG10 ( G / XMAX ) IF ( A1 . gt . A2 ) THEN A = A2 ELSE A = A1 END IF IF ( A . GT . 0 ) IA = INT ( A ) IF ( A . LT . 0 ) IA = INT ( A - 1.0 ) RETURN END SUBROUTINE STATIS ( NI , NJ , NK , PHI , RMS , MW , SIG ) !------------------------------------------------------------------ !! calculate mean, rms, stdev !------------------------------------------------------------------ IMPLICIT REAL ( A - H , O - Z ) REAL PHI ( NI , NJ , NK ), SIG , MW , RMS , P N = NI * NJ * NK RMS = 0. MW = 0. ! 10.86 sinstead of 11.04 sec DO 10 K = 1 , NK DO 10 J = 1 , NJ DO 10 I = 1 , NI P = PHI ( I , J , K ) RMS = RMS + P * P MW = MW + P 10 CONTINUE RMS = SQRT ( RMS / N ) MW = MW / N IF ( RMS * RMS - MW * MW . LT . 0. ) THEN SIG = 0.0 ELSE SIG = SQRT ( RMS * RMS - MW * MW ) END IF RETURN END","tags":"","loc":"sourcefile/calc_etadot.f90.html","title":"calc_etadot.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~rwgrib2.f90~~AfferentGraph sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules RWGRIB2 Source Code rwgrib2.f90 Source Code MODULE RWGRIB2 CONTAINS SUBROUTINE READLATLON ( FILENAME , FELD , MAXL , MAXB , MLEVEL , MPAR ) !! Read a field from GRIB file on lat-lon grid USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , parid , nm integer :: i , k integer , dimension (:), allocatable :: igrib integer :: numberOfPointsAlongAParallel integer :: numberOfPointsAlongAMeridian real , dimension (:), allocatable :: values integer :: numberOfValues real , dimension ( maxl , maxb , mlevel ) :: feld integer :: maxl , maxb , mlevel , mstride , mpar (:), irest , div , level integer :: l ( size ( mpar )) character * ( * ) :: filename feld = 0. call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) nm = size ( mpar ) div = mlevel / nm l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n !      write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAParallel' , & numberOfPointsAlongAParallel ) !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAMeridian' , & numberOfPointsAlongAMeridian ) call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !      write(*,*) 'numberOfValues=',numberOfValues allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) call grib_get ( igrib ( i ), 'paramId' , parid ) call grib_get ( igrib ( i ), 'level' , level ) kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then !         l(k)=l(k)+1 feld (:,:,( k - 1 ) * div + level ) = reshape ( values ,( / maxl , maxb / )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readlatlon: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop !!   write(*,*) 'readlatlon: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO if ( allocated ( values )) deallocate ( values ) deallocate ( igrib ) END SUBROUTINE READLATLON SUBROUTINE WRITELATLON ( iunit , igrib , ogrib , FELD , MAXL , MAXB , MLEVEL ,& MLEVELIST , MSTRIDE , MPAR ) !! write a field on lat-lon grid to GRIB file USE GRIB_API IMPLICIT NONE INTEGER IFIELD , MLEVEL , MNAUF , I , J , K , L , MSTRIDE , IERR , JOUT INTEGER MPAR ( MSTRIDE ), MAXL , MAXB , LEVMIN , LEVMAX INTEGER IUNIT , igrib , ogrib REAL ZSEC4 ( MAXL * MAXB ) REAL FELD ( MAXL , MAXB , MLEVEL ) CHARACTER * ( * ) MLEVELIST INTEGER ILEVEL ( MLEVEL ), MLINDEX ( MLEVEL + 1 ), LLEN ! parse MLEVELIST LLEN = len ( trim ( MLEVELIST )) if ( index ( MLEVELIST , 'to' ) . ne . 0 . or . index ( MLEVELIST , 'TO' ) . ne . 0 ) THEN i = index ( MLEVELIST , '/' ) read ( MLEVELIST ( 1 : i - 1 ), * ) LEVMIN i = index ( MLEVELIST , '/' ,. true .) read ( MLEVELIST ( i + 1 : LLEN ), * ) LEVMAX l = 0 do i = LEVMIN , LEVMAX l = l + 1 ILEVEL ( l ) = i end do else l = 1 MLINDEX ( 1 ) = 0 do i = 1 , LLEN if ( MLEVELIST ( i : i ) . eq . '/' ) THEN l = l + 1 MLINDEX ( l ) = i end if end do MLINDEX ( l + 1 ) = LLEN + 1 do i = 1 , l read ( MLEVELIST ( MLINDEX ( i ) + 1 : MLINDEX ( i + 1 ) - 1 ), * ) ILEVEL ( i ) end do end if DO k = 1 , l call grib_set ( igrib , \"level\" , ILEVEL ( k )) DO j = 1 , MSTRIDE call grib_set ( igrib , \"paramId\" , MPAR ( j )) !         if (MPAR(j) .eq. 87) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"Pa,s**-1\") !         end if !         if (MPAR(j) .eq. 77) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"s**-1\") !         end if if ( l . ne . mlevel ) then zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, ILEVEL ( k )),( / maxl * maxb / )) else zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, k ),( / maxl * maxb / )) end if call grib_set ( igrib , \"values\" , zsec4 ) call grib_write ( igrib , iunit ) END DO END DO END SUBROUTINE WRITELATLON SUBROUTINE READSPECTRAL ( FILENAME , CXMN , MNAUF , MLEVEL , MAXLEV , MPAR , A , B ) !!  read a GRIB file in spherical harmonics USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , div , nm , k integer :: i , j , parid integer , dimension (:), allocatable :: igrib real , dimension (:), allocatable :: values integer :: numberOfValues , maxlev REAL :: A ( MAXLEV + 1 ), B ( MAXLEV + 1 ), pv ( 2 * MAXLEV + 2 ) REAL :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) integer :: maxl , maxb , mlevel , mstride , mpar (:), mnauf , ioffset , ipar , ilev , l ( size ( mpar )) character * ( * ) :: filename call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n ! write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'pentagonalResolutionParameterJ' , j ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !   write(*,*) 'numberOfValues=',numberOfValues call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get ( igrib ( i ), 'level' , ilev ) call grib_get ( igrib ( i ), 'pv' , pv ) allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) !      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1) !           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2)) call grib_get ( igrib ( i ), 'paramId' , parid ) nm = size ( mpar ) div = mlevel / nm kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then l ( k ) = l ( k ) + 1 cxmn (:,( k - 1 ) * div + l ( k )) = values ( 1 :( MNAUF + 1 ) * ( MNAUF + 2 )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readspectral: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop !!   write(*,*) 'readspectral: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO deallocate ( values ) deallocate ( igrib ) A = pv ( 1 : 1 + MAXLEV ) B = pv ( 2 + MAXLEV : 2 * MAXLEV + 2 ) END SUBROUTINE READSPECTRAL END MODULE RWGRIB2","tags":"","loc":"sourcefile/rwgrib2.f90.html","title":"rwgrib2.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~grphreal.f90~~EfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~grphreal.f90~~AfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules GRTOPH Source Code grphreal.f90 Source Code MODULE GRTOPH USE PHTOGR CONTAINS SUBROUTINE GRPH213 ( CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF KUGELKOORDINATEN DURCH ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z   = LEGENDREFUNKTIONSWERTE ! ! MNAUF    ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL     ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB     ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL   ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE , IFAX ( 10 , MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) DIMENSION WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) REAL W ( MAXB ) DIMENSION IND ( MAXB ) IND ( 1 ) = 0 DO 6 J = 2 , MAXB / 2 IND ( j ) = IND ( J - 1 ) + MLAT ( J - 1 ) 6 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 16 L = 1 , MLEVEL CALL GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 16 CONTINUE !$omp end parallel do RETURN END SUBROUTINE GRPH213 SUBROUTINE GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF KUGELKOORDINATEN DURCH ! ! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD  = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE = Working Array fuer Fouriertransformation ! Z     = LEGENDREFUNKTIONSWERTE ! ! MNAUF ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL  ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB  ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL CXMS ( 4 * ( MNAUF + 1 )) REAL CXMA ( 4 * ( MNAUF + 1 )) REAL , ALLOCATABLE :: CXM (:,:) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER IFAX ( 10 , MAXB ) REAL W ( MAXB ) INTEGER IND ( MAXB ) ALLOCATE ( CXM ( 4 * MAXB , MAXB )) DO 5 J = 1 , MAXB / 2 CXMS ( 1 : MLAT ( J )) = FELD ( IND ( J ) + 1 : IND ( J ) + MLAT ( J ), L ) CALL RFOUFTR ( CXMS , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) CXMA ( 1 : MLAT ( J )) = FELD ( MAXL - IND ( J ) - MLAT ( J ) + 1 : MAXL - IND ( J ), L ) CALL RFOUFTR ( CXMA , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) DO 4 I = 1 , 2 * ( MNAUF + 1 ) CXM ( I , J ) = CXMS ( I ) + CXMA ( I ) CXM ( I , MAXB + 1 - J ) = CXMS ( I ) - CXMA ( I ) 4 CONTINUE 5 CONTINUE CALL LGTR213 ( CXMN ( 0 , L ), CXM , Z , W , MLAT , MNAUF , MAXB ) DEALLOCATE ( CXM ) RETURN END SUBROUTINE GRPHSUB ! SUBROUTINE LGTR213 ( CXMN , CXM , Z , W , MLAT , MNAUF , MAXB ) !!     DIESE ROUTINE BERECHNET DIE KFFKs CXMN IMPLICIT REAL ( A - H , O - Z ) INTEGER MLAT ( MAXB ) DIMENSION CXM ( 0 : 4 * MAXB - 1 , MAXB ) DIMENSION CXMN ( 0 : 2 * ((( MNAUF + 1 ) * MNAUF ) / 2 + MNAUF ) + 1 ) REAL * 8 Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL * 8 W ( MAXB ), CR , CI , HILF LOGICAL EVEN LL = 0 LLP = 0 DO 1 I = 0 , MNAUF KM = 0 9 KM = KM + 1 IF ( MLAT ( KM ) . LE . 2 * I ) THEN GOTO 9 END IF DO 2 J = I , MNAUF CR = 0 CI = 0 EVEN = MOD ( I + J , 2 ) . EQ . 0 IF ( EVEN ) THEN DO 3 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , K ) * HILF CI = CI + CXM ( 2 * I + 1 , K ) * HILF 3 CONTINUE ELSE DO 4 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , MAXB + 1 - K ) * HILF CI = CI + CXM ( 2 * I + 1 , MAXB + 1 - K ) * HILF 4 CONTINUE END IF 5 CXMN ( 2 * LL ) = CR CXMN ( 2 * LL + 1 ) = CI LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 1 CONTINUE RETURN END SUBROUTINE LGTR213 SUBROUTINE RFOUFTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) ! ! BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : 2 * MAXL - 1 ) DIMENSION FELD ( MAXL ), TRIGS ( 2 * MAXL ) DIMENSION WSAVE ( MAXAUF ) INTEGER IFAX ( 10 ) ! NORMIERUNG... WSAVE ( 1 ) = CXM ( MAXL - 1 ) CXM ( 1 : MAXL ) = CXM ( 0 : MAXL - 1 ) / 2 CXM ( 0 ) = WSAVE ( 1 ) / 2 !    CALL CFFTF(MAXL,CXM,WSAVE) CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , - 1 ) RETURN END SUBROUTINE RFOUFTR END MODULE GRTOPH","tags":"","loc":"sourcefile/grphreal.f90.html","title":"grphreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~phgrreal.f90~~AfferentGraph sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules PHTOGR Source Code phgrreal.f90 Source Code MODULE PHTOGR INTEGER , PARAMETER :: MAXAUF = 36000 CONTAINS SUBROUTINE PHGR213 ( CXMN , FELD , WSAVE , IFAX , Z , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH ! ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z      = LEGENDREFUNKTIONSWERTE ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT NONE !   Anzahl der Gitterpunkte auf jedem Breitenkreis INTEGER MLAT ( MAXB / 2 ) INTEGER K , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER :: IFAX ( 10 , MAXB ) IND ( 1 ) = 0 DO 7 K = 2 , MAXB / 2 IND ( K ) = IND ( K - 1 ) + MLAT ( K - 1 ) 7 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 17 K = 1 , MAXB / 2 CALL PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 17 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE PHGR213 SUBROUTINE PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER MLAT ( MAXB / 2 ) INTEGER K , L , I , J , LLS , LLPS , LL , LLP , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) INTEGER :: IFAX ( 10 , MAXB ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXMS ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL ACR , ACI , SCR , SCI REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) DO 6 L = 1 , MLEVEL LL = 0 LLP = 0 DO 1 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP IF ( 2 * I + 1 . LT . MLAT ( K )) THEN !         Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 J = I , MNAUF , 2 SCR = SCR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 J = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE END IF LL = LLS + ( MNAUF - I + 1 ) LLP = LLPS + ( MNAUF - I + 3 ) CXMS ( 2 * I ) = SCR + ACR CXMS ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 1 CONTINUE !     CALL FOURTR(CXMS,FELD(IND(k)+1,L),WSAVE(:,K),MNAUF,*MLAT(K),1) !     CALL FOURTR(CXMA,FELD(MAXL-IND(k)-MLAT(K)+1,L),WSAVE(:,K),MNAUF,MLAT(K),1) CALL RFOURTR ( CXMS , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( IND ( k ) + 1 : IND ( K ) + MLAT ( K ), L ) = CXMS ( 0 : MLAT ( K ) - 1 ) CALL RFOURTR ( CXMA , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( MAXL - IND ( k ) - MLAT ( K ) + 1 : MAXL - IND ( k ), L ) = CXMA ( 0 : MLAT ( K ) - 1 ) !      WRITE(*,*) IND+1,FELD(IND+1,L) 6 CONTINUE END SUBROUTINE PHSYM SUBROUTINE PHGCUT ( CXMN , FELD , WSAVE , IFAX , Z , & MNAUF , MMAX , MAUF , MANF , MAXL , MAXB , MLEVEL ) !! DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt !! Der Erde angegeben werden. Diese Routine ist langsamer als phgrph ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! BREITE = SINUS DER GEOGRAFISCHEN BREITEN ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAUF   ANZAHL DER LAENGEN UND DER FOURIERKOEFFIZIENTEN ! MANF   ANFANG DES LAENGENBEREICHS FUER DAS GITTER, !        AUF DAS INTERPOLIERT WERDEN SOLL ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MMAX + 3 ) * ( MMAX + 4 )) / 2 , MAXB ) DIMENSION CXMN ( 0 :( MMAX + 1 ) * ( MMAX + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) LOGICAL SYM !    write(*,*)mauf,mnauf,manf,maxl IF ( MAUF . LE . MNAUF ) WRITE ( * , * ) 'TOO COARSE LONGITUDE RESOLUTION' IF ( MANF . LT . 1 . OR . MAXL . LT . 1 . OR . & MANF . GT . MAUF . OR . MAXL . GT . MAUF ) THEN WRITE ( * , * ) 'WRONG LONGITUDE RANGE' , MANF , MAXL STOP END IF ! Pruefe, ob Ausgabegitter symmetrisch zum Aequator ist ! Wenn ja soll Symmetrie der Legendrepolynome ausgenutzt werden IF ( MAXB . GT . 4 ) THEN SYM = . TRUE . DO 11 J = 5 , 5 IF ( ABS ( ABS ( Z ( 100 , J )) - ABS ( Z ( 100 , MAXB + 1 - J ))) . GT . 1E-11 ) SYM = . FALSE . !       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J)) 11 CONTINUE !!      WRITE(*,*) 'Symmetrisch: ',SYM ELSE SYM = . FALSE . END IF IF ( SYM ) THEN !$OMP PARALLEL DO DO J = 1 ,( MAXB + 1 ) / 2 CALL PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) END DO !$OMP END PARALLEL DO ELSE !$OMP PARALLEL DO DO J = 1 , MAXB CALL PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END DO !$OMP END PARALLEL DO END IF RETURN END SUBROUTINE PHGCUT SUBROUTINE PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXM ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL SCR , SCI , ACR , ACI DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) DO 16 L = 1 , MLEVEL LL = 0 LLP = 0 DO 17 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP !       Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 K = I , MNAUF , 2 SCR = SCR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 K = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE LL = LLS + MNAUF - I + 1 LLP = LLPS + MNAUF - I + 3 CXM ( 2 * I ) = SCR + ACR CXM ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 17 CONTINUE CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 26 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF 26 CONTINUE CALL RFOURTR ( CXMA , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 36 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF + I - 1 ) ELSE FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF - MAUF + I - 1 ) END IF 36 CONTINUE 16 CONTINUE END SUBROUTINE PHSYMCUT SUBROUTINE PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER , INTENT ( IN ) :: MNAUF , MAUF , MANF , J , MAXL , MAXB , MLEVEL REAL :: CXM ( 0 : MAXAUF - 1 ) REAL , INTENT ( IN ) :: Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL , INTENT ( IN ) :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL , INTENT ( IN ) :: WSAVE ( 4 * MAUF + 15 ) REAL :: FELD ( MAXL , MAXB , MLEVEL ) INTEGER :: IFAX ( 10 ) INTEGER I , L DO L = 1 , MLEVEL CALL LEGTR ( CXMN (:, L ), CXM , Z (:, J ), MNAUF , MAUF ) CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF END DO END DO END SUBROUTINE PHGPNS SUBROUTINE LEGTR ( CXMN , CXM , Z , MNAUF , MAUF ) !!   DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM IMPLICIT NONE INTEGER MNAUF , MAUF , LL , LLP , I , J REAL CXM ( 0 : MAXAUF - 1 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 ) REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL CI , CR LL = 0 LLP = 0 DO 1 I = 0 , MNAUF CR = 0.D0 CI = 0.D0 DO 2 J = I , MNAUF CR = CR + Z ( LLP ) * CXMN ( 2 * LL ) CI = CI + Z ( LLP ) * CXMN ( 2 * LL + 1 ) LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 CXM ( 2 * I ) = CR CXM ( 2 * I + 1 ) = CI 1 CONTINUE RETURN END SUBROUTINE LEGTR SUBROUTINE RFOURTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) !!     BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : MAXAUF - 1 ) REAL :: WSAVE ( 2 * MAXL ), TRIGS ( 2 * MAXL ) INTEGER IFAX ( 10 ) DO I = MNAUF + 1 , MAXL - 1 CXM ( 2 * I ) = 0.0 CXM ( 2 * I + 1 ) = 0.0 END DO CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , 1 ) DO I = 0 , MAXL - 1 CXM ( I ) = CXM ( I + 1 ) END DO RETURN END SUBROUTINE RFOURTR SUBROUTINE GAULEG ( X1 , X2 , X , W , N ) !! BERECHNET DIE GAUSS+SCHEN BREITEN IMPLICIT REAL ( A - H , O - Z ) DIMENSION X ( N ), W ( N ) PARAMETER ( EPS = 3.D-14 ) M = ( N + 1 ) / 2 XM = 0.5D0 * ( X2 + X1 ) XL = 0.5D0 * ( X2 - X1 ) DO 12 I = 1 , M Z = DCOS ( 3.141592654D0 * ( I - . 25 D0 ) / ( N + . 5 D0 )) 1 CONTINUE P1 = 1.D0 P2 = 0.D0 DO 11 J = 1 , N P3 = P2 P2 = P1 P1 = (( 2.D0 * J - 1.D0 ) * Z * P2 - ( J - 1.D0 ) * P3 ) / J 11 CONTINUE PP = N * ( Z * P1 - P2 ) / ( Z * Z - 1.D0 ) Z1 = Z Z = Z1 - P1 / PP IF ( ABS ( Z - Z1 ) . GT . EPS ) GO TO 1 X ( I ) = XM - XL * Z X ( N + 1 - I ) = XM + XL * Z W ( I ) = 2.D0 * XL / (( 1.D0 - Z * Z ) * PP * PP ) W ( N + 1 - I ) = W ( I ) 12 CONTINUE RETURN END SUBROUTINE GAULEG SUBROUTINE PLGNFA ( LL , X , Z ) !! PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN !! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X) !! UND SCHREIBT SIE IN DAS FELD Z ! Die Polynome sind wie im ECMWF indiziert, d.h. ! P00,P10,P11,P20,P21,P22,... ! Ansonsten ist die Routine analog zu PLGNDN ! X IST DER COSINUS DES ZENITWINKELS ODER !       DER SINUS DER GEOGRAFISCHEN BREITE IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( LL + 3 ) * ( LL + 4 )) / 2 ) L = LL + 2 I = 1 Z ( 0 ) = 1.D0 FACT = 1.D0 POT = 1.D0 SOMX2 = DSQRT ( 1.D0 - X * X ) DO 14 J = 0 , L DJ = DBLE ( J ) IF ( J . GT . 0 ) THEN FACT = FACT * ( 2.D0 * DJ - 1.D0 ) / ( 2.D0 * DJ ) POT = POT * SOMX2 Z ( I ) = DSQRT (( 2.D0 * DJ + 1.D0 ) * FACT ) * POT I = I + 1 END IF IF ( J . LT . L ) THEN Z ( I ) = X * DSQRT (( 4.D0 * DJ * DJ + 8.D0 * DJ + 3.D0 ) / ( 2.D0 * DJ + 1.D0 )) * Z ( I - 1 ) I = I + 1 END IF DK = DJ + 2.D0 DO 14 K = J + 2 , L DDK = ( DK * DK - DJ * DJ ) Z ( I ) = X * DSQRT (( 4.D0 * DK * DK - 1.D0 ) / DDK ) * Z ( I - 1 ) - & DSQRT ((( 2.D0 * DK + 1.D0 ) * ( DK - DJ - 1.D0 ) * ( DK + DJ - 1.D0 )) / & (( 2.D0 * DK - 3.D0 ) * DDK )) * Z ( I - 2 ) DK = DK + 1.D0 I = I + 1 14 CONTINUE RETURN END SUBROUTINE PLGNFA SUBROUTINE DPLGND ( MNAUF , Z , DZ ) !! DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN !! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X) !! UND SCHREIBT SIE IN DAS FELD DZ ! DIE REIHENFOLGE IST ! P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) DIMENSION DZ ( 0 :(( MNAUF + 2 ) * ( MNAUF + 3 )) / 2 ) IF ( Z ( 0 ) . NE . 1.D0 ) THEN WRITE ( * , * ) 'DPLGND: Z(0) must be 1.0' STOP END IF LLP = 0 LLH = 0 DO 1 I = 0 , MNAUF + 1 DO 2 J = I , MNAUF + 1 IF ( I . EQ . J ) THEN WURZELA = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELA * Z ( LLP + 1 ) ELSE WURZELB = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELB * Z ( LLP + 1 ) - DBLE ( J + 1 ) * WURZELA * Z ( LLP - 1 ) WURZELA = WURZELB END IF LLH = LLH + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 1 1 CONTINUE RETURN END SUBROUTINE DPLGND SUBROUTINE SPFILTER ( FELDMN , MM , MMAX ) !! Spectral Filter of Sardeshmukh and Hoskins (1984, MWR) ! MM=Spectral truncation of field ! MMAX= Spectral truncation of filter IMPLICIT NONE INTEGER MM , MMAX , I , J , K , L REAL FELDMN ( 0 :( MM + 1 ) * ( MM + 2 ) - 1 ) REAL KMAX , SMAX , FAK SMAX = 0.1 KMAX =- ALOG ( SMAX ) KMAX = KMAX / ( float ( MMAX ) * float ( MMAX + 1 )) ** 2 !    WRITE(*,*)'alogsmax',alog(smax),'KMAX:',KMAX L = 0 DO I = 0 , MM DO J = I , MM !        WRITE(*,*) I,J,FELD(K),FELD(K)*EXP(-KMAX*(J*(J+1))**2) IF ( J . LE . MMAX ) THEN !          FAK=EXP(-KMAX*(J*(J+1))**2) FAK = 1.0 FELDMN ( 2 * L ) = FELDMN ( 2 * L ) * FAK FELDMN ( 2 * L + 1 ) = FELDMN ( 2 * L + 1 ) * FAK ELSE FELDMN ( 2 * L ) = 0. FELDMN ( 2 * L + 1 ) = 0. END IF L = L + 1 END DO END DO END SUBROUTINE SPFILTER END MODULE PHTOGR","tags":"","loc":"sourcefile/phgrreal.f90.html","title":"phgrreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Contents Subroutines POSNAM Source Code posnam.f90 Source Code SUBROUTINE POSNAM ( KULNAM , CDNAML ) !! position in namelist file. ! author:  Mats Hamrud, ECMWF INTEGER , INTENT ( IN ) :: KULNAM CHARACTER * ( * ), INTENT ( IN ) :: CDNAML CHARACTER * 120 CLINE CHARACTER * 1 CLTEST REWIND ( KULNAM ) ILEN = LEN ( CDNAML ) 102 CONTINUE CLINE = ' ' READ ( KULNAM , '(A)' ) CLINE IND1 = INDEX ( CLINE , '&' // CDNAML ) IF ( IND1 . EQ . 0 ) GO TO 102 CLTEST = CLINE ( IND1 + ILEN + 1 : IND1 + ILEN + 1 ) IF ( LGE ( CLTEST , '0' ) . AND . LLE ( CLTEST , '9' ) . OR . & LGE ( CLTEST , 'A' ) . AND . LLE ( CLTEST , 'Z' )) GOTO 102 BACKSPACE ( KULNAM ) RETURN END SUBROUTINE POSNAM","tags":"","loc":"sourcefile/posnam.f90.html","title":"posnam.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~ftrafo.f90~~EfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~ftrafo.f90~~AfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules FTRAFO Source Code ftrafo.f90 Source Code MODULE FTRAFO !! Implementation of the spectral transformation using reduced the Gaussian grid CONTAINS ! Implementierung der spektralen Transformationsmethode unter Verwendung ! des reduzierten Gauss'schen Gitters SUBROUTINE VDTOUV ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , MLAT , MNAUF , NI , NJ , NK ) !! Berechnung der scale winds aus Vorticity und Divergenz !! uebergibt man in XMN die Divergenz, so wird der divergente Anteil des !! Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so !! erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot). !! Summiert man beide, erhaelt man den gesamten Scale wind ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte pro Flaeche ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , N , NI , NJ , NK , MNAUF , GGIND ( NJ / 2 ) INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL RT , IT GGIND ( 1 ) = 0 DO 4 J = 2 , NJ / 2 GGIND ( J ) = GGIND ( J - 1 ) + MLAT ( J - 1 ) 4 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 5 J = 1 , NJ / 2 CALL VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND ( J ), MLAT , MNAUF , NI , NJ , NK ) 5 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE VDTOUV SUBROUTINE VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND , MLAT , MNAUF , NI , NJ , NK ) USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD , SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL FAC ( 0 : MNAUF ), RT , IT ERAD = 636747 0.D0 FAC ( 0 ) = 0.D0 DO 12 N = 1 , MNAUF FAC ( N ) =- ERAD / DBLE ( N ) / DBLE ( N + 1 ) 12 CONTINUE CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) VFOUC ( 2 * M ) =- M * ( SCI + ACI ) VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE RETURN END SUBROUTINE VDUVSUB SUBROUTINE PHGRAD ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MLAT , MNAUF , NI , NJ , NK ) !! Berechnung des Gradienten eines Skalars aus dem Feld des !! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der !! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ / 2 CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE GGIND = GGIND + MLAT ( J ) 4 CONTINUE RETURN END SUBROUTINE PHGRAD SUBROUTINE PHGRACUT ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MAUF , MNAUF , NI , NJ , MANF , NK ) !! Berechnung des Gradienten eines Skalars aus dem Feld des !! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der !! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MAUF , MANF , I , IFAX ( 10 ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NJ , NK ), XPHI ( NI , NJ , NK ) REAL HLAM ( MAXAUF , 2 ), HPHI ( MAXAUF , 2 ) REAL GWSAVE ( 4 * MAUF + 15 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MAUF ) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) CALL RFOURTR ( MVFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) DO 6 I = 0 , NI - 1 IF ( MANF + I . LE . MAUF ) THEN XLAM ( I + 1 , J , K ) = VFOUC ( MANF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF + I - 1 ) ELSE XLAM ( I + 1 , J , K ) = VFOUC ( MANF - MAUF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF - MAUF + I - 1 ) END IF 6 CONTINUE 3 CONTINUE GGIND = GGIND + MAUF 4 CONTINUE RETURN END SUBROUTINE PHGRACUT SUBROUTINE CONTGL ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , ETA , MLAT , A , B , NI , NJ , NK ) !! Berechnung der Divergenz aus dem Windfeld (U,V) !! im Phasenraum. Zurueckgegeben werden die Felder der !! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus ! Beachte, dass das Windfeld eine um 1 erhoehte Aufloesung in mu-Richtung hat. IMPLICIT NONE INTEGER NI , NJ , NK , I , J , K , MLAT ( NJ ), L REAL A ( NK + 1 ), B ( NK + 1 ) REAL PS ( NI ), DPSDL ( NI ), DPSDM ( NI ) REAL DIV ( NI , NK ), U ( NI , NK ), V ( NI , NK ), ETA ( NI , NK ) REAL BREITE ( NJ ) REAL DIVT1 , DIVT2 , POB , PUN , DPSDT , COSB L = 0 DO 4 J = 1 , NJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DO 1 K = 1 , NK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DIVT1 = DIVT1 + DIV ( L , K ) * ( PUN - POB ) IF ( COSB . GT . 0. ) THEN DIVT2 = DIVT2 + ( B ( K + 1 ) - B ( K )) * PS ( L ) * & ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB END IF ETA ( L , K ) =- DIVT1 - DIVT2 1 CONTINUE DPSDT = ( - DIVT1 - DIVT2 ) / PS ( L ) DO 2 K = 1 , NK ETA ( L , K ) = ETA ( L , K ) - DPSDT * B ( K + 1 ) * PS ( L ) 2 CONTINUE PS ( L ) = DPSDT * PS ( L ) 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE CONTGL SUBROUTINE OMEGA ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , E , MLAT , A , B , NGI , NGJ , MKK ) !! calculates $\\omega$ in the hybrid ($\\eta$-) coordinate system ! OMEGA berechnet omega im Hybridkoordinatensystem ! PS ist der Bodendruck, ! DPSDL,DPSDM sind die Komponenten des Gradienten des Logarithmus des ! Bodendrucks ! DIV,U,V sind die horizontale Divergenz und das horizontale Windfeld ! BREITE ist das Feld der Gauss'schen Breiten ! E ist omega, IMPLICIT NONE INTEGER I , J , K , L , NGI , NGJ , MKK , MLAT ( NGJ ) REAL PS ( NGI ), DPSDL ( NGI ), DPSDM ( NGI ), A ( MKK + 1 ), B ( MKK + 1 ) REAL DIV ( NGI , MKK ), U ( NGI , MKK ), V ( NGI , MKK ), E ( NGI , MKK ) REAL BREITE ( NGJ ) REAL DIVT1 , DIVT2 , POB , PUN , DP , X , Y , COSB REAL DIVT3 ( MKK + 2 ) L = 0 DO 4 J = 1 , NGJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DIVT3 ( 1 ) = 0.0 DO 1 K = 1 , MKK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DP = PUN - POB Y = PS ( L ) * ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB IF ( K . LT . 3 ) THEN X = 0.0 ELSE X = ( B ( K + 1 ) - B ( K )) * Y END IF DIVT1 = DIVT1 + DIV ( L , K ) * DP DIVT2 = DIVT2 + X DIVT3 ( K + 1 ) =- DIVT1 - DIVT2 IF ( K . GT . 1 ) THEN E ( L , K ) = 0.5 * ( POB + PUN ) / & DP * Y * (( B ( K + 1 ) - B ( K )) + ( A ( K + 1 ) * B ( K ) - A ( K ) * B ( K + 1 )) / DP * LOG ( PUN / POB )) ELSE E ( L , K ) = 0.0 END IF E ( L , K ) = E ( L , K ) + 0.5 * ( DIVT3 ( K ) + DIVT3 ( K + 1 )) 1 CONTINUE 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE OMEGA END MODULE FTRAFO","tags":"","loc":"sourcefile/ftrafo.f90.html","title":"ftrafo.f90 – Flex_extract: Calculation of etadot"},{"text":"function IA(FIELD1, NI, NJ, NK, G) Calculate something that is roughly log10( maxval(field1)/g ) [PS] Arguments Type Intent Optional Attributes Name real, intent(in) :: FIELD1 (NI,NJ,NK) integer, intent(in) :: NI integer, intent(in) :: NJ integer, intent(in) :: NK real, intent(in) :: G Return Value integer Contents None","tags":"","loc":"proc/ia.html","title":"IA – Flex_extract: Calculation of etadot"},{"text":"subroutine STATIS(NI, NJ, NK, PHI, RMS, MW, SIG) calculate mean, rms, stdev Arguments Type Intent Optional Attributes Name integer :: NI integer :: NJ integer :: NK real :: PHI (NI,NJ,NK) real :: RMS real :: MW real :: SIG Called by proc~~statis~~CalledByGraph proc~statis STATIS program~calc_etadot calc_etadot program~calc_etadot->proc~statis Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/statis.html","title":"STATIS – Flex_extract: Calculation of etadot"},{"text":"subroutine POSNAM(KULNAM, CDNAML) position in namelist file. Arguments Type Intent Optional Attributes Name integer, intent(in) :: KULNAM character(len=*), intent(in) :: CDNAML Called by proc~~posnam~~CalledByGraph proc~posnam POSNAM program~calc_etadot calc_etadot program~calc_etadot->proc~posnam Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/posnam.html","title":"POSNAM – Flex_extract: Calculation of etadot"},{"text":"public subroutine READLATLON(filename, feld, maxl, maxb, mlevel, mpar) Uses GRIB_API proc~~readlatlon~~UsesGraph proc~readlatlon READLATLON GRIB_API GRIB_API proc~readlatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Read a field from GRIB file on lat-lon grid write( , ) 'readlatlon: ',i-1,' records read' Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) Calls proc~~readlatlon~~CallsGraph proc~readlatlon READLATLON grib_count_in_file grib_count_in_file proc~readlatlon->grib_count_in_file grib_close_file grib_close_file proc~readlatlon->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readlatlon~~CalledByGraph proc~readlatlon READLATLON program~calc_etadot calc_etadot program~calc_etadot->proc~readlatlon Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readlatlon.html","title":"READLATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine WRITELATLON(IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) Uses GRIB_API proc~~writelatlon~~UsesGraph proc~writelatlon WRITELATLON GRIB_API GRIB_API proc~writelatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) Calls proc~~writelatlon~~CallsGraph proc~writelatlon WRITELATLON grib_write grib_write proc~writelatlon->grib_write grib_set grib_set proc~writelatlon->grib_set Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/writelatlon.html","title":"WRITELATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine READSPECTRAL(filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) Uses GRIB_API proc~~readspectral~~UsesGraph proc~readspectral READSPECTRAL GRIB_API GRIB_API proc~readspectral->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. read a GRIB file in spherical harmonics write( , ) 'readspectral: ',i-1,' records read' Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1) Calls proc~~readspectral~~CallsGraph proc~readspectral READSPECTRAL grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file grib_close_file grib_close_file proc~readspectral->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readspectral~~CalledByGraph proc~readspectral READSPECTRAL program~calc_etadot calc_etadot program~calc_etadot->proc~readspectral Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readspectral.html","title":"READSPECTRAL – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPH213(CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~grph213~~CallsGraph proc~grph213 GRPH213 ind ind proc~grph213->ind proc~grphsub GRPHSUB proc~grph213->proc~grphsub Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~grph213~~CalledByGraph proc~grph213 GRPH213 program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grph213.html","title":"GRPH213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPHSUB(L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~grphsub~~CalledByGraph proc~grphsub GRPHSUB proc~grph213 GRPH213 proc~grph213->proc~grphsub program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grphsub.html","title":"GRPHSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine LGTR213(CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) DIESE ROUTINE BERECHNET DIE KFFKs CXMN Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB Contents None","tags":"","loc":"proc/lgtr213.html","title":"LGTR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOUFTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfouftr~~CallsGraph proc~rfouftr RFOUFTR wsave wsave proc~rfouftr->wsave fft99 fft99 proc~rfouftr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfouftr.html","title":"RFOUFTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGR213(CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgr213~~CallsGraph proc~phgr213 PHGR213 proc~phsym PHSYM proc~phgr213->proc~phsym Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgr213~~CalledByGraph proc~phgr213 PHGR213 program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgr213.html","title":"PHGR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYM(K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~phsym~~CalledByGraph proc~phsym PHSYM proc~phgr213 PHGR213 proc~phgr213->proc~phsym program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsym.html","title":"PHSYM – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGCUT(CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt\n Der Erde angegeben werden. Diese Routine ist langsamer als phgrph WRITE(*,*) 'Symmetrisch: ',SYM Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgcut~~CallsGraph proc~phgcut PHGCUT proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgcut~~CalledByGraph proc~phgcut PHGCUT program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgcut.html","title":"PHGCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYMCUT(J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF Calls proc~~phsymcut~~CallsGraph proc~phsymcut PHSYMCUT proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phsymcut~~CalledByGraph proc~phsymcut PHSYMCUT proc~phgcut PHGCUT proc~phgcut->proc~phsymcut program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsymcut.html","title":"PHSYMCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGPNS(CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL Calls proc~~phgpns~~CallsGraph proc~phgpns PHGPNS proc~rfourtr RFOURTR proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgpns~~CalledByGraph proc~phgpns PHGPNS proc~phgcut PHGCUT proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgpns.html","title":"PHGPNS – Flex_extract: Calculation of etadot"},{"text":"public subroutine LEGTR(CXMN, CXM, Z, MNAUF, MAUF) DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF Contents None","tags":"","loc":"proc/legtr.html","title":"LEGTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOURTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfourtr~~CallsGraph proc~rfourtr RFOURTR fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~rfourtr~~CalledByGraph proc~rfourtr RFOURTR proc~phsymcut PHSYMCUT proc~phsymcut->proc~rfourtr proc~phgpns PHGPNS proc~phgpns->proc~rfourtr proc~phgracut PHGRACUT proc~phgracut->proc~rfourtr proc~phgcut PHGCUT proc~phgcut->proc~phsymcut proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfourtr.html","title":"RFOURTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine GAULEG(X1, X2, X, W, N) BERECHNET DIE GAUSS+SCHEN BREITEN Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N Calls proc~~gauleg~~CallsGraph proc~gauleg GAULEG dcos dcos proc~gauleg->dcos Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~gauleg~~CalledByGraph proc~gauleg GAULEG program~calc_etadot calc_etadot program~calc_etadot->proc~gauleg Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/gauleg.html","title":"GAULEG – Flex_extract: Calculation of etadot"},{"text":"public subroutine PLGNFA(LL, X, Z) PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD Z Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z Contents None","tags":"","loc":"proc/plgnfa.html","title":"PLGNFA – Flex_extract: Calculation of etadot"},{"text":"public subroutine DPLGND(MNAUF, Z, DZ) DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD DZ Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ Contents None","tags":"","loc":"proc/dplgnd.html","title":"DPLGND – Flex_extract: Calculation of etadot"},{"text":"public subroutine SPFILTER(FELDMN, MM, MMAX) Spectral Filter of Sardeshmukh and Hoskins (1984, MWR) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX Calls proc~~spfilter~~CallsGraph proc~spfilter SPFILTER float float proc~spfilter->float alog alog proc~spfilter->alog Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/spfilter.html","title":"SPFILTER – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDTOUV(XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vdtouv~~UsesGraph proc~vdtouv VDTOUV module~phtogr PHTOGR proc~vdtouv->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Berechnung der scale winds aus Vorticity und Divergenz\n uebergibt man in XMN die Divergenz, so wird der divergente Anteil des\n Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so\n erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).\n Summiert man beide, erhaelt man den gesamten Scale wind Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vdtouv.html","title":"VDTOUV – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDUVSUB(J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vduvsub~~UsesGraph proc~vduvsub VDUVSUB module~phtogr PHTOGR proc~vduvsub->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vduvsub.html","title":"VDUVSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRAD(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~phgrad~~UsesGraph proc~phgrad PHGRAD module~phtogr PHTOGR proc~phgrad->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Called by proc~~phgrad~~CalledByGraph proc~phgrad PHGRAD program~calc_etadot calc_etadot program~calc_etadot->proc~phgrad Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgrad.html","title":"PHGRAD – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRACUT(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Uses PHTOGR proc~~phgracut~~UsesGraph proc~phgracut PHGRACUT module~phtogr PHTOGR proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK Calls proc~~phgracut~~CallsGraph proc~phgracut PHGRACUT proc~rfourtr RFOURTR proc~phgracut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgracut.html","title":"PHGRACUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine CONTGL(PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Berechnung der Divergenz aus dem Windfeld (U,V)\n im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/contgl.html","title":"CONTGL – Flex_extract: Calculation of etadot"},{"text":"public subroutine OMEGA(PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) calculates $\\omega$ in the hybrid ($\\eta$-) coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK Contents None","tags":"","loc":"proc/omega.html","title":"OMEGA – Flex_extract: Calculation of etadot"},{"text":"Used by module~~rwgrib2~~UsedByGraph module~rwgrib2 RWGRIB2 program~calc_etadot calc_etadot program~calc_etadot->module~rwgrib2 Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines READLATLON WRITELATLON READSPECTRAL Subroutines public subroutine READLATLON (filename, feld, maxl, maxb, mlevel, mpar) Read a field from GRIB file on lat-lon grid Read more… Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) public subroutine WRITELATLON (IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) public subroutine READSPECTRAL (filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) read a GRIB file in spherical harmonics Read more… Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1)","tags":"","loc":"module/rwgrib2.html","title":"RWGRIB2 – Flex_extract: Calculation of etadot"},{"text":"Uses PHTOGR module~~grtoph~~UsesGraph module~grtoph GRTOPH module~phtogr PHTOGR module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Used by module~~grtoph~~UsedByGraph module~grtoph GRTOPH program~calc_etadot calc_etadot program~calc_etadot->module~grtoph Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines GRPH213 GRPHSUB LGTR213 RFOUFTR Subroutines public subroutine GRPH213 (CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine GRPHSUB (L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine LGTR213 (CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) Read more… Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB public subroutine RFOUFTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN","tags":"","loc":"module/grtoph.html","title":"GRTOPH – Flex_extract: Calculation of etadot"},{"text":"Used by module~~phtogr~~UsedByGraph module~phtogr PHTOGR proc~vduvsub VDUVSUB proc~vduvsub->module~phtogr program~calc_etadot calc_etadot program~calc_etadot->module~phtogr module~grtoph GRTOPH program~calc_etadot->module~grtoph proc~phgrad PHGRAD proc~phgrad->module~phtogr module~grtoph->module~phtogr proc~vdtouv VDTOUV proc~vdtouv->module~phtogr proc~phgracut PHGRACUT proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Variables MAXAUF Subroutines PHGR213 PHSYM PHGCUT PHSYMCUT PHGPNS LEGTR RFOURTR GAULEG PLGNFA DPLGND SPFILTER Variables Type Visibility Attributes Name Initial integer, public, parameter :: MAXAUF = 36000 Subroutines public subroutine PHGR213 (CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYM (K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHGCUT (CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt\n Der Erde angegeben werden. Diese Routine ist langsamer als phgrph Read more… Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYMCUT (J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF public subroutine PHGPNS (CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL public subroutine LEGTR (CXMN, CXM, Z, MNAUF, MAUF) DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF public subroutine RFOURTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Read more… Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN public subroutine GAULEG (X1, X2, X, W, N) BERECHNET DIE GAUSS+SCHEN BREITEN Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N public subroutine PLGNFA (LL, X, Z) PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD Z Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z public subroutine DPLGND (MNAUF, Z, DZ) DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD DZ Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ public subroutine SPFILTER (FELDMN, MM, MMAX) Spectral Filter of Sardeshmukh and Hoskins (1984, MWR) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX","tags":"","loc":"module/phtogr.html","title":"PHTOGR – Flex_extract: Calculation of etadot"},{"text":"Implementation of the spectral transformation using reduced the Gaussian grid Used by module~~ftrafo~~UsedByGraph module~ftrafo FTRAFO program~calc_etadot calc_etadot program~calc_etadot->module~ftrafo Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines VDTOUV VDUVSUB PHGRAD PHGRACUT CONTGL OMEGA Subroutines public subroutine VDTOUV (XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Berechnung der scale winds aus Vorticity und Divergenz\n uebergibt man in XMN die Divergenz, so wird der divergente Anteil des\n Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so\n erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).\n Summiert man beide, erhaelt man den gesamten Scale wind Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine VDUVSUB (J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRAD (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRACUT (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK public subroutine CONTGL (PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Berechnung der Divergenz aus dem Windfeld (U,V)\n im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK public subroutine OMEGA (PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) calculates $\\omega$ in the hybrid ($\\eta$-) coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK","tags":"","loc":"module/ftrafo.html","title":"FTRAFO – Flex_extract: Calculation of etadot"},{"text":"Uses PHTOGR GRTOPH FTRAFO RWGRIB2 GRIB_API program~~calc_etadot~~UsesGraph program~calc_etadot calc_etadot module~phtogr PHTOGR program~calc_etadot->module~phtogr module~rwgrib2 RWGRIB2 program~calc_etadot->module~rwgrib2 module~ftrafo FTRAFO program~calc_etadot->module~ftrafo module~grtoph GRTOPH program~calc_etadot->module~grtoph GRIB_API GRIB_API program~calc_etadot->GRIB_API module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Prepare input data for FLEXPART, esp. vertical velocity as \n etadot or etadot * dp/deta author: L. Haimberger\n date:   03/2010\n version: V4.0 Program calc_etadot Prepares input data for POP model meteorological preprocessor Calculation of etapoint on a regular \\lambda-\\phi grid and writing U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, \n EWSS,NSSS to an output file (input and output in GRIB 1 or 2 format). etapoint is defined as the total time derivative of \n  ECMWF vertical coordinate eta multiplied by the derivative\n  of pressure with respect to eta: \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} Version history and authors: 04/1994: Leopold Haimberger, Gerhard Wotawa 2003-05-11: Alexander Beck 12/2006: L. Haimberger V2.0,\n           handle arbitrary regular grids and T799 resolution data 03/2010: L. Haimberger V4.0,\n           handle GRIB edition 2 fields and T1279 resolution data 04-06/2019: Petra Seibert, \n            beautify code and add FORD documentation # Input required: UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION\n\n 11    fort.11   T,U,V           regular lambda phi grid\n 12    fort.12   D               regular lambda phi grid   \n 13    fort.13   LNSP            spherical harmonics\n 14    fort.14   SD,MSL,TCC,10U,                                \n                 10V,2T,2D       regular lambda phi grid     \n 16    fort.16   LSP,CP,SSHF,         \n                 SSR,EWSS,NSSS   regular lambda phi grid\n 17    fort.17   Q               regular lambda phi grid Output produced: UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION\n\n15    fort.15   `U,V,ETA,T,PS,                                  \n                `Q,SD,MSL,TCC,`                                  \n                `10U,10V,2T,2D,`  regular lambda phi grid         \n                `LSP,CP,SSHF,`                                   \n                `SSR,EWSS,NSSS` ALLOCATE VARIABLES Initialisieren  Legendretransformation auf das LaT/LON Gitter Initialisation of fields for FFT and Legendre transformation\n to Gaussian grid and back to phase space\n  read LNSP in SH\n  read u,v in SH\n  Transformieren des Windes auf das Gaussgitter read DIV in SH\n Transformieren der horizontalen Divergenz auf das Gaussgitter Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter Berechnung von Omega auf dem Gaussgitter READING OF SURFACE PRESSURE READING OF U,V READING OF LNSP on grid READING OF DIVERGENCE Initialisieren  Legendretransformation auf das LaT/LON Gitter\n Without Gaussian grid calculation Legendre Polynomials are calculated\n only for one latitude to save space CREATE FILE VERTICAL.EC NEEDED BY POP MODEL READING OF T READING OF SPECIFIC HUMIDITY WRITE MODEL LEVEL DATA TO fort.15 Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)\n Now we are transforming back to the usual winds. Calls program~~calc_etadot~~CallsGraph program~calc_etadot calc_etadot proc~readspectral READSPECTRAL program~calc_etadot->proc~readspectral proc~phgcut PHGCUT program~calc_etadot->proc~phgcut proc~grph213 GRPH213 program~calc_etadot->proc~grph213 grib_close_file grib_close_file program~calc_etadot->grib_close_file proc~statis STATIS program~calc_etadot->proc~statis proc~phgr213 PHGR213 program~calc_etadot->proc~phgr213 proc~gauleg GAULEG program~calc_etadot->proc~gauleg grib_open_file grib_open_file program~calc_etadot->grib_open_file set99 set99 program~calc_etadot->set99 proc~posnam POSNAM program~calc_etadot->proc~posnam proc~readlatlon READLATLON program~calc_etadot->proc~readlatlon proc~phgrad PHGRAD program~calc_etadot->proc~phgrad proc~readspectral->grib_close_file grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~grphsub GRPHSUB proc~grph213->proc~grphsub ind ind proc~grph213->ind proc~phsym PHSYM proc~phgr213->proc~phsym dcos dcos proc~gauleg->dcos proc~readlatlon->grib_close_file proc~readlatlon->grib_count_in_file proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents Variables LNPS Z T UV UV2 QA OM OMR DIV ETA ETAR DPSDL DPSDM PS DPSDT SURF FLUX OROLSM WSAVE H SINL COSL WSAVE2 BREITE GBREITE AK BK pv X1 X2 RMS MW SIG LAM CUA CVA P PP P2 XMN HILFUV LNPMN LNPMN2 LNPMN3 WEIGHT UGVG DG ETAG GWSAVE PSG HILF MLAT MPSURF MPFLUX MPORO MPAR GIFAX PI COSB DAK DBK P00 URLAR8 JMIN1 LLLAR8 MAXBMIN1 PIR8 DCOSB I J K L IERR M LTEST MK NGI NGJ MFLUX MSURF MORO LUNIT LUNIT2 MAXL MAXB MLEVEL LEVOUT LEVMIN LEVMAX MOMEGA MOMEGADIFF MGAUSS MSMOOTH MNAUF META METADIFF MDPDETA METAPAR RLO0 RLO1 RLA0 RLA1 MLEVELIST MAUF MANF IFAX IGRIB iret ogrib FILENAME Variables Type Attributes Name Initial real, ALLOCATABLE, DIMENSION (:,:) :: LNPS real, ALLOCATABLE, DIMENSION (:,:) :: Z real, ALLOCATABLE, DIMENSION (:,:,:) :: T real, ALLOCATABLE, DIMENSION (:,:,:) :: UV real, ALLOCATABLE, DIMENSION (:,:,:) :: UV2 real, ALLOCATABLE, DIMENSION (:,:,:) :: QA real, ALLOCATABLE, DIMENSION (:,:,:) :: OM real, ALLOCATABLE, DIMENSION (:,:,:) :: OMR real, ALLOCATABLE, DIMENSION (:,:,:) :: DIV real, ALLOCATABLE, DIMENSION (:,:,:) :: ETA real, ALLOCATABLE, DIMENSION (:,:,:) :: ETAR real, ALLOCATABLE, DIMENSION (:,:) :: DPSDL real, ALLOCATABLE, DIMENSION (:,:) :: DPSDM real, ALLOCATABLE, DIMENSION (:,:,:) :: PS real, ALLOCATABLE, DIMENSION (:,:,:) :: DPSDT real, ALLOCATABLE, DIMENSION (:,:,:) :: SURF real, ALLOCATABLE, DIMENSION (:,:,:) :: FLUX real, ALLOCATABLE, DIMENSION (:,:,:) :: OROLSM real, ALLOCATABLE, DIMENSION (:) :: WSAVE real, ALLOCATABLE, DIMENSION (:) :: H real, ALLOCATABLE, DIMENSION (:) :: SINL real, ALLOCATABLE, DIMENSION (:) :: COSL real, ALLOCATABLE, DIMENSION (:) :: WSAVE2 real, ALLOCATABLE, DIMENSION (:) :: BREITE real, ALLOCATABLE, DIMENSION (:) :: GBREITE real, ALLOCATABLE, DIMENSION (:) :: AK real, ALLOCATABLE, DIMENSION (:) :: BK real, ALLOCATABLE, DIMENSION (:) :: pv real :: X1 real :: X2 real :: RMS real :: MW real :: SIG real :: LAM real, ALLOCATABLE :: CUA (:,:,:) real, ALLOCATABLE :: CVA (:,:,:) real, ALLOCATABLE, DIMENSION (:,:) :: P real, ALLOCATABLE, DIMENSION (:,:) :: PP real, ALLOCATABLE, DIMENSION (:,:) :: P2 real, ALLOCATABLE, DIMENSION (:,:) :: XMN real, ALLOCATABLE, DIMENSION (:,:) :: HILFUV real, ALLOCATABLE, DIMENSION (:) :: LNPMN real, ALLOCATABLE, DIMENSION (:) :: LNPMN2 real, ALLOCATABLE, DIMENSION (:) :: LNPMN3 real, ALLOCATABLE, DIMENSION (:) :: WEIGHT real, ALLOCATABLE, DIMENSION (:,:) :: UGVG real, ALLOCATABLE, DIMENSION (:,:) :: DG real, ALLOCATABLE, DIMENSION (:,:) :: ETAG real, ALLOCATABLE, DIMENSION (:,:) :: GWSAVE real, ALLOCATABLE, DIMENSION (:) :: PSG real, ALLOCATABLE, DIMENSION (:) :: HILF integer, ALLOCATABLE, DIMENSION (:) :: MLAT integer, ALLOCATABLE, DIMENSION (:) :: MPSURF integer, ALLOCATABLE, DIMENSION (:) :: MPFLUX integer, ALLOCATABLE, DIMENSION (:) :: MPORO integer, ALLOCATABLE, DIMENSION (:) :: MPAR integer, ALLOCATABLE :: GIFAX (:,:) real :: PI real :: COSB real :: DAK real :: DBK real :: P00 real :: URLAR8 real :: JMIN1 real :: LLLAR8 real :: MAXBMIN1 real :: PIR8 real :: DCOSB integer :: I integer :: J integer :: K integer :: L integer :: IERR integer :: M integer :: LTEST integer :: MK integer :: NGI integer :: NGJ integer :: MFLUX integer :: MSURF integer :: MORO integer :: LUNIT integer :: LUNIT2 integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: LEVOUT integer :: LEVMIN integer :: LEVMAX integer :: MOMEGA integer :: MOMEGADIFF integer :: MGAUSS integer :: MSMOOTH integer :: MNAUF integer :: META integer :: METADIFF integer :: MDPDETA integer :: METAPAR real :: RLO0 real :: RLO1 real :: RLA0 real :: RLA1 character(len=300) :: MLEVELIST integer :: MAUF integer :: MANF integer :: IFAX (10) integer :: IGRIB (1) integer :: iret integer :: ogrib character(len=80) :: FILENAME","tags":"","loc":"program/calc_etadot.html","title":"calc_etadot – Flex_extract: Calculation of etadot"}]}
\ No newline at end of file
+var tipuesearch = {"pages":[{"text":"Flex_extract: Calculation of etadot Developer Info Leopold Haimberger 1 1 Univ. of Vienna, Dept. of Meteorology & Geophysics","tags":"home","loc":"index.html","title":" Flex_extract: Calculation of etadot "},{"text":"This file depends on sourcefile~~calc_etadot.f90~~EfferentGraph sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Programs calc_etadot Functions IA Subroutines STATIS Source Code calc_etadot.f90 Source Code PROGRAM calc_etadot !! Prepare input data for FLEXPART, esp. vertical velocity as !! etadot or etadot * dp/deta !*---------------------------------------------------------------- ! author: L. Haimberger ! date:   03/2010 ! version: V4.0 ! !## Program calc_etadot ! ! **Prepares input data for POP model meteorological preprocessor** ! !----------------------------------------------------------------- ! ! Calculation of etapoint on a regular \\lambda-\\phi grid and writing ! `U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, ! EWSS,NSSS` ! to an output file (input and output in GRIB 1 or 2 format). !  etapoint is defined as the total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} ! !### Version history and authors: ! - 04/1994: Leopold Haimberger, Gerhard Wotawa ! ! - 2003-05-11: Alexander Beck ! ! - 12/2006: L. Haimberger V2.0, !           handle arbitrary regular grids and T799 resolution data ! ! - 03/2010: L. Haimberger V4.0, !           handle GRIB edition 2 fields and T1279 resolution data ! - 04-06/2019: Petra Seibert, !            beautify code and add FORD documentation ! - 06/2020: Petra Seibert, translate some comments into English !            comment out writing of VERTICAL.EC ! !----------------------------------------------------------------- ! !## Input required: ! !     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION ! !     11    fort.11   T,U,V           regular lat-lon grid !     12    fort.12   D               regular lat-lon grid !     13    fort.13   LNSP            spherical harmonics !     14    fort.14   SD,MSL,TCC,10U, !                     10V,2T,2D       regular lat-lon grid !     16    fort.16   LSP,CP,SSHF, !                     SSR,EWSS,NSSS   regular lat-lon grid !     17    fort.17   Q               regular lat-lon grid ! !------------------------------------------------------------------ ! !### Output produced: ! !    UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION ! !    15    fort.15   `U,V,ETA,T,PS, !                    `Q,SD,MSL,TCC,` !                    `10U,10V,2T,2D,`  regular lat-lon grid !                    `LSP,CP,SSHF,` !                    `SSR,EWSS,NSSS` ! !------------------------------------------------------------------ ! Original version: ! Prepares input data for POP model meteorological preprocessor USE PHTOGR USE GRTOPH USE FTRAFO USE RWGRIB2 USE GRIB_API IMPLICIT NONE REAL , ALLOCATABLE , DIMENSION (:,:) :: LNPS REAL , ALLOCATABLE , DIMENSION (:,:) :: Z REAL , ALLOCATABLE , DIMENSION (:,:,:) :: T , UV , UV2 REAL , ALLOCATABLE , DIMENSION (:,:,:) :: QA , OM , OMR REAL , ALLOCATABLE , DIMENSION (:,:,:) :: DIV , ETA , ETAR REAL , ALLOCATABLE , DIMENSION (:,:) :: DPSDL , DPSDM REAL , ALLOCATABLE , DIMENSION (:,:,:) :: PS , DPSDT REAL , ALLOCATABLE , DIMENSION (:,:,:) :: SURF , FLUX , OROLSM REAL , ALLOCATABLE , DIMENSION (:) :: WSAVE , H , SINL , COSL , WSAVE2 REAL , ALLOCATABLE , DIMENSION (:) :: BREITE , GBREITE , AK , BK , pv ! Arrays for Gaussian grid calculations REAL :: X1 , X2 , RMS , MW , SIG , LAM REAL , ALLOCATABLE :: CUA (:,:,:), CVA (:,:,:) REAL , ALLOCATABLE , DIMENSION (:,:) :: P , PP , P2 REAL , ALLOCATABLE , DIMENSION (:,:) :: XMN , HILFUV REAL , ALLOCATABLE , DIMENSION (:) :: LNPMN , LNPMN2 , LNPMN3 REAL , ALLOCATABLE , DIMENSION (:) :: WEIGHT REAL , ALLOCATABLE , DIMENSION (:,:) :: UGVG REAL , ALLOCATABLE , DIMENSION (:,:) :: DG , ETAG REAL , ALLOCATABLE , DIMENSION (:,:) :: GWSAVE REAL , ALLOCATABLE , DIMENSION (:) :: PSG , HILF ! end arrays for Gaussian grid calculations INTEGER , ALLOCATABLE , DIMENSION (:) :: MLAT , MPSURF , MPFLUX , MPORO , MPAR INTEGER , ALLOCATABLE :: GIFAX (:,:) REAL PI , COSB , DAK , DBK , P00 REAL URLAR8 , JMIN1 , LLLAR8 , MAXBMIN1 , PIR8 , DCOSB INTEGER I , J , K , L , IERR , M , LTEST , MK , NGI , NGJ INTEGER MFLUX , MSURF , MORO INTEGER LUNIT , LUNIT2 INTEGER MAXL , MAXB , MLEVEL , LEVOUT , LEVMIN , LEVMAX INTEGER MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , MNAUF , META , METADIFF INTEGER MDPDETA , METAPAR REAL RLO0 , RLO1 , RLA0 , RLA1 CHARACTER * 300 MLEVELIST INTEGER MAUF , MANF , IFAX ( 10 ) INTEGER IGRIB ( 1 ), iret , ogrib CHARACTER * 80 FILENAME NAMELIST / NAMGEN / & MAXL , MAXB , & MLEVEL , MLEVELIST , MNAUF , METAPAR , & RLO0 , RLO1 , RLA0 , RLA1 , & MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , META , METADIFF ,& MDPDETA LTEST = 1 CALL POSNAM ( 4 , 'NAMGEN' ) READ ( 4 , NAMGEN ) MAUF = INT ( 36 0. * ( REAL ( MAXL ) - 1. ) / ( RLO1 - RLO0 ) + 0.0001 ) !      PRINT*, MAUF MANF = INT ( REAL ( MAUF ) / 36 0. * ( 36 0. + RLO0 ) + 1.0001 ) IF ( MANF . gt . MAUF ) MANF = MANF - MAUF !------------------------------------------------------------------ !! ALLOCATE VARIABLES !------------------------------------------------------------------ ALLOCATE ( LNPS ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 1 )) ALLOCATE ( H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 )) ALLOCATE ( OM ( MAXL , MAXB , MLEVEL )) ALLOCATE ( ETA ( MAXL , MAXB , MLEVEL )) ALLOCATE ( PS ( MAXL , MAXB , 1 ), DPSDT ( MAXL , MAXB , 1 )) ALLOCATE ( WSAVE ( 4 * MAUF + 15 ), WSAVE2 ( 4 * MAUF + 15 )) ALLOCATE ( BREITE ( MAXB ), AK ( MLEVEL + 1 ), BK ( MLEVEL + 1 ), PV ( 2 * MLEVEL + 2 )) ALLOCATE ( MPAR ( 2 )) ALLOCATE ( COSL ( MAXL ), SINL ( MAXL )) ALLOCATE ( CUA ( 2 , 4 , MLEVEL ), CVA ( 2 , 4 , MLEVEL )) !------------------------------------------------------------------ ! GAUSS STUFF !------------------------------------------------------------------ IF ( MGAUSS . EQ . 1 ) THEN LUNIT = 0 FILENAME = 'fort.18' CALL GRIB_OPEN_FILE ( LUNIT , TRIM ( FILENAME ), 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT , IGRIB ( 1 ), IRET ) ! we can close the file CALL GRIB_CLOSE_FILE ( LUNIT ) !      call grib_get(igrib(1),'gridType', j) NGJ = MNAUF + 1 ALLOCATE ( GWSAVE ( 8 * NGJ + 15 , NGJ / 2 )) ALLOCATE ( GIFAX ( 10 , NGJ )) ALLOCATE ( GBREITE ( NGJ ), WEIGHT ( NGJ )) ALLOCATE ( MLAT ( NGJ )) ALLOCATE ( P ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , NGJ / 2 )) ALLOCATE ( PP ( NGJ / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 )) ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB )) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfPointsAlongAMeridian' , NGJ ) !   get as a integer call grib_get ( igrib ( 1 ), 'pl' , MLAT ) NGI = SUM ( MLAT ) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfVerticalCoordinateValues' , MK ) IF ( MK / 2 - 1 . NE . MLEVEL ) THEN WRITE ( * , * ) 'FATAL: Number of model levels' , mk , & ' does not agree with' , MLEVEL , ' in namelist' STOP END IF call grib_get ( igrib ( 1 ), 'pv' , pv ) AK = PV ( 1 : 1 + MLEVEL ) BK = PV ( 2 + MLEVEL : 2 * MLEVEL + 2 ) ALLOCATE ( LNPMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( LNPMN2 ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( UGVG ( NGI , 2 * MLEVEL ), HILFUV ( 2 * MAXL , 2 )) ALLOCATE ( DPSDL ( NGI , 1 ), DPSDM ( NGI , 1 )) ALLOCATE ( PSG ( NGI ), HILF ( NGI )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL )) !      ALLOCATE (UV2(MAXL, MAXB, 2*MLEVEL)) ALLOCATE ( XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 2 * MLEVEL )) ALLOCATE ( DG ( NGI , MLEVEL ), ETAG ( NGI , MLEVEL )) !! Initialise  Legendre transformation on the lat-lon grid PI = ACOS ( - 1.D0 ) !$OMP PARALLEL DO DO 20 J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , J )) 20 CONTINUE !$OMP END PARALLEL DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) !* Initialisation of fields for FFT and Legendre transformation ! to Gaussian grid and back to phase space X1 =- 1.D0 X2 = 1.D0 CALL GAULEG ( X1 , X2 , GBREITE , WEIGHT , NGJ ) !$OMP PARALLEL DO PRIVATE(M) DO J = 1 , NGJ / 2 CALL PLGNFA ( MNAUF , GBREITE ( J ), P (:, J )) DO M = 0 ,( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 PP ( J , M ) = P ( M , J ) END DO END DO !$OMP END PARALLEL DO !       MPAR(1)=152 FILENAME = 'fort.12' !!  read LNSP in SH CALL READSPECTRAL ( FILENAME , LNPMN , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) CALL SET99 ( WSAVE , IFAX , mauf ) CALL PHGCUT ( LNPMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , EXP ( PS ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG DO J = 1 , NGJ / 2 CALL SET99 ( GWSAVE ( 1 , J ), GIFAX ( 1 , J ), MLAT ( J )) END DO CALL PHGR213 ( LNPMN , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) PSG = HILF CALL GRPH213 ( LNPMN2 , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL PHGR213 ( LNPMN2 , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) HILF = exp ( PSG ) - exp ( HILF ) CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS ratio of PS: ' , RMS , MW , SIG PSG = EXP ( PSG ) HILF = PSG CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG: ' , RMS , MW , SIG 111 FILENAME = 'fort.10' !!  read u,v in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , 2 * MLEVEL , MLEVEL ,( / 131 , 132 / ), AK , BK ) !!  Transforming the wind to the Gaussian grid CALL PHGR213 ( XMN , UGVG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 2 * MLEVEL ) DO K = 1 , MLEVEL ! North Pole CALL JSPPOLE ( XMN (:, K ), 1 , MNAUF ,. TRUE ., CUA (:,:, K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), 1 , MNAUF ,. TRUE ., CVA (:,:, K )) ! South Pole CALL JSPPOLE ( XMN (:, K ), - 1 , MNAUF ,. TRUE ., CUA (:, 3 : 4 , K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), - 1 , MNAUF ,. TRUE ., CVA (:, 3 : 4 , K )) END DO DO K = 1 , 2 * MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , UV , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 2 * MLEVEL ) 112 FILENAME = 'fort.13' !!  read DIV in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , MLEVEL , MLEVEL ,( / 155 / ), AK , BK ) !! Transform horizontal divergence to the Gaussian grid CALL PHGR213 ( XMN , DG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , DG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS DG-PS: ' , RMS , MW , SIG !! Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid CALL PHGRAD ( LNPMN , DPSDL , DPSDM , GWSAVE , GIFAX , P , H , MLAT , MNAUF , NGI , NGJ , 1 ) !! Calculation of the vertical velocity on the Gaussian grid CALL CONTGL ( HILF , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) ! note that HILF is ps on input and  dpsdt*ps on output CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , ETA , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETA , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETA-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , HILF , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS HILF-PS: ' , RMS , MW , SIG IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, 1 ), MNAUF , MSMOOTH ) CALL PHGCUT ( XMN , DPSDT , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , DPSDT , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS DPSDT: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN !! Calculation of omega on the Gaussian grid CALL OMEGA ( PSG , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , OM , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END IF ! MOMEGA CALL GRPH213 ( XMN , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PSG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG-PS: ' , RMS , MW , SIG CALL PHGCUT ( XMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PS , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG 114 DEALLOCATE ( HILF , PSG , DPSDL , DPSDM , ETAG , DG , LNPMN ) !      ALLOCATE (UV(MAXL, MAXB, 2*MLEVEL)) ! CALL GRPH213(XMN,UGVG,GWSAVE,GIFAX,PP,WEIGHT,MLAT, !     *MNAUF,NGI,NGJ,2*MLEVEL) !        DO K=1,2*MLEVEL !          IF (MSMOOTH .ne. 0) CALL SPFILTER(XMN(:,K),MNAUF,MSMOOTH) !        END DO !        CALL PHGCUT(XMN,UV,WSAVE,IFAX,Z, !     *MNAUF,MNAUF,MAUF,MANF,MAXL,MAXB,2*MLEVEL) DEALLOCATE ( PP , P , UGVG , MLAT , GBREITE , WEIGHT , GWSAVE , XMN ) !        CALL ETAGAUSS(Z,WSAVE !     *,BREITE,UV,ETA,OM,PS, !     *MAUF,MAXB,MAXL,MANF,MNAUF,MLEVEL,MSMOOTH) ELSE !----------------------------------------------------------------- !     READING OF PREPARED METEOROLOGICAL FIELDS ! !     THE FOLLOWING FIELDS ARE EXPECTED: ! !     UNIT 11: T,U,V        (REGULAR GRID) !     UNIT 17: Q            (REGULAR GRID) !     UNIT 13: D            (REGULAR GRID) !     UNIT 12: LNSP         (SPHERICAL HARMONICS) !     UNIT 14: SURFACE DATA (REGULAR GRID) !     UNIT 16: FLUX DATA    (REGULAR GRID) !------------------------------------------------------------------ ALLOCATE ( MLAT ( MAXB )) MLAT = MAXL ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , 1 )) ALLOCATE ( DPSDL ( MAXL , MAXB ), DPSDM ( MAXL , MAXB )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL ), DIV ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF SURFACE PRESSURE !------------------------------------------------------------------ FILENAME = 'fort.12' CALL READSPECTRAL ( FILENAME , LNPS , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) !------------------------------------------------------------------ !! READING OF U,V !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.10' CALL READLATLON ( FILENAME , UV , MAXL , MAXB , 2 * MLEVEL ,( / 131 , 132 / )) PI = ACOS ( - 1.D0 ) DO J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) END DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) DO K = 1 , 2 * MLEVEL DO J = 1 , MAXB COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) / 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) * COSB END IF END DO END DO !------------------------------------------------------------------ !! READING OF LNSP on grid !------------------------------------------------------------------ ! For debugging only !      FILENAME='LNSPG_G.20060330.600' !      INQUIRE(FILE=FILENAME,EXIST=EX) !      CALL READLATLON(FILENAME,QA, !     *MAXL,MAXB,1,1,(/152/)) !------------------------------------------------------------------ !! READING OF DIVERGENCE !------------------------------------------------------------------ IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN FILENAME = 'fort.13' CALL READLATLON ( FILENAME , DIV , MAXL , MAXB , MLEVEL ,( / 155 / )) END IF !------------------------------------------------------------------ ! !  Calculation of etapoint --> total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} !------------------------------------------------------------------ !------------------------------------------------------------------ !* Initialise Legendre transformation on the lat-lon grid. !! Without Gaussian grid calculation, !! Legendre polynomials are calculated only for one latitude, to save space DO J = 1 , MAXB CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , 1 )) CALL PHGCUT ( LNPS , PS (:, J , 1 ), WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , 1 , 1 ) IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN CALL PHGRACUT ( LNPS , DPSDL (:, J ), DPSDM (:, J ), WSAVE , IFAX , Z , H , MAUF , & MNAUF , MAXL , 1 , MANF , 1 ) END IF END DO PS = EXP ( PS ) ! For debugging only CALL STATIS ( MAXL , MAXB , 1 , PS (:,:, 1 ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN CALL OMEGA ( PS , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , OM , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF IF ( META . EQ . 0 . OR . METADIFF . ne . 0 ) THEN DPSDT = PS CALL CONTGL ( DPSDT , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , ETA , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF END IF ! MGAUSS ! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL ! 2020-06-25 Commented out by PS - not needed anymore !  OPEN(21,FILE='VERTICAL.EC') !  WRITE(21,'(A)') !  WRITE(21,'(A)') 'VERTICAL DISCRETIZATION OF POP MODEL' !  WRITE(21,'(A)') !  write(21,'(i3,a)') MLEVEL,'   number of layers' !  WRITE(21,'(A)') !  WRITE(21,'(A)') '* A(NLEV+1)' !  WRITE(21,'(A)') !  DO 205 I=1,MLEVEL+1 !205 WRITE(21,'(F18.12)') AK(I) !  WRITE(21,'(A)') !  WRITE(21,'(A)') '* B(NLEV+1)' !  WRITE(21,'(A)') !  DO 210 I=1,MLEVEL+1 !210 WRITE(21,'(F18.12)') BK(I) !  CLOSE(21) !------------------------------------------------------------------ ! READING OF OMEGA !------------------------------------------------------------------ IF ( MOMEGA . NE . 0 ) THEN ALLOCATE ( OMR ( MAXL , MAXB , MLEVEL )) FILENAME = 'fort.19' CALL READLATLON ( FILENAME , OMR , MAXL , MAXB , MLEVEL ,( / 135 / )) IF ( MOMEGADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     OMEGA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OM (:,:, K ) - OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'OMEGA DIFF: ' , K , RMS , MW , SIG END DO END IF END IF !------------------------------------------------------------------ ! READING OF ETA !------------------------------------------------------------------ IF ( META . NE . 0 ) THEN ALLOCATE ( ETAR ( MAXL , MAXB , MLEVEL )) P00 = 10132 5. FILENAME = 'fort.21' CALL READLATLON ( FILENAME , ETAR , MAXL , MAXB , MLEVEL ,( / 77 / )) IF ( MDPDETA . EQ . 1 ) THEN DO K = 1 , MLEVEL DAK = AK ( K + 1 ) - AK ( K ) DBK = BK ( K + 1 ) - BK ( K ) DO J = 1 , MAXB DO I = 1 , MAXL ETAR ( I , J , K ) = 2 * ETAR ( I , J , K ) * PS ( I , J , 1 ) * ( DAK / PS ( I , J , 1 ) + DBK ) / & ( DAK / P00 + DBK ) IF ( K . GT . 1 ) ETAR ( I , J , K ) = ETAR ( I , J , K ) - ETAR ( I , J , K - 1 ) END DO END DO END DO END IF IF ( METADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     ETAR: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ) - ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'ETA DIFF: ' , K , RMS , MW , SIG END DO DO K = 1 , MLEVEL WRITE ( * , '(I3,2F12.4)' ) K , ETA ( 1 , MAXB / 2 , K ), ETAR ( 1 , MAXB / 2 , K ) END DO ELSE ETA = ETAR END IF END IF ALLOCATE ( T ( MAXL , MAXB , MLEVEL )) ALLOCATE ( QA ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF T !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.11' CALL READLATLON ( FILENAME , T , MAXL , MAXB , MLEVEL ,( / 130 / )) !------------------------------------------------------------------ !! READING OF SPECIFIC HUMIDITY !------------------------------------------------------------------ FILENAME = 'fort.17' CALL READLATLON ( FILENAME , QA , MAXL , MAXB , MLEVEL ,( / 133 / )) !------------------------------------------------------------------ !                     TEST READING OF UV from MARS (debug only) !------------------------------------------------------------------ !      FILENAME='fort.22' !      CALL READLATLON(FILENAME,UV2,MAXL,MAXB,2*MLEVEL,2,(/131,132/)) !------------------------------------------------------------------ !! WRITE MODEL LEVEL DATA TO fort.15 !------------------------------------------------------------------ !     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi) !     Now we are transforming back to the usual winds. DO K = 1 , MLEVEL DO J = 2 , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END DO ! special treatment for poles, if necessary. DO J = 1 , MAXB , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( 1.0 - BREITE ( J ) * BREITE ( J ) . GT . 0 . OR . MGAUSS . NE . 1 ) THEN IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) * 1.D6 UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) * 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END IF ELSE HILFUV ( 5 : MAXL ,:) = 0. HILFUV ( 1 : 2 ,:) = 0. IF ( J . EQ . MAXB ) THEN ! Suedpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 4 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 4 , K ) ELSE ! Nordpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 2 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 2 , K ) END IF CALL RFOURTR ( HILFUV (:, 1 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , K ) = HILFUV ( MANF + I , 1 ) ELSE UV ( I + 1 , J , K ) = HILFUV ( MANF - MAXL + I , 1 ) END IF END DO CALL RFOURTR ( HILFUV (:, 2 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF + I , 2 ) ELSE UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF - MAXL + I , 2 ) END IF END DO end if END DO END DO ! open output file call grib_open_file ( LUNIT , 'fort.15' , 'w' ) ! we use temperature on lat/lon on model levels as template for model level data LUNIT2 = 0 CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.11' , 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT2 , IGRIB ( 1 ), IRET ) CALL GRIB_CLOSE_FILE ( LUNIT2 ) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 131 / )) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, MLEVEL + 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 132 / )) IF ( MDPDETA . ne . 1 . AND . MGAUSS . EQ . 0 . and . META . eq . 1 ) THEN CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 77 / )) ELSE CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / METAPAR / )) END IF CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , T , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 130 / )) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , PS , MAXL , MAXB , 1 , '1' , 1 ,( / 134 / )) CALL GRIB_SET ( IGRIB ( 1 ), \"levelType\" , \"ml\" ) CALL GRIB_SET ( IGRIB ( 1 ), \"typeOfLevel\" , \"hybrid\" ) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , QA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 133 / )) IF ( MOMEGA . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.25' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OMR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) IF ( MOMEGADIFF . EQ . 1 ) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = OM - OMR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) END IF END IF IF ( META . EQ . 1 . AND . METADIFF . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.26' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , ETAR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) !        IF (MOMEGADIFF .EQ. 1) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = ETA - ETAR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) !        END IF END IF CALL GRIB_CLOSE_FILE ( LUNIT ) 2000 STOP 'SUCCESSFULLY FINISHED calc_etadot: CONGRATULATIONS' 3000 STOP 'ROUTINE calc_etadot: ERROR' 9999 stop 'ROUTINE calc_etadot: ERROR' END !------------------------------------------------------------------ INTEGER FUNCTION IA ( FIELD1 , NI , NJ , NK , G ) !------------------------------------------------------------------ !! Calculate something that is roughly log10( maxval(field1)/g ) [PS] !------------------------------------------------------------------ IMPLICIT NONE INTEGER :: I , J , K INTEGER , INTENT ( IN ) :: NI , NJ , NK REAL , INTENT ( IN ) :: FIELD1 ( NI , NJ , NK ) REAL , INTENT ( IN ) :: G REAL :: RMIN , RMAX , XMAX , A , A1 , A2 RMAX = FIELD1 ( 1 , 1 , 1 ) RMIN = FIELD1 ( 1 , 1 , 1 ) DO 100 K = 1 , NK DO 100 J = 1 , NJ DO 100 I = 1 , NI IF ( FIELD1 ( I , J , K ) . GT . RMAX ) RMAX = FIELD1 ( I , J , K ) IF ( FIELD1 ( I , J , K ) . LT . RMIN ) RMIN = FIELD1 ( I , J , K ) 100 CONTINUE IF ( ABS ( RMIN ) . GT . RMAX . OR . ABS ( RMIN ) . EQ . RMAX ) THEN XMAX = ABS ( RMIN ) ELSE XMAX = RMAX END IF IF ( XMAX . EQ . 0 ) THEN IA = 0 RETURN END IF A1 = LOG10 ( ( G / 1 0.d0 ) / XMAX ) A2 = LOG10 ( G / XMAX ) IF ( A1 . gt . A2 ) THEN A = A2 ELSE A = A1 END IF IF ( A . GT . 0 ) IA = INT ( A ) IF ( A . LT . 0 ) IA = INT ( A - 1.0 ) RETURN END SUBROUTINE STATIS ( NI , NJ , NK , PHI , RMS , MW , SIG ) !------------------------------------------------------------------ !! calculate mean, rms, stdev !------------------------------------------------------------------ IMPLICIT REAL ( A - H , O - Z ) REAL PHI ( NI , NJ , NK ), SIG , MW , RMS , P N = NI * NJ * NK RMS = 0. MW = 0. ! 10.86 sinstead of 11.04 sec DO 10 K = 1 , NK DO 10 J = 1 , NJ DO 10 I = 1 , NI P = PHI ( I , J , K ) RMS = RMS + P * P MW = MW + P 10 CONTINUE RMS = SQRT ( RMS / N ) MW = MW / N IF ( RMS * RMS - MW * MW . LT . 0. ) THEN SIG = 0.0 ELSE SIG = SQRT ( RMS * RMS - MW * MW ) END IF RETURN END","tags":"","loc":"sourcefile/calc_etadot.f90.html","title":"calc_etadot.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~rwgrib2.f90~~AfferentGraph sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules RWGRIB2 Source Code rwgrib2.f90 Source Code MODULE RWGRIB2 !! Read or write a field variable on a lat/lon grid from/to GRIB file, or !! read a field in spectral representation from GRIB file CONTAINS SUBROUTINE READLATLON ( FILENAME , FELD , MAXL , MAXB , MLEVEL , MPAR ) !! Read a field from GRIB file on lat-lon grid USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , parid , nm integer :: i , k integer , dimension (:), allocatable :: igrib integer :: numberOfPointsAlongAParallel integer :: numberOfPointsAlongAMeridian real , dimension (:), allocatable :: values integer :: numberOfValues real , dimension ( maxl , maxb , mlevel ) :: feld integer :: maxl , maxb , mlevel , mstride , mpar (:), irest , div , level integer :: l ( size ( mpar )) character * ( * ) :: filename feld = 0. call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) nm = size ( mpar ) div = mlevel / nm l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n !      write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAParallel' , & numberOfPointsAlongAParallel ) !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAMeridian' , & numberOfPointsAlongAMeridian ) call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !      write(*,*) 'numberOfValues=',numberOfValues allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) call grib_get ( igrib ( i ), 'paramId' , parid ) call grib_get ( igrib ( i ), 'level' , level ) kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then !         l(k)=l(k)+1 feld (:,:,( k - 1 ) * div + level ) = reshape ( values ,( / maxl , maxb / )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readlatlon: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop ! !   write(*,*) 'readlatlon: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO if ( allocated ( values )) deallocate ( values ) deallocate ( igrib ) END SUBROUTINE READLATLON SUBROUTINE WRITELATLON ( iunit , igrib , ogrib , FELD , MAXL , MAXB , MLEVEL ,& MLEVELIST , MSTRIDE , MPAR ) !! write a field on lat-lon grid to GRIB file USE GRIB_API IMPLICIT NONE INTEGER IFIELD , MLEVEL , MNAUF , I , J , K , L , MSTRIDE , IERR , JOUT INTEGER MPAR ( MSTRIDE ), MAXL , MAXB , LEVMIN , LEVMAX INTEGER IUNIT , igrib , ogrib REAL ZSEC4 ( MAXL * MAXB ) REAL FELD ( MAXL , MAXB , MLEVEL ) CHARACTER * ( * ) MLEVELIST INTEGER ILEVEL ( MLEVEL ), MLINDEX ( MLEVEL + 1 ), LLEN ! parse MLEVELIST LLEN = len ( trim ( MLEVELIST )) if ( index ( MLEVELIST , 'to' ) . ne . 0 . or . index ( MLEVELIST , 'TO' ) . ne . 0 ) THEN i = index ( MLEVELIST , '/' ) read ( MLEVELIST ( 1 : i - 1 ), * ) LEVMIN i = index ( MLEVELIST , '/' ,. true .) read ( MLEVELIST ( i + 1 : LLEN ), * ) LEVMAX l = 0 do i = LEVMIN , LEVMAX l = l + 1 ILEVEL ( l ) = i end do else l = 1 MLINDEX ( 1 ) = 0 do i = 1 , LLEN if ( MLEVELIST ( i : i ) . eq . '/' ) THEN l = l + 1 MLINDEX ( l ) = i end if end do MLINDEX ( l + 1 ) = LLEN + 1 do i = 1 , l read ( MLEVELIST ( MLINDEX ( i ) + 1 : MLINDEX ( i + 1 ) - 1 ), * ) ILEVEL ( i ) end do end if DO k = 1 , l call grib_set ( igrib , \"level\" , ILEVEL ( k )) DO j = 1 , MSTRIDE call grib_set ( igrib , \"paramId\" , MPAR ( j )) !         if (MPAR(j) .eq. 87) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"Pa,s**-1\") !         end if !         if (MPAR(j) .eq. 77) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"s**-1\") !         end if if ( l . ne . mlevel ) then zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, ILEVEL ( k )),( / maxl * maxb / )) else zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, k ),( / maxl * maxb / )) end if call grib_set ( igrib , \"values\" , zsec4 ) call grib_write ( igrib , iunit ) END DO END DO END SUBROUTINE WRITELATLON SUBROUTINE READSPECTRAL ( FILENAME , CXMN , MNAUF , MLEVEL , MAXLEV , MPAR , A , B ) !!  Read a GRIB file in spherical harmonics USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , div , nm , k integer :: i , j , parid integer , dimension (:), allocatable :: igrib real , dimension (:), allocatable :: values integer :: numberOfValues , maxlev REAL :: A ( MAXLEV + 1 ), B ( MAXLEV + 1 ), pv ( 2 * MAXLEV + 2 ) REAL :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) integer :: maxl , maxb , mlevel , mstride , mpar (:), mnauf , ioffset , ipar , ilev , l ( size ( mpar )) character * ( * ) :: filename call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n ! write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'pentagonalResolutionParameterJ' , j ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !   write(*,*) 'numberOfValues=',numberOfValues call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get ( igrib ( i ), 'level' , ilev ) call grib_get ( igrib ( i ), 'pv' , pv ) allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) !      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1) !           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2)) call grib_get ( igrib ( i ), 'paramId' , parid ) nm = size ( mpar ) div = mlevel / nm kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then l ( k ) = l ( k ) + 1 cxmn (:,( k - 1 ) * div + l ( k )) = values ( 1 :( MNAUF + 1 ) * ( MNAUF + 2 )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readspectral: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop ! !   write(*,*) 'readspectral: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO deallocate ( values ) deallocate ( igrib ) A = pv ( 1 : 1 + MAXLEV ) B = pv ( 2 + MAXLEV : 2 * MAXLEV + 2 ) END SUBROUTINE READSPECTRAL END MODULE RWGRIB2","tags":"","loc":"sourcefile/rwgrib2.f90.html","title":"rwgrib2.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~grphreal.f90~~EfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~grphreal.f90~~AfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules GRTOPH Source Code grphreal.f90 Source Code MODULE GRTOPH !! Module for transformation from phase space into physical space USE PHTOGR CONTAINS SUBROUTINE GRPH213 ( CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) ! WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER ! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN ! RAUM AUF KUGELKOORDINATEN DURCH ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z   = LEGENDREFUNKTIONSWERTE ! ! MNAUF    ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL     ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB     ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL   ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE , IFAX ( 10 , MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) DIMENSION WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) REAL W ( MAXB ) DIMENSION IND ( MAXB ) IND ( 1 ) = 0 DO 6 J = 2 , MAXB / 2 IND ( j ) = IND ( J - 1 ) + MLAT ( J - 1 ) 6 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 16 L = 1 , MLEVEL CALL GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 16 CONTINUE !$omp end parallel do RETURN END SUBROUTINE GRPH213 SUBROUTINE GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! Carries out the transformation from the phase space into the physical !! space on spherical coordinates ! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD  = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE = Working Array fuer Fouriertransformation ! Z     = LEGENDREFUNKTIONSWERTE ! ! MNAUF ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL  ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB  ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL CXMS ( 4 * ( MNAUF + 1 )) REAL CXMA ( 4 * ( MNAUF + 1 )) REAL , ALLOCATABLE :: CXM (:,:) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER IFAX ( 10 , MAXB ) REAL W ( MAXB ) INTEGER IND ( MAXB ) ALLOCATE ( CXM ( 4 * MAXB , MAXB )) DO 5 J = 1 , MAXB / 2 CXMS ( 1 : MLAT ( J )) = FELD ( IND ( J ) + 1 : IND ( J ) + MLAT ( J ), L ) CALL RFOUFTR ( CXMS , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) CXMA ( 1 : MLAT ( J )) = FELD ( MAXL - IND ( J ) - MLAT ( J ) + 1 : MAXL - IND ( J ), L ) CALL RFOUFTR ( CXMA , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) DO 4 I = 1 , 2 * ( MNAUF + 1 ) CXM ( I , J ) = CXMS ( I ) + CXMA ( I ) CXM ( I , MAXB + 1 - J ) = CXMS ( I ) - CXMA ( I ) 4 CONTINUE 5 CONTINUE CALL LGTR213 ( CXMN ( 0 , L ), CXM , Z , W , MLAT , MNAUF , MAXB ) DEALLOCATE ( CXM ) RETURN END SUBROUTINE GRPHSUB ! SUBROUTINE LGTR213 ( CXMN , CXM , Z , W , MLAT , MNAUF , MAXB ) !! Calculates the KFFKs (Fourier coefficients) CXMN IMPLICIT REAL ( A - H , O - Z ) INTEGER MLAT ( MAXB ) DIMENSION CXM ( 0 : 4 * MAXB - 1 , MAXB ) DIMENSION CXMN ( 0 : 2 * ((( MNAUF + 1 ) * MNAUF ) / 2 + MNAUF ) + 1 ) REAL * 8 Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL * 8 W ( MAXB ), CR , CI , HILF LOGICAL EVEN LL = 0 LLP = 0 DO 1 I = 0 , MNAUF KM = 0 9 KM = KM + 1 IF ( MLAT ( KM ) . LE . 2 * I ) THEN GOTO 9 END IF DO 2 J = I , MNAUF CR = 0 CI = 0 EVEN = MOD ( I + J , 2 ) . EQ . 0 IF ( EVEN ) THEN DO 3 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , K ) * HILF CI = CI + CXM ( 2 * I + 1 , K ) * HILF 3 CONTINUE ELSE DO 4 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , MAXB + 1 - K ) * HILF CI = CI + CXM ( 2 * I + 1 , MAXB + 1 - K ) * HILF 4 CONTINUE END IF 5 CXMN ( 2 * LL ) = CR CXMN ( 2 * LL + 1 ) = CI LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 1 CONTINUE RETURN END SUBROUTINE LGTR213 SUBROUTINE RFOUFTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) !! Calculates the Fourier sum with an FFT algorithm IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : 2 * MAXL - 1 ) DIMENSION FELD ( MAXL ), TRIGS ( 2 * MAXL ) DIMENSION WSAVE ( MAXAUF ) INTEGER IFAX ( 10 ) ! NORMIERUNG... WSAVE ( 1 ) = CXM ( MAXL - 1 ) CXM ( 1 : MAXL ) = CXM ( 0 : MAXL - 1 ) / 2 CXM ( 0 ) = WSAVE ( 1 ) / 2 !    CALL CFFTF(MAXL,CXM,WSAVE) CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , - 1 ) RETURN END SUBROUTINE RFOUFTR END MODULE GRTOPH","tags":"","loc":"sourcefile/grphreal.f90.html","title":"grphreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~phgrreal.f90~~AfferentGraph sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules PHTOGR Source Code phgrreal.f90 Source Code MODULE PHTOGR !! Module for transformation of a field variable from the phase space !! into the physical space onto the reduced Gaussian grid INTEGER , PARAMETER :: MAXAUF = 36000 CONTAINS SUBROUTINE PHGR213 ( CXMN , FELD , WSAVE , IFAX , Z , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) ! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER ! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN ! RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH ! ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z      = LEGENDREFUNKTIONSWERTE ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT NONE !   Anzahl der Gitterpunkte auf jedem Breitenkreis INTEGER MLAT ( MAXB / 2 ) INTEGER K , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER :: IFAX ( 10 , MAXB ) IND ( 1 ) = 0 DO 7 K = 2 , MAXB / 2 IND ( K ) = IND ( K - 1 ) + MLAT ( K - 1 ) 7 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 17 K = 1 , MAXB / 2 CALL PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 17 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE PHGR213 SUBROUTINE PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER MLAT ( MAXB / 2 ) INTEGER K , L , I , J , LLS , LLPS , LL , LLP , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) INTEGER :: IFAX ( 10 , MAXB ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXMS ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL ACR , ACI , SCR , SCI REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) DO 6 L = 1 , MLEVEL LL = 0 LLP = 0 DO 1 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP IF ( 2 * I + 1 . LT . MLAT ( K )) THEN !         Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 J = I , MNAUF , 2 SCR = SCR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 J = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE END IF LL = LLS + ( MNAUF - I + 1 ) LLP = LLPS + ( MNAUF - I + 3 ) CXMS ( 2 * I ) = SCR + ACR CXMS ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 1 CONTINUE !     CALL FOURTR(CXMS,FELD(IND(k)+1,L),WSAVE(:,K),MNAUF,*MLAT(K),1) !     CALL FOURTR(CXMA,FELD(MAXL-IND(k)-MLAT(K)+1,L),WSAVE(:,K),MNAUF,MLAT(K),1) CALL RFOURTR ( CXMS , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( IND ( k ) + 1 : IND ( K ) + MLAT ( K ), L ) = CXMS ( 0 : MLAT ( K ) - 1 ) CALL RFOURTR ( CXMA , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( MAXL - IND ( k ) - MLAT ( K ) + 1 : MAXL - IND ( k ), L ) = CXMA ( 0 : MLAT ( K ) - 1 ) !      WRITE(*,*) IND+1,FELD(IND+1,L) 6 CONTINUE END SUBROUTINE PHSYM SUBROUTINE PHGCUT ( CXMN , FELD , WSAVE , IFAX , Z , & MNAUF , MMAX , MAUF , MANF , MAXL , MAXB , MLEVEL ) !! Carries out the transformation of a field variable from the phase space !! into the physical space on spherical coordinates. It is possible to !! specify a section of the Earth. This subroutine is slower thatn PHGRPH. ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! BREITE = SINUS DER GEOGRAFISCHEN BREITEN ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAUF   ANZAHL DER LAENGEN UND DER FOURIERKOEFFIZIENTEN ! MANF   ANFANG DES LAENGENBEREICHS FUER DAS GITTER, !        AUF DAS INTERPOLIERT WERDEN SOLL ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MMAX + 3 ) * ( MMAX + 4 )) / 2 , MAXB ) DIMENSION CXMN ( 0 :( MMAX + 1 ) * ( MMAX + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) LOGICAL SYM !    write(*,*)mauf,mnauf,manf,maxl IF ( MAUF . LE . MNAUF ) WRITE ( * , * ) 'TOO COARSE LONGITUDE RESOLUTION' IF ( MANF . LT . 1 . OR . MAXL . LT . 1 . OR . & MANF . GT . MAUF . OR . MAXL . GT . MAUF ) THEN WRITE ( * , * ) 'WRONG LONGITUDE RANGE' , MANF , MAXL STOP END IF ! Pruefe, ob Ausgabegitter symmetrisch zum Aequator ist ! Wenn ja soll Symmetrie der Legendrepolynome ausgenutzt werden IF ( MAXB . GT . 4 ) THEN SYM = . TRUE . DO 11 J = 5 , 5 IF ( ABS ( ABS ( Z ( 100 , J )) - ABS ( Z ( 100 , MAXB + 1 - J ))) . GT . 1E-11 ) SYM = . FALSE . !       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J)) 11 CONTINUE ! !      WRITE(*,*) 'Symmetrisch: ',SYM ELSE SYM = . FALSE . END IF IF ( SYM ) THEN !$OMP PARALLEL DO DO J = 1 ,( MAXB + 1 ) / 2 CALL PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) END DO !$OMP END PARALLEL DO ELSE !$OMP PARALLEL DO DO J = 1 , MAXB CALL PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END DO !$OMP END PARALLEL DO END IF RETURN END SUBROUTINE PHGCUT SUBROUTINE PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXM ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL SCR , SCI , ACR , ACI DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) DO 16 L = 1 , MLEVEL LL = 0 LLP = 0 DO 17 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP !       Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 K = I , MNAUF , 2 SCR = SCR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 K = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE LL = LLS + MNAUF - I + 1 LLP = LLPS + MNAUF - I + 3 CXM ( 2 * I ) = SCR + ACR CXM ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 17 CONTINUE CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 26 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF 26 CONTINUE CALL RFOURTR ( CXMA , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 36 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF + I - 1 ) ELSE FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF - MAUF + I - 1 ) END IF 36 CONTINUE 16 CONTINUE END SUBROUTINE PHSYMCUT SUBROUTINE PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER , INTENT ( IN ) :: MNAUF , MAUF , MANF , J , MAXL , MAXB , MLEVEL REAL :: CXM ( 0 : MAXAUF - 1 ) REAL , INTENT ( IN ) :: Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL , INTENT ( IN ) :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL , INTENT ( IN ) :: WSAVE ( 4 * MAUF + 15 ) REAL :: FELD ( MAXL , MAXB , MLEVEL ) INTEGER :: IFAX ( 10 ) INTEGER I , L DO L = 1 , MLEVEL CALL LEGTR ( CXMN (:, L ), CXM , Z (:, J ), MNAUF , MAUF ) CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF END DO END DO END SUBROUTINE PHGPNS SUBROUTINE LEGTR ( CXMN , CXM , Z , MNAUF , MAUF ) !! Calculate the Fourier coefficients CXM IMPLICIT NONE INTEGER MNAUF , MAUF , LL , LLP , I , J REAL CXM ( 0 : MAXAUF - 1 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 ) REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL CI , CR LL = 0 LLP = 0 DO 1 I = 0 , MNAUF CR = 0.D0 CI = 0.D0 DO 2 J = I , MNAUF CR = CR + Z ( LLP ) * CXMN ( 2 * LL ) CI = CI + Z ( LLP ) * CXMN ( 2 * LL + 1 ) LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 CXM ( 2 * I ) = CR CXM ( 2 * I + 1 ) = CI 1 CONTINUE RETURN END SUBROUTINE LEGTR SUBROUTINE RFOURTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) !!  Calculates the Fourier sum with an FFT algorithm IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : MAXAUF - 1 ) REAL :: WSAVE ( 2 * MAXL ), TRIGS ( 2 * MAXL ) INTEGER IFAX ( 10 ) DO I = MNAUF + 1 , MAXL - 1 CXM ( 2 * I ) = 0.0 CXM ( 2 * I + 1 ) = 0.0 END DO CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , 1 ) DO I = 0 , MAXL - 1 CXM ( I ) = CXM ( I + 1 ) END DO RETURN END SUBROUTINE RFOURTR SUBROUTINE GAULEG ( X1 , X2 , X , W , N ) !! Calculates the Gaussian latitudes IMPLICIT REAL ( A - H , O - Z ) DIMENSION X ( N ), W ( N ) PARAMETER ( EPS = 3.D-14 ) M = ( N + 1 ) / 2 XM = 0.5D0 * ( X2 + X1 ) XL = 0.5D0 * ( X2 - X1 ) DO 12 I = 1 , M Z = DCOS ( 3.141592654D0 * ( I - . 25 D0 ) / ( N + . 5 D0 )) 1 CONTINUE P1 = 1.D0 P2 = 0.D0 DO 11 J = 1 , N P3 = P2 P2 = P1 P1 = (( 2.D0 * J - 1.D0 ) * Z * P2 - ( J - 1.D0 ) * P3 ) / J 11 CONTINUE PP = N * ( Z * P1 - P2 ) / ( Z * Z - 1.D0 ) Z1 = Z Z = Z1 - P1 / PP IF ( ABS ( Z - Z1 ) . GT . EPS ) GO TO 1 X ( I ) = XM - XL * Z X ( N + 1 - I ) = XM + XL * Z W ( I ) = 2.D0 * XL / (( 1.D0 - Z * Z ) * PP * PP ) W ( N + 1 - I ) = W ( I ) 12 CONTINUE RETURN END SUBROUTINE GAULEG SUBROUTINE PLGNFA ( LL , X , Z ) !! Calculates all normalised associated Legendre functions from !! P00(X) to PLL(X) and writes them into the field Z. !! The polynomials have indices as with ECMWF, i.e. !! P00,P10,P11,P20,P21,P22,... !! Otherwise, this subroutine is analogous to PLGNDN ! X IST DER COSINUS DES ZENITWINKELS ODER !       DER SINUS DER GEOGRAFISCHEN BREITE IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( LL + 3 ) * ( LL + 4 )) / 2 ) L = LL + 2 I = 1 Z ( 0 ) = 1.D0 FACT = 1.D0 POT = 1.D0 SOMX2 = DSQRT ( 1.D0 - X * X ) DO 14 J = 0 , L DJ = DBLE ( J ) IF ( J . GT . 0 ) THEN FACT = FACT * ( 2.D0 * DJ - 1.D0 ) / ( 2.D0 * DJ ) POT = POT * SOMX2 Z ( I ) = DSQRT (( 2.D0 * DJ + 1.D0 ) * FACT ) * POT I = I + 1 END IF IF ( J . LT . L ) THEN Z ( I ) = X * DSQRT (( 4.D0 * DJ * DJ + 8.D0 * DJ + 3.D0 ) / ( 2.D0 * DJ + 1.D0 )) * Z ( I - 1 ) I = I + 1 END IF DK = DJ + 2.D0 DO 14 K = J + 2 , L DDK = ( DK * DK - DJ * DJ ) Z ( I ) = X * DSQRT (( 4.D0 * DK * DK - 1.D0 ) / DDK ) * Z ( I - 1 ) - & DSQRT ((( 2.D0 * DK + 1.D0 ) * ( DK - DJ - 1.D0 ) * ( DK + DJ - 1.D0 )) / & (( 2.D0 * DK - 3.D0 ) * DDK )) * Z ( I - 2 ) DK = DK + 1.D0 I = I + 1 14 CONTINUE RETURN END SUBROUTINE PLGNFA SUBROUTINE DPLGND ( MNAUF , Z , DZ ) !! Calculates the derivatives of the normalised associated Legendre function !! from P00(X) to PLL(X) and writes them into the field DZ. !! Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) DIMENSION DZ ( 0 :(( MNAUF + 2 ) * ( MNAUF + 3 )) / 2 ) IF ( Z ( 0 ) . NE . 1.D0 ) THEN WRITE ( * , * ) 'DPLGND: Z(0) must be 1.0' STOP END IF LLP = 0 LLH = 0 DO 1 I = 0 , MNAUF + 1 DO 2 J = I , MNAUF + 1 IF ( I . EQ . J ) THEN WURZELA = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELA * Z ( LLP + 1 ) ELSE WURZELB = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELB * Z ( LLP + 1 ) - DBLE ( J + 1 ) * WURZELA * Z ( LLP - 1 ) WURZELA = WURZELB END IF LLH = LLH + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 1 1 CONTINUE RETURN END SUBROUTINE DPLGND SUBROUTINE SPFILTER ( FELDMN , MM , MMAX ) !! Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984) ! MM=Spectral truncation of field ! MMAX= Spectral truncation of filter IMPLICIT NONE INTEGER MM , MMAX , I , J , K , L REAL FELDMN ( 0 :( MM + 1 ) * ( MM + 2 ) - 1 ) REAL KMAX , SMAX , FAK SMAX = 0.1 KMAX =- ALOG ( SMAX ) KMAX = KMAX / ( float ( MMAX ) * float ( MMAX + 1 )) ** 2 !    WRITE(*,*)'alogsmax',alog(smax),'KMAX:',KMAX L = 0 DO I = 0 , MM DO J = I , MM !        WRITE(*,*) I,J,FELD(K),FELD(K)*EXP(-KMAX*(J*(J+1))**2) IF ( J . LE . MMAX ) THEN !          FAK=EXP(-KMAX*(J*(J+1))**2) FAK = 1.0 FELDMN ( 2 * L ) = FELDMN ( 2 * L ) * FAK FELDMN ( 2 * L + 1 ) = FELDMN ( 2 * L + 1 ) * FAK ELSE FELDMN ( 2 * L ) = 0. FELDMN ( 2 * L + 1 ) = 0. END IF L = L + 1 END DO END DO END SUBROUTINE SPFILTER END MODULE PHTOGR","tags":"","loc":"sourcefile/phgrreal.f90.html","title":"phgrreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Contents Subroutines POSNAM Source Code posnam.f90 Source Code SUBROUTINE POSNAM ( KULNAM , CDNAML ) !! Position in namelist file. !! Author:  Mats Hamrud, ECMWF INTEGER , INTENT ( IN ) :: KULNAM CHARACTER * ( * ), INTENT ( IN ) :: CDNAML CHARACTER * 120 CLINE CHARACTER * 1 CLTEST REWIND ( KULNAM ) ILEN = LEN ( CDNAML ) 102 CONTINUE CLINE = ' ' READ ( KULNAM , '(A)' ) CLINE IND1 = INDEX ( CLINE , '&' // CDNAML ) IF ( IND1 . EQ . 0 ) GO TO 102 CLTEST = CLINE ( IND1 + ILEN + 1 : IND1 + ILEN + 1 ) IF ( LGE ( CLTEST , '0' ) . AND . LLE ( CLTEST , '9' ) . OR . & LGE ( CLTEST , 'A' ) . AND . LLE ( CLTEST , 'Z' )) GOTO 102 BACKSPACE ( KULNAM ) RETURN END SUBROUTINE POSNAM","tags":"","loc":"sourcefile/posnam.f90.html","title":"posnam.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~ftrafo.f90~~EfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~ftrafo.f90~~AfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules FTRAFO Source Code ftrafo.f90 Source Code MODULE FTRAFO !! Implementation of the spectral transformation using the reduced Gaussian grid CONTAINS SUBROUTINE VDTOUV ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , MLAT , MNAUF , NI , NJ , NK ) !! Calculates scale winds from vorticity and divergence. !! If in XMN the divergence is passed, then the divergent part of the wind !! (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the !! rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned. !! Summing both, one obtains the whole scale wind. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte pro Flaeche ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , N , NI , NJ , NK , MNAUF , GGIND ( NJ / 2 ) INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL RT , IT GGIND ( 1 ) = 0 DO 4 J = 2 , NJ / 2 GGIND ( J ) = GGIND ( J - 1 ) + MLAT ( J - 1 ) 4 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 5 J = 1 , NJ / 2 CALL VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND ( J ), MLAT , MNAUF , NI , NJ , NK ) 5 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE VDTOUV SUBROUTINE VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND , MLAT , MNAUF , NI , NJ , NK ) USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD , SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL FAC ( 0 : MNAUF ), RT , IT ERAD = 636747 0.D0 FAC ( 0 ) = 0.D0 DO 12 N = 1 , MNAUF FAC ( N ) =- ERAD / DBLE ( N ) / DBLE ( N + 1 ) 12 CONTINUE CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) VFOUC ( 2 * M ) =- M * ( SCI + ACI ) VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE RETURN END SUBROUTINE VDUVSUB SUBROUTINE PHGRAD ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MLAT , MNAUF , NI , NJ , NK ) !! Calculates the gradient of a scalar from the field of the scalar XMN !! in phase space. Returns fields of the componentens of the horizontal !! gradients XLAM,XPHI on the Gaussian grid. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ / 2 CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE GGIND = GGIND + MLAT ( J ) 4 CONTINUE RETURN END SUBROUTINE PHGRAD SUBROUTINE PHGRACUT ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MAUF , MNAUF , NI , NJ , MANF , NK ) !! Calculated the gradient of a scalar from the field of the scalar XMN !! in phase space. Returns the fields of the components of the horizontal !! gradient XLAM,XPHI on the Gaussian grid ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MAUF , MANF , I , IFAX ( 10 ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NJ , NK ), XPHI ( NI , NJ , NK ) REAL HLAM ( MAXAUF , 2 ), HPHI ( MAXAUF , 2 ) REAL GWSAVE ( 4 * MAUF + 15 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MAUF ) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) CALL RFOURTR ( MVFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) DO 6 I = 0 , NI - 1 IF ( MANF + I . LE . MAUF ) THEN XLAM ( I + 1 , J , K ) = VFOUC ( MANF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF + I - 1 ) ELSE XLAM ( I + 1 , J , K ) = VFOUC ( MANF - MAUF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF - MAUF + I - 1 ) END IF 6 CONTINUE 3 CONTINUE GGIND = GGIND + MAUF 4 CONTINUE RETURN END SUBROUTINE PHGRACUT SUBROUTINE CONTGL ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , ETA , MLAT , A , B , NI , NJ , NK ) !! Calculation of divergence from the wind field (U,V) !! in phase space. Returns fields of the componentens of the !! horizontal gradients XLAM,XPHI on the Gaussian grid ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus ! Beachte, dass das Windfeld eine um 1 erhoehte Aufloesung in mu-Richtung hat. IMPLICIT NONE INTEGER NI , NJ , NK , I , J , K , MLAT ( NJ ), L REAL A ( NK + 1 ), B ( NK + 1 ) REAL PS ( NI ), DPSDL ( NI ), DPSDM ( NI ) REAL DIV ( NI , NK ), U ( NI , NK ), V ( NI , NK ), ETA ( NI , NK ) REAL BREITE ( NJ ) REAL DIVT1 , DIVT2 , POB , PUN , DPSDT , COSB L = 0 DO 4 J = 1 , NJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DO 1 K = 1 , NK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DIVT1 = DIVT1 + DIV ( L , K ) * ( PUN - POB ) IF ( COSB . GT . 0. ) THEN DIVT2 = DIVT2 + ( B ( K + 1 ) - B ( K )) * PS ( L ) * & ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB END IF ETA ( L , K ) =- DIVT1 - DIVT2 1 CONTINUE DPSDT = ( - DIVT1 - DIVT2 ) / PS ( L ) DO 2 K = 1 , NK ETA ( L , K ) = ETA ( L , K ) - DPSDT * B ( K + 1 ) * PS ( L ) 2 CONTINUE PS ( L ) = DPSDT * PS ( L ) 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE CONTGL SUBROUTINE OMEGA ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , E , MLAT , A , B , NGI , NGJ , MKK ) !! Calculates \\omega in the hybrid (\\eta-)coordinate system ! OMEGA berechnet omega im Hybridkoordinatensystem ! PS ist der Bodendruck, ! DPSDL,DPSDM sind die Komponenten des Gradienten des Logarithmus des ! Bodendrucks ! DIV,U,V sind die horizontale Divergenz und das horizontale Windfeld ! BREITE ist das Feld der Gauss'schen Breiten ! E ist omega, IMPLICIT NONE INTEGER I , J , K , L , NGI , NGJ , MKK , MLAT ( NGJ ) REAL PS ( NGI ), DPSDL ( NGI ), DPSDM ( NGI ), A ( MKK + 1 ), B ( MKK + 1 ) REAL DIV ( NGI , MKK ), U ( NGI , MKK ), V ( NGI , MKK ), E ( NGI , MKK ) REAL BREITE ( NGJ ) REAL DIVT1 , DIVT2 , POB , PUN , DP , X , Y , COSB REAL DIVT3 ( MKK + 2 ) L = 0 DO 4 J = 1 , NGJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DIVT3 ( 1 ) = 0.0 DO 1 K = 1 , MKK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DP = PUN - POB Y = PS ( L ) * ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB IF ( K . LT . 3 ) THEN X = 0.0 ELSE X = ( B ( K + 1 ) - B ( K )) * Y END IF DIVT1 = DIVT1 + DIV ( L , K ) * DP DIVT2 = DIVT2 + X DIVT3 ( K + 1 ) =- DIVT1 - DIVT2 IF ( K . GT . 1 ) THEN E ( L , K ) = 0.5 * ( POB + PUN ) / & DP * Y * (( B ( K + 1 ) - B ( K )) + ( A ( K + 1 ) * B ( K ) - A ( K ) * B ( K + 1 )) / DP * LOG ( PUN / POB )) ELSE E ( L , K ) = 0.0 END IF E ( L , K ) = E ( L , K ) + 0.5 * ( DIVT3 ( K ) + DIVT3 ( K + 1 )) 1 CONTINUE 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE OMEGA END MODULE FTRAFO","tags":"","loc":"sourcefile/ftrafo.f90.html","title":"ftrafo.f90 – Flex_extract: Calculation of etadot"},{"text":"function IA(FIELD1, NI, NJ, NK, G) Calculate something that is roughly log10( maxval(field1)/g ) [PS] Arguments Type Intent Optional Attributes Name real, intent(in) :: FIELD1 (NI,NJ,NK) integer, intent(in) :: NI integer, intent(in) :: NJ integer, intent(in) :: NK real, intent(in) :: G Return Value integer Contents None","tags":"","loc":"proc/ia.html","title":"IA – Flex_extract: Calculation of etadot"},{"text":"subroutine STATIS(NI, NJ, NK, PHI, RMS, MW, SIG) calculate mean, rms, stdev Arguments Type Intent Optional Attributes Name integer :: NI integer :: NJ integer :: NK real :: PHI (NI,NJ,NK) real :: RMS real :: MW real :: SIG Called by proc~~statis~~CalledByGraph proc~statis STATIS program~calc_etadot calc_etadot program~calc_etadot->proc~statis Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/statis.html","title":"STATIS – Flex_extract: Calculation of etadot"},{"text":"subroutine POSNAM(KULNAM, CDNAML) Position in namelist file.\n Author:  Mats Hamrud, ECMWF Arguments Type Intent Optional Attributes Name integer, intent(in) :: KULNAM character(len=*), intent(in) :: CDNAML Called by proc~~posnam~~CalledByGraph proc~posnam POSNAM program~calc_etadot calc_etadot program~calc_etadot->proc~posnam Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/posnam.html","title":"POSNAM – Flex_extract: Calculation of etadot"},{"text":"public subroutine READLATLON(filename, feld, maxl, maxb, mlevel, mpar) Uses GRIB_API proc~~readlatlon~~UsesGraph proc~readlatlon READLATLON GRIB_API GRIB_API proc~readlatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Read a field from GRIB file on lat-lon grid Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) Calls proc~~readlatlon~~CallsGraph proc~readlatlon READLATLON grib_count_in_file grib_count_in_file proc~readlatlon->grib_count_in_file grib_close_file grib_close_file proc~readlatlon->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readlatlon~~CalledByGraph proc~readlatlon READLATLON program~calc_etadot calc_etadot program~calc_etadot->proc~readlatlon Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readlatlon.html","title":"READLATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine WRITELATLON(IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) Uses GRIB_API proc~~writelatlon~~UsesGraph proc~writelatlon WRITELATLON GRIB_API GRIB_API proc~writelatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) Calls proc~~writelatlon~~CallsGraph proc~writelatlon WRITELATLON grib_write grib_write proc~writelatlon->grib_write grib_set grib_set proc~writelatlon->grib_set Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/writelatlon.html","title":"WRITELATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine READSPECTRAL(filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) Uses GRIB_API proc~~readspectral~~UsesGraph proc~readspectral READSPECTRAL GRIB_API GRIB_API proc~readspectral->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Read a GRIB file in spherical harmonics Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1) Calls proc~~readspectral~~CallsGraph proc~readspectral READSPECTRAL grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file grib_close_file grib_close_file proc~readspectral->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readspectral~~CalledByGraph proc~readspectral READSPECTRAL program~calc_etadot calc_etadot program~calc_etadot->proc~readspectral Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readspectral.html","title":"READSPECTRAL – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPH213(CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~grph213~~CallsGraph proc~grph213 GRPH213 ind ind proc~grph213->ind proc~grphsub GRPHSUB proc~grph213->proc~grphsub Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~grph213~~CalledByGraph proc~grph213 GRPH213 program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grph213.html","title":"GRPH213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPHSUB(L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Carries out the transformation from the phase space into the physical\n space on spherical coordinates Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~grphsub~~CalledByGraph proc~grphsub GRPHSUB proc~grph213 GRPH213 proc~grph213->proc~grphsub program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grphsub.html","title":"GRPHSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine LGTR213(CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) Calculates the KFFKs (Fourier coefficients) CXMN Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB Contents None","tags":"","loc":"proc/lgtr213.html","title":"LGTR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOUFTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfouftr~~CallsGraph proc~rfouftr RFOUFTR wsave wsave proc~rfouftr->wsave fft99 fft99 proc~rfouftr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfouftr.html","title":"RFOUFTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGR213(CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgr213~~CallsGraph proc~phgr213 PHGR213 proc~phsym PHSYM proc~phgr213->proc~phsym Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgr213~~CalledByGraph proc~phgr213 PHGR213 program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgr213.html","title":"PHGR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYM(K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~phsym~~CalledByGraph proc~phsym PHSYM proc~phgr213 PHGR213 proc~phgr213->proc~phsym program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsym.html","title":"PHSYM – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGCUT(CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) Carries out the transformation of a field variable from the phase space\n into the physical space on spherical coordinates. It is possible to \n specify a section of the Earth. This subroutine is slower thatn PHGRPH. Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgcut~~CallsGraph proc~phgcut PHGCUT proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgcut~~CalledByGraph proc~phgcut PHGCUT program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgcut.html","title":"PHGCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYMCUT(J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF Calls proc~~phsymcut~~CallsGraph proc~phsymcut PHSYMCUT proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phsymcut~~CalledByGraph proc~phsymcut PHSYMCUT proc~phgcut PHGCUT proc~phgcut->proc~phsymcut program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsymcut.html","title":"PHSYMCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGPNS(CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL Calls proc~~phgpns~~CallsGraph proc~phgpns PHGPNS proc~rfourtr RFOURTR proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgpns~~CalledByGraph proc~phgpns PHGPNS proc~phgcut PHGCUT proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgpns.html","title":"PHGPNS – Flex_extract: Calculation of etadot"},{"text":"public subroutine LEGTR(CXMN, CXM, Z, MNAUF, MAUF) Calculate the Fourier coefficients CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF Contents None","tags":"","loc":"proc/legtr.html","title":"LEGTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOURTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfourtr~~CallsGraph proc~rfourtr RFOURTR fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~rfourtr~~CalledByGraph proc~rfourtr RFOURTR proc~phsymcut PHSYMCUT proc~phsymcut->proc~rfourtr proc~phgpns PHGPNS proc~phgpns->proc~rfourtr proc~phgracut PHGRACUT proc~phgracut->proc~rfourtr proc~phgcut PHGCUT proc~phgcut->proc~phsymcut proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfourtr.html","title":"RFOURTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine GAULEG(X1, X2, X, W, N) Calculates the Gaussian latitudes Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N Calls proc~~gauleg~~CallsGraph proc~gauleg GAULEG dcos dcos proc~gauleg->dcos Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~gauleg~~CalledByGraph proc~gauleg GAULEG program~calc_etadot calc_etadot program~calc_etadot->proc~gauleg Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/gauleg.html","title":"GAULEG – Flex_extract: Calculation of etadot"},{"text":"public subroutine PLGNFA(LL, X, Z) Calculates all normalised associated Legendre functions from \n P00(X) to PLL(X) and writes them into the field Z.\n The polynomials have indices as with ECMWF, i.e.\n P00,P10,P11,P20,P21,P22,...\n Otherwise, this subroutine is analogous to PLGNDN Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z Contents None","tags":"","loc":"proc/plgnfa.html","title":"PLGNFA – Flex_extract: Calculation of etadot"},{"text":"public subroutine DPLGND(MNAUF, Z, DZ) Calculates the derivatives of the normalised associated Legendre function \n from P00(X) to PLL(X) and writes them into the field DZ.\n Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ Contents None","tags":"","loc":"proc/dplgnd.html","title":"DPLGND – Flex_extract: Calculation of etadot"},{"text":"public subroutine SPFILTER(FELDMN, MM, MMAX) Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX Calls proc~~spfilter~~CallsGraph proc~spfilter SPFILTER float float proc~spfilter->float alog alog proc~spfilter->alog Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/spfilter.html","title":"SPFILTER – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDTOUV(XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vdtouv~~UsesGraph proc~vdtouv VDTOUV module~phtogr PHTOGR proc~vdtouv->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Calculates scale winds from vorticity and divergence.\n If in XMN the divergence is passed, then the divergent part of the wind\n (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the \n rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.\n Summing both, one obtains the whole scale wind. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vdtouv.html","title":"VDTOUV – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDUVSUB(J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vduvsub~~UsesGraph proc~vduvsub VDUVSUB module~phtogr PHTOGR proc~vduvsub->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vduvsub.html","title":"VDUVSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRAD(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~phgrad~~UsesGraph proc~phgrad PHGRAD module~phtogr PHTOGR proc~phgrad->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Calculates the gradient of a scalar from the field of the scalar XMN\n in phase space. Returns fields of the componentens of the horizontal\n gradients XLAM,XPHI on the Gaussian grid. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Called by proc~~phgrad~~CalledByGraph proc~phgrad PHGRAD program~calc_etadot calc_etadot program~calc_etadot->proc~phgrad Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgrad.html","title":"PHGRAD – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRACUT(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Uses PHTOGR proc~~phgracut~~UsesGraph proc~phgracut PHGRACUT module~phtogr PHTOGR proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Calculated the gradient of a scalar from the field of the scalar XMN \n in phase space. Returns the fields of the components of the horizontal\n gradient XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK Calls proc~~phgracut~~CallsGraph proc~phgracut PHGRACUT proc~rfourtr RFOURTR proc~phgracut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgracut.html","title":"PHGRACUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine CONTGL(PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Calculation of divergence from the wind field (U,V)\n in phase space. Returns fields of the componentens of the \n horizontal gradients XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/contgl.html","title":"CONTGL – Flex_extract: Calculation of etadot"},{"text":"public subroutine OMEGA(PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) Calculates \\omega in the hybrid ( \\eta -)coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK Contents None","tags":"","loc":"proc/omega.html","title":"OMEGA – Flex_extract: Calculation of etadot"},{"text":"Read or write a field variable on a lat/lon grid from/to GRIB file, or \n read a field in spectral representation from GRIB file Used by module~~rwgrib2~~UsedByGraph module~rwgrib2 RWGRIB2 program~calc_etadot calc_etadot program~calc_etadot->module~rwgrib2 Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines READLATLON WRITELATLON READSPECTRAL Subroutines public subroutine READLATLON (filename, feld, maxl, maxb, mlevel, mpar) Read a field from GRIB file on lat-lon grid Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) public subroutine WRITELATLON (IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) public subroutine READSPECTRAL (filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) Read a GRIB file in spherical harmonics Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1)","tags":"","loc":"module/rwgrib2.html","title":"RWGRIB2 – Flex_extract: Calculation of etadot"},{"text":"Module for transformation from phase space into physical space Uses PHTOGR module~~grtoph~~UsesGraph module~grtoph GRTOPH module~phtogr PHTOGR module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Used by module~~grtoph~~UsedByGraph module~grtoph GRTOPH program~calc_etadot calc_etadot program~calc_etadot->module~grtoph Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines GRPH213 GRPHSUB LGTR213 RFOUFTR Subroutines public subroutine GRPH213 (CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine GRPHSUB (L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Carries out the transformation from the phase space into the physical\n space on spherical coordinates Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine LGTR213 (CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) Calculates the KFFKs (Fourier coefficients) CXMN Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB public subroutine RFOUFTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN","tags":"","loc":"module/grtoph.html","title":"GRTOPH – Flex_extract: Calculation of etadot"},{"text":"Module for transformation of a field variable from the phase space\n into the physical space onto the reduced Gaussian grid Used by module~~phtogr~~UsedByGraph module~phtogr PHTOGR proc~vduvsub VDUVSUB proc~vduvsub->module~phtogr program~calc_etadot calc_etadot program~calc_etadot->module~phtogr module~grtoph GRTOPH program~calc_etadot->module~grtoph proc~phgrad PHGRAD proc~phgrad->module~phtogr module~grtoph->module~phtogr proc~vdtouv VDTOUV proc~vdtouv->module~phtogr proc~phgracut PHGRACUT proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Variables MAXAUF Subroutines PHGR213 PHSYM PHGCUT PHSYMCUT PHGPNS LEGTR RFOURTR GAULEG PLGNFA DPLGND SPFILTER Variables Type Visibility Attributes Name Initial integer, public, parameter :: MAXAUF = 36000 Subroutines public subroutine PHGR213 (CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYM (K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHGCUT (CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) Carries out the transformation of a field variable from the phase space\n into the physical space on spherical coordinates. It is possible to \n specify a section of the Earth. This subroutine is slower thatn PHGRPH. Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYMCUT (J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF public subroutine PHGPNS (CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL public subroutine LEGTR (CXMN, CXM, Z, MNAUF, MAUF) Calculate the Fourier coefficients CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF public subroutine RFOURTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN public subroutine GAULEG (X1, X2, X, W, N) Calculates the Gaussian latitudes Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N public subroutine PLGNFA (LL, X, Z) Calculates all normalised associated Legendre functions from \n P00(X) to PLL(X) and writes them into the field Z.\n The polynomials have indices as with ECMWF, i.e.\n P00,P10,P11,P20,P21,P22,...\n Otherwise, this subroutine is analogous to PLGNDN Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z public subroutine DPLGND (MNAUF, Z, DZ) Calculates the derivatives of the normalised associated Legendre function \n from P00(X) to PLL(X) and writes them into the field DZ.\n Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ public subroutine SPFILTER (FELDMN, MM, MMAX) Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX","tags":"","loc":"module/phtogr.html","title":"PHTOGR – Flex_extract: Calculation of etadot"},{"text":"Implementation of the spectral transformation using the reduced Gaussian grid Used by module~~ftrafo~~UsedByGraph module~ftrafo FTRAFO program~calc_etadot calc_etadot program~calc_etadot->module~ftrafo Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines VDTOUV VDUVSUB PHGRAD PHGRACUT CONTGL OMEGA Subroutines public subroutine VDTOUV (XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Calculates scale winds from vorticity and divergence.\n If in XMN the divergence is passed, then the divergent part of the wind\n (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the \n rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.\n Summing both, one obtains the whole scale wind. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine VDUVSUB (J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRAD (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Calculates the gradient of a scalar from the field of the scalar XMN\n in phase space. Returns fields of the componentens of the horizontal\n gradients XLAM,XPHI on the Gaussian grid. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRACUT (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Calculated the gradient of a scalar from the field of the scalar XMN \n in phase space. Returns the fields of the components of the horizontal\n gradient XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK public subroutine CONTGL (PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Calculation of divergence from the wind field (U,V)\n in phase space. Returns fields of the componentens of the \n horizontal gradients XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK public subroutine OMEGA (PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) Calculates \\omega in the hybrid ( \\eta -)coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK","tags":"","loc":"module/ftrafo.html","title":"FTRAFO – Flex_extract: Calculation of etadot"},{"text":"Uses PHTOGR GRTOPH FTRAFO RWGRIB2 GRIB_API program~~calc_etadot~~UsesGraph program~calc_etadot calc_etadot module~phtogr PHTOGR program~calc_etadot->module~phtogr module~rwgrib2 RWGRIB2 program~calc_etadot->module~rwgrib2 module~ftrafo FTRAFO program~calc_etadot->module~ftrafo module~grtoph GRTOPH program~calc_etadot->module~grtoph GRIB_API GRIB_API program~calc_etadot->GRIB_API module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Prepare input data for FLEXPART, esp. vertical velocity as \n etadot or etadot * dp/deta author: L. Haimberger\n date:   03/2010\n version: V4.0 Program calc_etadot Prepares input data for POP model meteorological preprocessor Calculation of etapoint on a regular \\lambda-\\phi grid and writing U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, \n EWSS,NSSS to an output file (input and output in GRIB 1 or 2 format). etapoint is defined as the total time derivative of \n  ECMWF vertical coordinate eta multiplied by the derivative\n  of pressure with respect to eta: \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} Version history and authors: 04/1994: Leopold Haimberger, Gerhard Wotawa 2003-05-11: Alexander Beck 12/2006: L. Haimberger V2.0,\n           handle arbitrary regular grids and T799 resolution data 03/2010: L. Haimberger V4.0,\n           handle GRIB edition 2 fields and T1279 resolution data 04-06/2019: Petra Seibert, \n            beautify code and add FORD documentation 06/2020: Petra Seibert, translate some comments into English\n            comment out writing of VERTICAL.EC Input required: UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION\n\n 11    fort.11   T,U,V           regular lat-lon grid\n 12    fort.12   D               regular lat-lon grid   \n 13    fort.13   LNSP            spherical harmonics\n 14    fort.14   SD,MSL,TCC,10U,                                \n                 10V,2T,2D       regular lat-lon grid     \n 16    fort.16   LSP,CP,SSHF,         \n                 SSR,EWSS,NSSS   regular lat-lon grid\n 17    fort.17   Q               regular lat-lon grid Output produced: UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION\n\n15    fort.15   `U,V,ETA,T,PS,                                  \n                `Q,SD,MSL,TCC,`                                  \n                `10U,10V,2T,2D,`  regular lat-lon grid         \n                `LSP,CP,SSHF,`                                   \n                `SSR,EWSS,NSSS` ALLOCATE VARIABLES Initialise  Legendre transformation on the lat-lon grid Initialisation of fields for FFT and Legendre transformation\n to Gaussian grid and back to phase space\n  read LNSP in SH\n  read u,v in SH\n  Transforming the wind to the Gaussian grid\n  read DIV in SH\n Transform horizontal divergence to the Gaussian grid\n Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid Calculation of the vertical velocity on the Gaussian grid Calculation of omega on the Gaussian grid READING OF SURFACE PRESSURE READING OF U,V READING OF LNSP on grid READING OF DIVERGENCE Initialise Legendre transformation on the lat-lon grid.\n Without Gaussian grid calculation, \n Legendre polynomials are calculated only for one latitude, to save space READING OF T READING OF SPECIFIC HUMIDITY WRITE MODEL LEVEL DATA TO fort.15 Calls program~~calc_etadot~~CallsGraph program~calc_etadot calc_etadot proc~readspectral READSPECTRAL program~calc_etadot->proc~readspectral proc~phgcut PHGCUT program~calc_etadot->proc~phgcut proc~grph213 GRPH213 program~calc_etadot->proc~grph213 grib_close_file grib_close_file program~calc_etadot->grib_close_file proc~statis STATIS program~calc_etadot->proc~statis proc~phgr213 PHGR213 program~calc_etadot->proc~phgr213 proc~gauleg GAULEG program~calc_etadot->proc~gauleg grib_open_file grib_open_file program~calc_etadot->grib_open_file set99 set99 program~calc_etadot->set99 proc~posnam POSNAM program~calc_etadot->proc~posnam proc~readlatlon READLATLON program~calc_etadot->proc~readlatlon proc~phgrad PHGRAD program~calc_etadot->proc~phgrad proc~readspectral->grib_close_file grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~grphsub GRPHSUB proc~grph213->proc~grphsub ind ind proc~grph213->ind proc~phsym PHSYM proc~phgr213->proc~phsym dcos dcos proc~gauleg->dcos proc~readlatlon->grib_close_file proc~readlatlon->grib_count_in_file proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents Variables LNPS Z T UV UV2 QA OM OMR DIV ETA ETAR DPSDL DPSDM PS DPSDT SURF FLUX OROLSM WSAVE H SINL COSL WSAVE2 BREITE GBREITE AK BK pv X1 X2 RMS MW SIG LAM CUA CVA P PP P2 XMN HILFUV LNPMN LNPMN2 LNPMN3 WEIGHT UGVG DG ETAG GWSAVE PSG HILF MLAT MPSURF MPFLUX MPORO MPAR GIFAX PI COSB DAK DBK P00 URLAR8 JMIN1 LLLAR8 MAXBMIN1 PIR8 DCOSB I J K L IERR M LTEST MK NGI NGJ MFLUX MSURF MORO LUNIT LUNIT2 MAXL MAXB MLEVEL LEVOUT LEVMIN LEVMAX MOMEGA MOMEGADIFF MGAUSS MSMOOTH MNAUF META METADIFF MDPDETA METAPAR RLO0 RLO1 RLA0 RLA1 MLEVELIST MAUF MANF IFAX IGRIB iret ogrib FILENAME Variables Type Attributes Name Initial real, ALLOCATABLE, DIMENSION (:,:) :: LNPS real, ALLOCATABLE, DIMENSION (:,:) :: Z real, ALLOCATABLE, DIMENSION (:,:,:) :: T real, ALLOCATABLE, DIMENSION (:,:,:) :: UV real, ALLOCATABLE, DIMENSION (:,:,:) :: UV2 real, ALLOCATABLE, DIMENSION (:,:,:) :: QA real, ALLOCATABLE, DIMENSION (:,:,:) :: OM real, ALLOCATABLE, DIMENSION (:,:,:) :: OMR real, ALLOCATABLE, DIMENSION (:,:,:) :: DIV real, ALLOCATABLE, DIMENSION (:,:,:) :: ETA real, ALLOCATABLE, DIMENSION (:,:,:) :: ETAR real, ALLOCATABLE, DIMENSION (:,:) :: DPSDL real, ALLOCATABLE, DIMENSION (:,:) :: DPSDM real, ALLOCATABLE, DIMENSION (:,:,:) :: PS real, ALLOCATABLE, DIMENSION (:,:,:) :: DPSDT real, ALLOCATABLE, DIMENSION (:,:,:) :: SURF real, ALLOCATABLE, DIMENSION (:,:,:) :: FLUX real, ALLOCATABLE, DIMENSION (:,:,:) :: OROLSM real, ALLOCATABLE, DIMENSION (:) :: WSAVE real, ALLOCATABLE, DIMENSION (:) :: H real, ALLOCATABLE, DIMENSION (:) :: SINL real, ALLOCATABLE, DIMENSION (:) :: COSL real, ALLOCATABLE, DIMENSION (:) :: WSAVE2 real, ALLOCATABLE, DIMENSION (:) :: BREITE real, ALLOCATABLE, DIMENSION (:) :: GBREITE real, ALLOCATABLE, DIMENSION (:) :: AK real, ALLOCATABLE, DIMENSION (:) :: BK real, ALLOCATABLE, DIMENSION (:) :: pv real :: X1 real :: X2 real :: RMS real :: MW real :: SIG real :: LAM real, ALLOCATABLE :: CUA (:,:,:) real, ALLOCATABLE :: CVA (:,:,:) real, ALLOCATABLE, DIMENSION (:,:) :: P real, ALLOCATABLE, DIMENSION (:,:) :: PP real, ALLOCATABLE, DIMENSION (:,:) :: P2 real, ALLOCATABLE, DIMENSION (:,:) :: XMN real, ALLOCATABLE, DIMENSION (:,:) :: HILFUV real, ALLOCATABLE, DIMENSION (:) :: LNPMN real, ALLOCATABLE, DIMENSION (:) :: LNPMN2 real, ALLOCATABLE, DIMENSION (:) :: LNPMN3 real, ALLOCATABLE, DIMENSION (:) :: WEIGHT real, ALLOCATABLE, DIMENSION (:,:) :: UGVG real, ALLOCATABLE, DIMENSION (:,:) :: DG real, ALLOCATABLE, DIMENSION (:,:) :: ETAG real, ALLOCATABLE, DIMENSION (:,:) :: GWSAVE real, ALLOCATABLE, DIMENSION (:) :: PSG real, ALLOCATABLE, DIMENSION (:) :: HILF integer, ALLOCATABLE, DIMENSION (:) :: MLAT integer, ALLOCATABLE, DIMENSION (:) :: MPSURF integer, ALLOCATABLE, DIMENSION (:) :: MPFLUX integer, ALLOCATABLE, DIMENSION (:) :: MPORO integer, ALLOCATABLE, DIMENSION (:) :: MPAR integer, ALLOCATABLE :: GIFAX (:,:) real :: PI real :: COSB real :: DAK real :: DBK real :: P00 real :: URLAR8 real :: JMIN1 real :: LLLAR8 real :: MAXBMIN1 real :: PIR8 real :: DCOSB integer :: I integer :: J integer :: K integer :: L integer :: IERR integer :: M integer :: LTEST integer :: MK integer :: NGI integer :: NGJ integer :: MFLUX integer :: MSURF integer :: MORO integer :: LUNIT integer :: LUNIT2 integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: LEVOUT integer :: LEVMIN integer :: LEVMAX integer :: MOMEGA integer :: MOMEGADIFF integer :: MGAUSS integer :: MSMOOTH integer :: MNAUF integer :: META integer :: METADIFF integer :: MDPDETA integer :: METAPAR real :: RLO0 real :: RLO1 real :: RLA0 real :: RLA1 character(len=300) :: MLEVELIST integer :: MAUF integer :: MANF integer :: IFAX (10) integer :: IGRIB (1) integer :: iret integer :: ogrib character(len=80) :: FILENAME","tags":"","loc":"program/calc_etadot.html","title":"calc_etadot – Flex_extract: Calculation of etadot"}]}
\ No newline at end of file
diff --git a/Documentation/html/Documentation/Api/Fortran/module/ftrafo.html b/Documentation/html/Documentation/Api/Fortran/module/ftrafo.html
index dd89411682c28b93b4ee5897b21d65e4e6cec290..f18a79c6ef54aec16e4950880eae42ce33070c6b 100644
--- a/Documentation/html/Documentation/Api/Fortran/module/ftrafo.html
+++ b/Documentation/html/Documentation/Api/Fortran/module/ftrafo.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -210,7 +210,7 @@
     </div>
     
     <div class="col-md-9" id='text'>
-    <p>Implementation of the spectral transformation using reduced the Gaussian grid</p>
+    <p>Implementation of the spectral transformation using the reduced Gaussian grid</p>
       <br>
     
   
@@ -403,11 +403,11 @@ public subroutine <a href='../proc/vdtouv.html'>VDTOUV</a>(XMN, XLAM, XPHI, GWSA
 
 
 
-<p>Berechnung der scale winds aus Vorticity und Divergenz
- uebergibt man in XMN die Divergenz, so wird der divergente Anteil des
- Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so
- erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).
- Summiert man beide, erhaelt man den gesamten Scale wind</p>
+<p>Calculates scale winds from vorticity and divergence.
+ If in XMN the divergence is passed, then the divergent part of the wind
+ (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the 
+ rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.
+ Summing both, one obtains the whole scale wind.</p>
     
     <h4>Arguments</h4>
     
@@ -847,9 +847,9 @@ public subroutine <a href='../proc/phgrad.html'>PHGRAD</a>(XMN, XLAM, XPHI, GWSA
 
 
 
-<p>Berechnung des Gradienten eines Skalars aus dem Feld des
- Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p>
+<p>Calculates the gradient of a scalar from the field of the scalar XMN
+ in phase space. Returns fields of the componentens of the horizontal
+ gradients XLAM,XPHI on the Gaussian grid.</p>
     
     <h4>Arguments</h4>
     
@@ -1073,9 +1073,9 @@ public subroutine <a href='../proc/phgracut.html'>PHGRACUT</a>(XMN, XLAM, XPHI,
 
 
 
-<p>Berechnung des Gradienten eines Skalars aus dem Feld des
- Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p>
+<p>Calculated the gradient of a scalar from the field of the scalar XMN 
+ in phase space. Returns the fields of the components of the horizontal
+ gradient XLAM,XPHI on the Gaussian grid</p>
     
     <h4>Arguments</h4>
     
@@ -1314,9 +1314,9 @@ public subroutine <a href='../proc/contgl.html'>CONTGL</a>(PS, DPSDL, DPSDM, DIV
 
 
 
-<p>Berechnung der Divergenz aus dem Windfeld (U,V)
- im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p>
+<p>Calculation of divergence from the wind field (U,V)
+ in phase space. Returns fields of the componentens of the 
+ horizontal gradients XLAM,XPHI on the Gaussian grid</p>
     
     <h4>Arguments</h4>
     
@@ -1570,7 +1570,7 @@ public subroutine <a href='../proc/omega.html'>OMEGA</a>(PS, DPSDL, DPSDM, DIV,
 
 
 
-<p>calculates $\omega$ in the hybrid ($\eta$-) coordinate system</p>
+<p>Calculates <script type="math/tex">\omega</script> in the hybrid (<script type="math/tex">\eta</script>-)coordinate system</p>
     
     <h4>Arguments</h4>
     
@@ -1820,8 +1820,8 @@ public subroutine <a href='../proc/omega.html'>OMEGA</a>(PS, DPSDL, DPSDM, DIV,
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/module/grtoph.html b/Documentation/html/Documentation/Api/Fortran/module/grtoph.html
index 422bed2c7abd63536dc81c01ff8a1adc99f92edb..eab5ac85c1a3926069eeaaa16b80394eba89ade2 100644
--- a/Documentation/html/Documentation/Api/Fortran/module/grtoph.html
+++ b/Documentation/html/Documentation/Api/Fortran/module/grtoph.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -206,7 +206,7 @@
     </div>
     
     <div class="col-md-9" id='text'>
-    
+    <p>Module for transformation from phase space into physical space</p>
       <br>
     
   
@@ -493,16 +493,6 @@ public subroutine <a href='../proc/grph213.html'>GRPH213</a>(CXMN, FELD, WSAVE,
   <div class="panel-body">
        
     
-
-
-
-
-
-
-
-<p>WRONG&gt;&gt;&gt; DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH</p>
     
     <h4>Arguments</h4>
     
@@ -711,9 +701,8 @@ public subroutine <a href='../proc/grphsub.html'>GRPHSUB</a>(L, IND, CXMN, FELD,
 
 
 
-<p>DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH</p>
+<p>Carries out the transformation from the phase space into the physical
+ space on spherical coordinates</p>
     
     <h4>Arguments</h4>
     
@@ -952,7 +941,7 @@ public subroutine <a href='../proc/lgtr213.html'>LGTR213</a>(CXMN, CXM, Z, W, ML
 
 
 
-<a href="../proc/lgtr213.html" class="pull-right"><emph>Read more&hellip;</emph></a>
+<p>Calculates the KFFKs (Fourier coefficients) CXMN</p>
     
     <h4>Arguments</h4>
     
@@ -1094,6 +1083,14 @@ public subroutine <a href='../proc/rfouftr.html'>RFOUFTR</a>(CXM, TRIGS, IFAX, M
   <div class="panel-body">
        
     
+
+
+
+
+
+
+
+<p>Calculates the Fourier sum with an FFT algorithm</p>
     
     <h4>Arguments</h4>
     
@@ -1223,8 +1220,8 @@ public subroutine <a href='../proc/rfouftr.html'>RFOUFTR</a>(CXM, TRIGS, IFAX, M
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/module/phtogr.html b/Documentation/html/Documentation/Api/Fortran/module/phtogr.html
index 4c9319307c781e70eecfb38b29a53e695b46793d..1607b244a0303a7431cf4cf49467dc86c40d1c0f 100644
--- a/Documentation/html/Documentation/Api/Fortran/module/phtogr.html
+++ b/Documentation/html/Documentation/Api/Fortran/module/phtogr.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -232,7 +232,8 @@
     </div>
     
     <div class="col-md-9" id='text'>
-    
+    <p>Module for transformation of a field variable from the phase space
+ into the physical space onto the reduced Gaussian grid</p>
       <br>
     
   
@@ -542,16 +543,6 @@ public subroutine <a href='../proc/phgr213.html'>PHGR213</a>(CXMN, FELD, WSAVE,
   <div class="panel-body">
        
     
-
-
-
-
-
-
-
-<p>DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH</p>
     
     <h4>Arguments</h4>
     
@@ -961,10 +952,9 @@ public subroutine <a href='../proc/phgcut.html'>PHGCUT</a>(CXMN, FELD, WSAVE, IF
 
 
 
-<p>DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt
- Der Erde angegeben werden. Diese Routine ist langsamer als phgrph</p><a href="../proc/phgcut.html" class="pull-right"><emph>Read more&hellip;</emph></a>
+<p>Carries out the transformation of a field variable from the phase space
+ into the physical space on spherical coordinates. It is possible to 
+ specify a section of the Earth. This subroutine is slower thatn PHGRPH.</p>
     
     <h4>Arguments</h4>
     
@@ -1620,7 +1610,7 @@ public subroutine <a href='../proc/legtr.html'>LEGTR</a>(CXMN, CXM, Z, MNAUF, MA
 
 
 
-<p>DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM</p>
+<p>Calculate the Fourier coefficients CXM</p>
     
     <h4>Arguments</h4>
     
@@ -1739,7 +1729,7 @@ public subroutine <a href='../proc/rfourtr.html'>RFOURTR</a>(CXM, TRIGS, IFAX, M
 
 
 
-<a href="../proc/rfourtr.html" class="pull-right"><emph>Read more&hellip;</emph></a>
+<p>Calculates the Fourier sum with an FFT algorithm</p>
     
     <h4>Arguments</h4>
     
@@ -1873,7 +1863,7 @@ public subroutine <a href='../proc/gauleg.html'>GAULEG</a>(X1, X2, X, W, N)
 
 
 
-<p>BERECHNET DIE GAUSS+SCHEN BREITEN</p>
+<p>Calculates the Gaussian latitudes</p>
     
     <h4>Arguments</h4>
     
@@ -1992,9 +1982,11 @@ public subroutine <a href='../proc/plgnfa.html'>PLGNFA</a>(LL, X, Z)
 
 
 
-<p>PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN
- LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
- UND SCHREIBT SIE IN DAS FELD Z</p>
+<p>Calculates all normalised associated Legendre functions from 
+ P00(X) to PLL(X) and writes them into the field Z.
+ The polynomials have indices as with ECMWF, i.e.
+ P00,P10,P11,P20,P21,P22,...
+ Otherwise, this subroutine is analogous to PLGNDN</p>
     
     <h4>Arguments</h4>
     
@@ -2083,9 +2075,9 @@ public subroutine <a href='../proc/dplgnd.html'>DPLGND</a>(MNAUF, Z, DZ)
 
 
 
-<p>DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN
- LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
- UND SCHREIBT SIE IN DAS FELD DZ</p>
+<p>Calculates the derivatives of the normalised associated Legendre function 
+ from P00(X) to PLL(X) and writes them into the field DZ.
+ Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)</p>
     
     <h4>Arguments</h4>
     
@@ -2174,7 +2166,7 @@ public subroutine <a href='../proc/spfilter.html'>SPFILTER</a>(FELDMN, MM, MMAX)
 
 
 
-<p>Spectral Filter of Sardeshmukh and Hoskins (1984, MWR)</p>
+<p>Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984)</p>
     
     <h4>Arguments</h4>
     
@@ -2259,8 +2251,8 @@ public subroutine <a href='../proc/spfilter.html'>SPFILTER</a>(FELDMN, MM, MMAX)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/module/rwgrib2.html b/Documentation/html/Documentation/Api/Fortran/module/rwgrib2.html
index 05f1b73712d50bc97d50ad29fd9b1722c11d2958..c891a9b220fd22f8a97d3d77e88f5a4a1ca516c0 100644
--- a/Documentation/html/Documentation/Api/Fortran/module/rwgrib2.html
+++ b/Documentation/html/Documentation/Api/Fortran/module/rwgrib2.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -204,7 +204,8 @@
     </div>
     
     <div class="col-md-9" id='text'>
-    
+    <p>Read or write a field variable on a lat/lon grid from/to GRIB file, or 
+ read a field in spectral representation from GRIB file</p>
       <br>
     
   
@@ -391,7 +392,7 @@ public subroutine <a href='../proc/readlatlon.html'>READLATLON</a>(filename, fel
 
 
 
-<p>Read a field from GRIB file on lat-lon grid</p><a href="../proc/readlatlon.html" class="pull-right"><emph>Read more&hellip;</emph></a>
+<p>Read a field from GRIB file on lat-lon grid</p>
     
     <h4>Arguments</h4>
     
@@ -719,7 +720,7 @@ public subroutine <a href='../proc/readspectral.html'>READSPECTRAL</a>(filename,
 
 
 
-<p>read a GRIB file in spherical harmonics</p><a href="../proc/readspectral.html" class="pull-right"><emph>Read more&hellip;</emph></a>
+<p>Read a GRIB file in spherical harmonics</p>
     
     <h4>Arguments</h4>
     
@@ -879,8 +880,8 @@ public subroutine <a href='../proc/readspectral.html'>READSPECTRAL</a>(filename,
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/contgl.html b/Documentation/html/Documentation/Api/Fortran/proc/contgl.html
index dfa27ee929863117bb90f71845be3d31d0931d5f..1bc06b0668749f242559eb3d6f94a35d9e1fb202 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/contgl.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/contgl.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,9 +203,9 @@ public subroutine CONTGL(PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, N
 
 
     
-    <p>Berechnung der Divergenz aus dem Windfeld (U,V)
- im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p>
+    <p>Calculation of divergence from the wind field (U,V)
+ in phase space. Returns fields of the componentens of the 
+ horizontal gradients XLAM,XPHI on the Gaussian grid</p>
     
 
     <h3>Arguments</h3>
@@ -499,8 +499,8 @@ public subroutine CONTGL(PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, N
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/dplgnd.html b/Documentation/html/Documentation/Api/Fortran/proc/dplgnd.html
index 180c6c6445c36c5eb935cd6bccf325308a292113..8e2809f472ce60f06d690026a5af3fd4b0a6638c 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/dplgnd.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/dplgnd.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,9 +203,9 @@ public subroutine DPLGND(MNAUF, Z, DZ)
 
 
     
-    <p>DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN
- LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
- UND SCHREIBT SIE IN DAS FELD DZ</p>
+    <p>Calculates the derivatives of the normalised associated Legendre function 
+ from P00(X) to PLL(X) and writes them into the field DZ.
+ Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)</p>
     
 
     <h3>Arguments</h3>
@@ -334,8 +334,8 @@ public subroutine DPLGND(MNAUF, Z, DZ)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/gauleg.html b/Documentation/html/Documentation/Api/Fortran/proc/gauleg.html
index 583c077466fa3c3f9ed0550b2b1414a751304140..73ea90d9f3508d87b32545a1c39196f055267558 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/gauleg.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/gauleg.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,7 +203,7 @@ public subroutine GAULEG(X1, X2, X, W, N)
 
 
     
-    <p>BERECHNET DIE GAUSS+SCHEN BREITEN</p>
+    <p>Calculates the Gaussian latitudes</p>
     
 
     <h3>Arguments</h3>
@@ -545,8 +545,8 @@ public subroutine GAULEG(X1, X2, X, W, N)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/grph213.html b/Documentation/html/Documentation/Api/Fortran/proc/grph213.html
index 4bb032528eb18e7ef9b167dad782cf368b6496b8..9680cfe59d8b380a1cb61999c45f3d6fef22cbe6 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/grph213.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/grph213.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,10 +203,6 @@ public subroutine GRPH213(CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB
 
 
     
-    <p>WRONG&gt;&gt;&gt; DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH</p>
-    
 
     <h3>Arguments</h3>
     
@@ -650,8 +646,8 @@ public subroutine GRPH213(CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/grphsub.html b/Documentation/html/Documentation/Api/Fortran/proc/grphsub.html
index 213ab93b5c26b095d67489afd24a6c9ea1d9546b..ff771ef5e6054585424213e30d3299e4d2c8ed9b 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/grphsub.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/grphsub.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,9 +203,8 @@ public subroutine GRPHSUB(L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MA
 
 
     
-    <p>DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH</p>
+    <p>Carries out the transformation from the phase space into the physical
+ space on spherical coordinates</p>
     
 
     <h3>Arguments</h3>
@@ -591,8 +590,8 @@ public subroutine GRPHSUB(L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MA
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/ia.html b/Documentation/html/Documentation/Api/Fortran/proc/ia.html
index 8f821e52f8e25319a680d4c907a2ab764db292be..ce9c6b0e075ac4151713bdf326e5ba8d73c8c776 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/ia.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/ia.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -369,8 +369,8 @@ function IA(FIELD1, NI, NJ, NK, G)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/legtr.html b/Documentation/html/Documentation/Api/Fortran/proc/legtr.html
index a7d1189f5325c4275e897c433545893cdd4037c4..cc055175f64749b5a6e63b78e4a9de21d0040c72 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/legtr.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/legtr.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,7 +203,7 @@ public subroutine LEGTR(CXMN, CXM, Z, MNAUF, MAUF)
 
 
     
-    <p>DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM</p>
+    <p>Calculate the Fourier coefficients CXM</p>
     
 
     <h3>Arguments</h3>
@@ -362,8 +362,8 @@ public subroutine LEGTR(CXMN, CXM, Z, MNAUF, MAUF)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/lgtr213.html b/Documentation/html/Documentation/Api/Fortran/proc/lgtr213.html
index 94042aacb907beae07063939bee8f878a440b4d3..5623a20a96ee45389d9839ec8eb33d2fd105dba2 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/lgtr213.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/lgtr213.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,8 +203,7 @@ public subroutine LGTR213(CXMN, CXM, Z, W, MLAT, MNAUF, MAXB)
 
 
     
-    <div class="codehilite"><pre><span></span> DIESE ROUTINE BERECHNET DIE KFFKs CXMN
-</pre></div>
+    <p>Calculates the KFFKs (Fourier coefficients) CXMN</p>
     
 
     <h3>Arguments</h3>
@@ -393,8 +392,8 @@ public subroutine LGTR213(CXMN, CXM, Z, W, MLAT, MNAUF, MAXB)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/omega.html b/Documentation/html/Documentation/Api/Fortran/proc/omega.html
index ac71f85f0a88850818723bf80809d21816a51e2b..25da5a3fbc321be8090a65da298c669fde07eb7b 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/omega.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/omega.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,7 +203,7 @@ public subroutine OMEGA(PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI,
 
 
     
-    <p>calculates $\omega$ in the hybrid ($\eta$-) coordinate system</p>
+    <p>Calculates <script type="math/tex">\omega</script> in the hybrid (<script type="math/tex">\eta</script>-)coordinate system</p>
     
 
     <h3>Arguments</h3>
@@ -497,8 +497,8 @@ public subroutine OMEGA(PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI,
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phgcut.html b/Documentation/html/Documentation/Api/Fortran/proc/phgcut.html
index 8d8510ef87f3b3889bdabe56319f5262e4b99c0e..45227b57fdfc889a78a00a60f248483fcbeb69a6 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phgcut.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phgcut.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,12 +203,9 @@ public subroutine PHGCUT(CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MA
 
 
     
-    <p>DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt
- Der Erde angegeben werden. Diese Routine ist langsamer als phgrph</p>
-<div class="codehilite"><pre><span></span>  WRITE(*,*) &#39;Symmetrisch: &#39;,SYM
-</pre></div>
+    <p>Carries out the transformation of a field variable from the phase space
+ into the physical space on spherical coordinates. It is possible to 
+ specify a section of the Earth. This subroutine is slower thatn PHGRPH.</p>
     
 
     <h3>Arguments</h3>
@@ -699,8 +696,8 @@ public subroutine PHGCUT(CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MA
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phgpns.html b/Documentation/html/Documentation/Api/Fortran/proc/phgpns.html
index dca19e90f2196944231f70887e441e349fc70df3..6b030f6821313c5585c76a4caa4c0f9269464ffb 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phgpns.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phgpns.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -674,8 +674,8 @@ public subroutine PHGPNS(CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL,
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phgr213.html b/Documentation/html/Documentation/Api/Fortran/proc/phgr213.html
index 8215ec84788b62bdc4c195b60b26853ec1627fbc..655816f31f2467e6c3875e95ae6d7ab8b5a9894a 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phgr213.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phgr213.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,10 +203,6 @@ public subroutine PHGR213(CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, M
 
 
     
-    <p>DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
- FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
- RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH</p>
-    
 
     <h3>Arguments</h3>
     
@@ -625,8 +621,8 @@ public subroutine PHGR213(CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, M
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phgracut.html b/Documentation/html/Documentation/Api/Fortran/proc/phgracut.html
index ea82cbb2b8307532b0b7dc060301e9b1adbd78b7..3176b1787172e0979dcf75f064967eed44766e4b 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phgracut.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phgracut.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -308,9 +308,9 @@ public subroutine PHGRACUT(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI,
 
 
     
-    <p>Berechnung des Gradienten eines Skalars aus dem Feld des
- Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p>
+    <p>Calculated the gradient of a scalar from the field of the scalar XMN 
+ in phase space. Returns the fields of the components of the horizontal
+ gradient XLAM,XPHI on the Gaussian grid</p>
     
 
     <h3>Arguments</h3>
@@ -693,8 +693,8 @@ public subroutine PHGRACUT(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI,
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phgrad.html b/Documentation/html/Documentation/Api/Fortran/proc/phgrad.html
index 1be8b0fccc170c45c97eff6d0dde20fc7eab598a..b287d0153999422ea1ea5053c20c9b24674c674b 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phgrad.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phgrad.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -308,9 +308,9 @@ public subroutine PHGRAD(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, N
 
 
     
-    <p>Berechnung des Gradienten eines Skalars aus dem Feld des
- Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
- Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.</p>
+    <p>Calculates the gradient of a scalar from the field of the scalar XMN
+ in phase space. Returns fields of the componentens of the horizontal
+ gradients XLAM,XPHI on the Gaussian grid.</p>
     
 
     <h3>Arguments</h3>
@@ -668,8 +668,8 @@ public subroutine PHGRAD(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, N
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phsym.html b/Documentation/html/Documentation/Api/Fortran/proc/phsym.html
index 29bc9a6adfc1aff08c3f5e5fbffedb8f18faf680..1a01f01e00332763347d6a0795b93d62d16b6a2a 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phsym.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phsym.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -572,8 +572,8 @@ public subroutine PHSYM(K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, M
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/phsymcut.html b/Documentation/html/Documentation/Api/Fortran/proc/phsymcut.html
index 15bfc071559c30bebcdd27c78e8cb1b35f3f78ba..e812809b883c7ff5136841b188a19a08233b214f 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/phsymcut.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/phsymcut.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -674,8 +674,8 @@ public subroutine PHSYMCUT(J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAX
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/plgnfa.html b/Documentation/html/Documentation/Api/Fortran/proc/plgnfa.html
index d6b0aca8846b89463ceee45501ec49e147705254..2c0958ed73f7b1f7e7c26ee97e91e23ba75af444 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/plgnfa.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/plgnfa.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,9 +203,11 @@ public subroutine PLGNFA(LL, X, Z)
 
 
     
-    <p>PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN
- LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
- UND SCHREIBT SIE IN DAS FELD Z</p>
+    <p>Calculates all normalised associated Legendre functions from 
+ P00(X) to PLL(X) and writes them into the field Z.
+ The polynomials have indices as with ECMWF, i.e.
+ P00,P10,P11,P20,P21,P22,...
+ Otherwise, this subroutine is analogous to PLGNDN</p>
     
 
     <h3>Arguments</h3>
@@ -334,8 +336,8 @@ public subroutine PLGNFA(LL, X, Z)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/posnam.html b/Documentation/html/Documentation/Api/Fortran/proc/posnam.html
index e0ba9be1a93159d3eab93d9fef6b05dee2861cfc..a282888ebaccb5cb42913cb77004dd17166a88ab 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/posnam.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/posnam.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -201,7 +201,8 @@ subroutine POSNAM(KULNAM, CDNAML)
 
 
     
-    <p>position in namelist file.</p>
+    <p>Position in namelist file.
+ Author:  Mats Hamrud, ECMWF</p>
     
 
     <h3>Arguments</h3>
@@ -409,8 +410,8 @@ subroutine POSNAM(KULNAM, CDNAML)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/readlatlon.html b/Documentation/html/Documentation/Api/Fortran/proc/readlatlon.html
index 6f9c7e1b19afb917c56cdc639b74375e0ad6a475..6c281a846cfea034fd9934a210c0a78e69505648 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/readlatlon.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/readlatlon.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -306,7 +306,6 @@ public subroutine READLATLON(filename, feld, maxl, maxb, mlevel, mpar)
 
     
     <p>Read a field from GRIB file on lat-lon grid</p>
-<p>write(<em>,</em>) 'readlatlon: ',i-1,' records read'</p>
     
 
     <h3>Arguments</h3>
@@ -673,8 +672,8 @@ public subroutine READLATLON(filename, feld, maxl, maxb, mlevel, mpar)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/readspectral.html b/Documentation/html/Documentation/Api/Fortran/proc/readspectral.html
index df974107b5d705a68b8fa4f088ab3abbd4653fbb..5a83eefec40fc28db501a4fde4a3af3670fc1142 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/readspectral.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/readspectral.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -305,8 +305,7 @@ public subroutine READSPECTRAL(filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B
 
 
     
-    <p>read a GRIB file in spherical harmonics</p>
-<p>write(<em>,</em>) 'readspectral: ',i-1,' records read'</p>
+    <p>Read a GRIB file in spherical harmonics</p>
     
 
     <h3>Arguments</h3>
@@ -703,8 +702,8 @@ public subroutine READSPECTRAL(filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/rfouftr.html b/Documentation/html/Documentation/Api/Fortran/proc/rfouftr.html
index 93382c7b11ed5c0ecb59bb0cf19eb7cce6304b5a..547f0aecd87b3807c5f08051e0af65680195a47d 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/rfouftr.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/rfouftr.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,6 +203,8 @@ public subroutine RFOUFTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN)
 
 
     
+    <p>Calculates the Fourier sum with an FFT algorithm</p>
+    
 
     <h3>Arguments</h3>
     
@@ -476,8 +478,8 @@ public subroutine RFOUFTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/rfourtr.html b/Documentation/html/Documentation/Api/Fortran/proc/rfourtr.html
index c2fccc9bac05c8207c7f62a5819a30a393460bf4..e9405e769a8b47716b5b071e097573a278a14fd5 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/rfourtr.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/rfourtr.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,8 +203,7 @@ public subroutine RFOURTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN)
 
 
     
-    <div class="codehilite"><pre><span></span> BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS
-</pre></div>
+    <p>Calculates the Fourier sum with an FFT algorithm</p>
     
 
     <h3>Arguments</h3>
@@ -618,8 +617,8 @@ public subroutine RFOURTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/spfilter.html b/Documentation/html/Documentation/Api/Fortran/proc/spfilter.html
index 6b5268fe531537490f956313c8c08ff0238a657d..df2d5bf0f7b4f2ecee5422972f943a68af3a78cc 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/spfilter.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/spfilter.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -203,7 +203,7 @@ public subroutine SPFILTER(FELDMN, MM, MMAX)
 
 
     
-    <p>Spectral Filter of Sardeshmukh and Hoskins (1984, MWR)</p>
+    <p>Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984)</p>
     
 
     <h3>Arguments</h3>
@@ -433,8 +433,8 @@ public subroutine SPFILTER(FELDMN, MM, MMAX)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/statis.html b/Documentation/html/Documentation/Api/Fortran/proc/statis.html
index de3c73795e6346a989d39e3c2b597d2467f2bc5d..30ddc61ab57b72bd32152f5f31a7d5cd3a46ef8e 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/statis.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/statis.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -484,8 +484,8 @@ subroutine STATIS(NI, NJ, NK, PHI, RMS, MW, SIG)
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/vdtouv.html b/Documentation/html/Documentation/Api/Fortran/proc/vdtouv.html
index b559705d702f00c256e1524d658ab863ce5a4c62..6f58ef6a8104845c1e5d8c07baa8715090ac8cf8 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/vdtouv.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/vdtouv.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -308,11 +308,11 @@ public subroutine VDTOUV(XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ,
 
 
     
-    <p>Berechnung der scale winds aus Vorticity und Divergenz
- uebergibt man in XMN die Divergenz, so wird der divergente Anteil des
- Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so
- erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).
- Summiert man beide, erhaelt man den gesamten Scale wind</p>
+    <p>Calculates scale winds from vorticity and divergence.
+ If in XMN the divergence is passed, then the divergent part of the wind
+ (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the 
+ rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.
+ Summing both, one obtains the whole scale wind.</p>
     
 
     <h3>Arguments</h3>
@@ -561,8 +561,8 @@ public subroutine VDTOUV(XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ,
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/vduvsub.html b/Documentation/html/Documentation/Api/Fortran/proc/vduvsub.html
index fb079b6afb641e6a5b293ef9293fc1842f28cb96..33f746b192482d21b335b48c9cd624eb73c44c35 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/vduvsub.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/vduvsub.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -585,8 +585,8 @@ public subroutine VDUVSUB(J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAU
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/proc/writelatlon.html b/Documentation/html/Documentation/Api/Fortran/proc/writelatlon.html
index eef3192e6d102618352cf4e0039db2ee309a3c1d..77aec962ec8c42d0bc83ef885e678f5b897dca2d 100644
--- a/Documentation/html/Documentation/Api/Fortran/proc/writelatlon.html
+++ b/Documentation/html/Documentation/Api/Fortran/proc/writelatlon.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -640,8 +640,8 @@ public subroutine WRITELATLON(IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLE
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/program/calc_etadot.html b/Documentation/html/Documentation/Api/Fortran/program/calc_etadot.html
index 632b4b3833431277b510045cef58b940a93fb9fc..9e5a704dad9929ea4895c1cf7ca1c90a8894fbf4 100644
--- a/Documentation/html/Documentation/Api/Fortran/program/calc_etadot.html
+++ b/Documentation/html/Documentation/Api/Fortran/program/calc_etadot.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -126,7 +126,7 @@
      <li><i class="fa fa-list-ol"></i>
        <a data-toggle="tooltip"
     data-placement="bottom" data-html="true"
-    title="100.0% of total for programs.">381 statements</a>
+    title="100.0% of total for programs.">365 statements</a>
      </li> 
      
      
@@ -624,20 +624,21 @@
 </li>
 <li>04-06/2019: Petra Seibert, 
             beautify code and add FORD documentation</li>
+<li>06/2020: Petra Seibert, translate some comments into English
+            comment out writing of VERTICAL.EC</li>
 </ul>
 <hr>
-<p>#                                                              </p>
 <h2>Input required:</h2>
 <div class="codehilite"><pre><span></span> UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION
 
- 11    fort.11   T,U,V           regular lambda phi grid
- 12    fort.12   D               regular lambda phi grid   
+ 11    fort.11   T,U,V           regular lat-lon grid
+ 12    fort.12   D               regular lat-lon grid   
  13    fort.13   LNSP            spherical harmonics
  14    fort.14   SD,MSL,TCC,10U,                                
-                 10V,2T,2D       regular lambda phi grid     
+                 10V,2T,2D       regular lat-lon grid     
  16    fort.16   LSP,CP,SSHF,         
-                 SSR,EWSS,NSSS   regular lambda phi grid
- 17    fort.17   Q               regular lambda phi grid
+                 SSR,EWSS,NSSS   regular lat-lon grid
+ 17    fort.17   Q               regular lat-lon grid
 </pre></div>
 
 
@@ -647,7 +648,7 @@
 
 15    fort.15   `U,V,ETA,T,PS,                                  
                 `Q,SD,MSL,TCC,`                                  
-                `10U,10V,2T,2D,`  regular lambda phi grid         
+                `10U,10V,2T,2D,`  regular lat-lon grid         
                 `LSP,CP,SSHF,`                                   
                 `SSR,EWSS,NSSS`
 </pre></div>
@@ -655,31 +656,27 @@
 
 <hr>
 <p>ALLOCATE VARIABLES                       </p>
-<p>Initialisieren  Legendretransformation auf das LaT/LON Gitter  </p>
+<p>Initialise  Legendre transformation on the lat-lon grid</p>
 <p>Initialisation of fields for FFT and Legendre transformation
  to Gaussian grid and back to phase space
   read LNSP in SH
   read u,v in SH
-  Transformieren des Windes auf das Gaussgitter<br>
+  Transforming the wind to the Gaussian grid
   read DIV in SH
- Transformieren der horizontalen Divergenz auf das Gaussgitter<br>
- Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter<br>
- Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter<br>
- Berechnung von Omega auf dem Gaussgitter  </p>
+ Transform horizontal divergence to the Gaussian grid
+ Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid<br>
+ Calculation of the vertical velocity on the Gaussian grid<br>
+ Calculation of omega on the Gaussian grid  </p>
 <p>READING OF SURFACE PRESSURE                   </p>
 <p>READING OF U,V                     </p>
 <p>READING OF LNSP on grid               </p>
 <p>READING OF DIVERGENCE                      </p>
-<p>Initialisieren  Legendretransformation auf das LaT/LON Gitter
- Without Gaussian grid calculation Legendre Polynomials are calculated
- only for one latitude to save space</p>
-<p>CREATE FILE VERTICAL.EC NEEDED BY POP MODEL  </p>
+<p>Initialise Legendre transformation on the lat-lon grid.
+ Without Gaussian grid calculation, 
+ Legendre polynomials are calculated only for one latitude, to save space</p>
 <p>READING OF T                     </p>
 <p>READING OF SPECIFIC HUMIDITY               </p>
 <p>WRITE MODEL LEVEL DATA TO fort.15           </p>
-<div class="codehilite"><pre><span></span> Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)
- Now we are transforming back to the usual winds.
-</pre></div>
     
     <br>
     <div class="panel panel-default">
@@ -2880,8 +2877,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/search.html b/Documentation/html/Documentation/Api/Fortran/search.html
index b7d31718b9773c3d89f96e2016d5c4df306dbf20..59697a84ed22f6c9b309345b6f4c72d780daa82b 100644
--- a/Documentation/html/Documentation/Api/Fortran/search.html
+++ b/Documentation/html/Documentation/Api/Fortran/search.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="./favicon.png">
@@ -46,7 +46,7 @@ Search Results &ndash; Flex_extract: Calculation of etadot
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="./index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="./index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -137,8 +137,8 @@ $(document).ready(function() {
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/sourcefile/calc_etadot.f90.html b/Documentation/html/Documentation/Api/Fortran/sourcefile/calc_etadot.f90.html
index 3f601b389d4019095d08ceb1cd2c5f9f608de91b..8b0e26d543561e528ba61ebb3d38766f94dd1823 100644
--- a/Documentation/html/Documentation/Api/Fortran/sourcefile/calc_etadot.f90.html
+++ b/Documentation/html/Documentation/Api/Fortran/sourcefile/calc_etadot.f90.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -126,7 +126,7 @@
      <li><i class="fa fa-list-ol"></i>
        <a data-toggle="tooltip"
     data-placement="bottom" data-html="true"
-    title="31.0% of total for source files.">438 statements</a>
+    title="30.2% of total for source files.">422 statements</a>
      </li> 
      
      
@@ -466,783 +466,792 @@
 <a name="ln-35"></a><span class="c">!           handle GRIB edition 2 fields and T1279 resolution data     </span>
 <a name="ln-36"></a><span class="c">! - 04-06/2019: Petra Seibert, </span>
 <a name="ln-37"></a><span class="c">!            beautify code and add FORD documentation</span>
-<a name="ln-38"></a><span class="c">!                                                                </span>
-<a name="ln-39"></a><span class="c">!-----------------------------------------------------------------</span>
-<a name="ln-40"></a><span class="c">!  #                                                              </span>
-<a name="ln-41"></a><span class="c">!## Input required:</span>
+<a name="ln-38"></a><span class="c">! - 06/2020: Petra Seibert, translate some comments into English</span>
+<a name="ln-39"></a><span class="c">!            comment out writing of VERTICAL.EC</span>
+<a name="ln-40"></a><span class="c">!                                                                </span>
+<a name="ln-41"></a><span class="c">!-----------------------------------------------------------------</span>
 <a name="ln-42"></a><span class="c">!                                                                </span>
-<a name="ln-43"></a><span class="c">!     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION            </span>
-<a name="ln-44"></a><span class="c">!                                                                    </span>
-<a name="ln-45"></a><span class="c">!     11    fort.11   T,U,V           regular lambda phi grid</span>
-<a name="ln-46"></a><span class="c">!     12    fort.12   D               regular lambda phi grid   </span>
-<a name="ln-47"></a><span class="c">!     13    fort.13   LNSP            spherical harmonics</span>
-<a name="ln-48"></a><span class="c">!     14    fort.14   SD,MSL,TCC,10U,                                </span>
-<a name="ln-49"></a><span class="c">!                     10V,2T,2D       regular lambda phi grid     </span>
-<a name="ln-50"></a><span class="c">!     16    fort.16   LSP,CP,SSHF,         </span>
-<a name="ln-51"></a><span class="c">!                     SSR,EWSS,NSSS   regular lambda phi grid</span>
-<a name="ln-52"></a><span class="c">!     17    fort.17   Q               regular lambda phi grid</span>
-<a name="ln-53"></a><span class="c">!                                                                </span>
-<a name="ln-54"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-43"></a><span class="c">!## Input required:</span>
+<a name="ln-44"></a><span class="c">!                                                                </span>
+<a name="ln-45"></a><span class="c">!     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION            </span>
+<a name="ln-46"></a><span class="c">!                                                                    </span>
+<a name="ln-47"></a><span class="c">!     11    fort.11   T,U,V           regular lat-lon grid</span>
+<a name="ln-48"></a><span class="c">!     12    fort.12   D               regular lat-lon grid   </span>
+<a name="ln-49"></a><span class="c">!     13    fort.13   LNSP            spherical harmonics</span>
+<a name="ln-50"></a><span class="c">!     14    fort.14   SD,MSL,TCC,10U,                                </span>
+<a name="ln-51"></a><span class="c">!                     10V,2T,2D       regular lat-lon grid     </span>
+<a name="ln-52"></a><span class="c">!     16    fort.16   LSP,CP,SSHF,         </span>
+<a name="ln-53"></a><span class="c">!                     SSR,EWSS,NSSS   regular lat-lon grid</span>
+<a name="ln-54"></a><span class="c">!     17    fort.17   Q               regular lat-lon grid</span>
 <a name="ln-55"></a><span class="c">!                                                                </span>
-<a name="ln-56"></a><span class="c">!### Output produced:</span>
+<a name="ln-56"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-57"></a><span class="c">!                                                                </span>
-<a name="ln-58"></a><span class="c">!    UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION            </span>
-<a name="ln-59"></a><span class="c">!                                                                   </span>
-<a name="ln-60"></a><span class="c">!    15    fort.15   `U,V,ETA,T,PS,                                  </span>
-<a name="ln-61"></a><span class="c">!                    `Q,SD,MSL,TCC,`                                  </span>
-<a name="ln-62"></a><span class="c">!                    `10U,10V,2T,2D,`  regular lambda phi grid         </span>
-<a name="ln-63"></a><span class="c">!                    `LSP,CP,SSHF,`                                   </span>
-<a name="ln-64"></a><span class="c">!                    `SSR,EWSS,NSSS`                                  </span>
-<a name="ln-65"></a><span class="c">!                                                                </span>
-<a name="ln-66"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-67"></a>
-<a name="ln-68"></a>  <span class="k">USE </span><span class="n">PHTOGR</span>
-<a name="ln-69"></a>  <span class="k">USE </span><span class="n">GRTOPH</span>
-<a name="ln-70"></a>  <span class="k">USE </span><span class="n">FTRAFO</span>
-<a name="ln-71"></a>  <span class="k">USE </span><span class="n">RWGRIB2</span>
-<a name="ln-72"></a>  <span class="k">USE </span><span class="n">GRIB_API</span>
-<a name="ln-73"></a>
-<a name="ln-74"></a>  <span class="k">IMPLICIT NONE</span>
-<a name="ln-75"></a>
-<a name="ln-76"></a><span class="k">  </span><span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">LNPS</span>
-<a name="ln-77"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">Z</span>
-<a name="ln-78"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">T</span><span class="p">,</span> <span class="n">UV</span> <span class="p">,</span> <span class="n">UV2</span>
-<a name="ln-79"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">QA</span><span class="p">,</span><span class="n">OM</span><span class="p">,</span><span class="n">OMR</span>
-<a name="ln-80"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">DIV</span><span class="p">,</span> <span class="n">ETA</span><span class="p">,</span><span class="n">ETAR</span>
-<a name="ln-81"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">DPSDL</span><span class="p">,</span> <span class="n">DPSDM</span>
-<a name="ln-82"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">PS</span><span class="p">,</span><span class="n">DPSDT</span>
-<a name="ln-83"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">SURF</span><span class="p">,</span><span class="n">FLUX</span><span class="p">,</span><span class="n">OROLSM</span>
-<a name="ln-84"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">WSAVE</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">SINL</span><span class="p">,</span><span class="n">COSL</span><span class="p">,</span><span class="n">WSAVE2</span>
-<a name="ln-85"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">BREITE</span><span class="p">,</span> <span class="n">GBREITE</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span> <span class="n">BK</span><span class="p">,</span><span class="n">pv</span>
-<a name="ln-86"></a>
-<a name="ln-87"></a><span class="c">! Arrays for Gaussian grid calculations</span>
-<a name="ln-88"></a>  <span class="kt">REAL</span>  <span class="kd">::</span> <span class="n">X1</span><span class="p">,</span><span class="n">X2</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">,</span><span class="n">LAM</span>
-<a name="ln-89"></a>  <span class="kt">REAL</span><span class="p">,</span><span class="k">ALLOCATABLE</span> <span class="kd">::</span> <span class="n">CUA</span><span class="p">(:,:,:),</span><span class="n">CVA</span><span class="p">(:,:,:)</span>
-<a name="ln-90"></a>
-<a name="ln-91"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">P</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">P2</span>
-<a name="ln-92"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">XMN</span><span class="p">,</span><span class="n">HILFUV</span>
-<a name="ln-93"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">LNPMN</span><span class="p">,</span><span class="n">LNPMN2</span><span class="p">,</span><span class="n">LNPMN3</span>
-<a name="ln-94"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">WEIGHT</span>
-<a name="ln-95"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">UGVG</span>
-<a name="ln-96"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">DG</span><span class="p">,</span> <span class="n">ETAG</span>
-<a name="ln-97"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">GWSAVE</span>
-<a name="ln-98"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">PSG</span><span class="p">,</span><span class="n">HILF</span>
-<a name="ln-99"></a>
-<a name="ln-100"></a><span class="c">! end arrays for Gaussian grid calculations</span>
-<a name="ln-101"></a>
-<a name="ln-102"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">MLAT</span><span class="p">,</span><span class="n">MPSURF</span><span class="p">,</span><span class="n">MPFLUX</span><span class="p">,</span><span class="n">MPORO</span><span class="p">,</span><span class="n">MPAR</span>
-<a name="ln-103"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">ALLOCATABLE</span> <span class="kd">::</span> <span class="n">GIFAX</span><span class="p">(:,:)</span>
+<a name="ln-58"></a><span class="c">!### Output produced:</span>
+<a name="ln-59"></a><span class="c">!                                                                </span>
+<a name="ln-60"></a><span class="c">!    UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION            </span>
+<a name="ln-61"></a><span class="c">!                                                                   </span>
+<a name="ln-62"></a><span class="c">!    15    fort.15   `U,V,ETA,T,PS,                                  </span>
+<a name="ln-63"></a><span class="c">!                    `Q,SD,MSL,TCC,`                                  </span>
+<a name="ln-64"></a><span class="c">!                    `10U,10V,2T,2D,`  regular lat-lon grid         </span>
+<a name="ln-65"></a><span class="c">!                    `LSP,CP,SSHF,`                                   </span>
+<a name="ln-66"></a><span class="c">!                    `SSR,EWSS,NSSS`                                  </span>
+<a name="ln-67"></a><span class="c">!                                                                </span>
+<a name="ln-68"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-69"></a>
+<a name="ln-70"></a><span class="c">! Original version: </span>
+<a name="ln-71"></a><span class="c">! Prepares input data for POP model meteorological preprocessor</span>
+<a name="ln-72"></a>
+<a name="ln-73"></a>  <span class="k">USE </span><span class="n">PHTOGR</span>
+<a name="ln-74"></a>  <span class="k">USE </span><span class="n">GRTOPH</span>
+<a name="ln-75"></a>  <span class="k">USE </span><span class="n">FTRAFO</span>
+<a name="ln-76"></a>  <span class="k">USE </span><span class="n">RWGRIB2</span>
+<a name="ln-77"></a>  <span class="k">USE </span><span class="n">GRIB_API</span>
+<a name="ln-78"></a>
+<a name="ln-79"></a>  <span class="k">IMPLICIT NONE</span>
+<a name="ln-80"></a>
+<a name="ln-81"></a><span class="k">  </span><span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">LNPS</span>
+<a name="ln-82"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">Z</span>
+<a name="ln-83"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">T</span><span class="p">,</span> <span class="n">UV</span> <span class="p">,</span> <span class="n">UV2</span>
+<a name="ln-84"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">QA</span><span class="p">,</span><span class="n">OM</span><span class="p">,</span><span class="n">OMR</span>
+<a name="ln-85"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">DIV</span><span class="p">,</span> <span class="n">ETA</span><span class="p">,</span><span class="n">ETAR</span>
+<a name="ln-86"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">DPSDL</span><span class="p">,</span> <span class="n">DPSDM</span>
+<a name="ln-87"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">PS</span><span class="p">,</span><span class="n">DPSDT</span>
+<a name="ln-88"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:,:)</span> <span class="kd">::</span> <span class="n">SURF</span><span class="p">,</span><span class="n">FLUX</span><span class="p">,</span><span class="n">OROLSM</span>
+<a name="ln-89"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">WSAVE</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">SINL</span><span class="p">,</span><span class="n">COSL</span><span class="p">,</span><span class="n">WSAVE2</span>
+<a name="ln-90"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">BREITE</span><span class="p">,</span> <span class="n">GBREITE</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span> <span class="n">BK</span><span class="p">,</span><span class="n">pv</span>
+<a name="ln-91"></a>
+<a name="ln-92"></a><span class="c">! Arrays for Gaussian grid calculations</span>
+<a name="ln-93"></a>  <span class="kt">REAL</span>  <span class="kd">::</span> <span class="n">X1</span><span class="p">,</span><span class="n">X2</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">,</span><span class="n">LAM</span>
+<a name="ln-94"></a>  <span class="kt">REAL</span><span class="p">,</span><span class="k">ALLOCATABLE</span> <span class="kd">::</span> <span class="n">CUA</span><span class="p">(:,:,:),</span><span class="n">CVA</span><span class="p">(:,:,:)</span>
+<a name="ln-95"></a>
+<a name="ln-96"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">P</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">P2</span>
+<a name="ln-97"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">XMN</span><span class="p">,</span><span class="n">HILFUV</span>
+<a name="ln-98"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">LNPMN</span><span class="p">,</span><span class="n">LNPMN2</span><span class="p">,</span><span class="n">LNPMN3</span>
+<a name="ln-99"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">WEIGHT</span>
+<a name="ln-100"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">UGVG</span>
+<a name="ln-101"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">DG</span><span class="p">,</span> <span class="n">ETAG</span>
+<a name="ln-102"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:,:)</span> <span class="kd">::</span> <span class="n">GWSAVE</span>
+<a name="ln-103"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">PSG</span><span class="p">,</span><span class="n">HILF</span>
 <a name="ln-104"></a>
-<a name="ln-105"></a>  <span class="kt">REAL </span><span class="n">PI</span><span class="p">,</span><span class="n">COSB</span><span class="p">,</span><span class="n">DAK</span><span class="p">,</span><span class="n">DBK</span><span class="p">,</span><span class="n">P00</span>
-<a name="ln-106"></a>  <span class="kt">REAL </span><span class="n">URLAR8</span><span class="p">,</span><span class="n">JMIN1</span><span class="p">,</span><span class="n">LLLAR8</span><span class="p">,</span><span class="n">MAXBMIN1</span><span class="p">,</span><span class="n">PIR8</span><span class="p">,</span><span class="n">DCOSB</span>
-<a name="ln-107"></a>
-<a name="ln-108"></a>  <span class="kt">INTEGER </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">IERR</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">LTEST</span><span class="p">,</span><span class="n">MK</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span>
-<a name="ln-109"></a>  <span class="kt">INTEGER </span><span class="n">MFLUX</span><span class="p">,</span><span class="n">MSURF</span><span class="p">,</span><span class="n">MORO</span>
-<a name="ln-110"></a>  <span class="kt">INTEGER </span><span class="n">LUNIT</span><span class="p">,</span><span class="n">LUNIT2</span>
-<a name="ln-111"></a>
-<a name="ln-112"></a>  <span class="kt">INTEGER </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">LEVOUT</span><span class="p">,</span><span class="n">LEVMIN</span><span class="p">,</span><span class="n">LEVMAX</span>
-<a name="ln-113"></a>  <span class="kt">INTEGER </span><span class="n">MOMEGA</span><span class="p">,</span><span class="n">MOMEGADIFF</span><span class="p">,</span><span class="n">MGAUSS</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">,</span> <span class="n">MNAUF</span><span class="p">,</span><span class="n">META</span><span class="p">,</span><span class="n">METADIFF</span>
-<a name="ln-114"></a>  <span class="kt">INTEGER </span><span class="n">MDPDETA</span><span class="p">,</span><span class="n">METAPAR</span>
-<a name="ln-115"></a>  <span class="kt">REAL </span><span class="n">RLO0</span><span class="p">,</span> <span class="n">RLO1</span><span class="p">,</span> <span class="n">RLA0</span><span class="p">,</span> <span class="n">RLA1</span>
-<a name="ln-116"></a>  <span class="kt">CHARACTER</span><span class="o">*</span><span class="mi">300</span> <span class="n">MLEVELIST</span>
-<a name="ln-117"></a>
-<a name="ln-118"></a>  <span class="kt">INTEGER </span><span class="n">MAUF</span><span class="p">,</span> <span class="n">MANF</span><span class="p">,</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-119"></a>
-<a name="ln-120"></a>  <span class="kt">INTEGER </span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">iret</span><span class="p">,</span><span class="n">ogrib</span>
-<a name="ln-121"></a>
-<a name="ln-122"></a>  <span class="kt">CHARACTER</span><span class="o">*</span><span class="mi">80</span> <span class="n">FILENAME</span>
-<a name="ln-123"></a>
-<a name="ln-124"></a>  <span class="k">NAMELIST</span> <span class="o">/</span><span class="n">NAMGEN</span><span class="o">/</span> <span class="p">&amp;</span>
-<a name="ln-125"></a>    <span class="n">MAXL</span><span class="p">,</span> <span class="n">MAXB</span><span class="p">,</span> <span class="p">&amp;</span>
-<a name="ln-126"></a>    <span class="n">MLEVEL</span><span class="p">,</span><span class="n">MLEVELIST</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">METAPAR</span><span class="p">,</span> <span class="p">&amp;</span>
-<a name="ln-127"></a>    <span class="n">RLO0</span><span class="p">,</span> <span class="n">RLO1</span><span class="p">,</span> <span class="n">RLA0</span><span class="p">,</span> <span class="n">RLA1</span><span class="p">,</span> <span class="p">&amp;</span>
-<a name="ln-128"></a>    <span class="n">MOMEGA</span><span class="p">,</span><span class="n">MOMEGADIFF</span><span class="p">,</span><span class="n">MGAUSS</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">,</span><span class="n">META</span><span class="p">,</span><span class="n">METADIFF</span><span class="p">,&amp;</span>
-<a name="ln-129"></a>    <span class="n">MDPDETA</span>
-<a name="ln-130"></a>
-<a name="ln-131"></a>  <span class="n">LTEST</span><span class="o">=</span><span class="mi">1</span>
-<a name="ln-132"></a>
-<a name="ln-133"></a>  <span class="k">CALL </span><span class="n">POSNAM</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="s1">&#39;NAMGEN&#39;</span><span class="p">)</span>
-<a name="ln-134"></a>  <span class="k">READ</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="n">NAMGEN</span><span class="p">)</span>
+<a name="ln-105"></a><span class="c">! end arrays for Gaussian grid calculations</span>
+<a name="ln-106"></a>
+<a name="ln-107"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">ALLOCATABLE</span><span class="p">,</span> <span class="k">DIMENSION</span> <span class="p">(:)</span> <span class="kd">::</span> <span class="n">MLAT</span><span class="p">,</span><span class="n">MPSURF</span><span class="p">,</span><span class="n">MPFLUX</span><span class="p">,</span><span class="n">MPORO</span><span class="p">,</span><span class="n">MPAR</span>
+<a name="ln-108"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">ALLOCATABLE</span> <span class="kd">::</span> <span class="n">GIFAX</span><span class="p">(:,:)</span>
+<a name="ln-109"></a>
+<a name="ln-110"></a>  <span class="kt">REAL </span><span class="n">PI</span><span class="p">,</span><span class="n">COSB</span><span class="p">,</span><span class="n">DAK</span><span class="p">,</span><span class="n">DBK</span><span class="p">,</span><span class="n">P00</span>
+<a name="ln-111"></a>  <span class="kt">REAL </span><span class="n">URLAR8</span><span class="p">,</span><span class="n">JMIN1</span><span class="p">,</span><span class="n">LLLAR8</span><span class="p">,</span><span class="n">MAXBMIN1</span><span class="p">,</span><span class="n">PIR8</span><span class="p">,</span><span class="n">DCOSB</span>
+<a name="ln-112"></a>
+<a name="ln-113"></a>  <span class="kt">INTEGER </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">IERR</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">LTEST</span><span class="p">,</span><span class="n">MK</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span>
+<a name="ln-114"></a>  <span class="kt">INTEGER </span><span class="n">MFLUX</span><span class="p">,</span><span class="n">MSURF</span><span class="p">,</span><span class="n">MORO</span>
+<a name="ln-115"></a>  <span class="kt">INTEGER </span><span class="n">LUNIT</span><span class="p">,</span><span class="n">LUNIT2</span>
+<a name="ln-116"></a>
+<a name="ln-117"></a>  <span class="kt">INTEGER </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">LEVOUT</span><span class="p">,</span><span class="n">LEVMIN</span><span class="p">,</span><span class="n">LEVMAX</span>
+<a name="ln-118"></a>  <span class="kt">INTEGER </span><span class="n">MOMEGA</span><span class="p">,</span><span class="n">MOMEGADIFF</span><span class="p">,</span><span class="n">MGAUSS</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">,</span> <span class="n">MNAUF</span><span class="p">,</span><span class="n">META</span><span class="p">,</span><span class="n">METADIFF</span>
+<a name="ln-119"></a>  <span class="kt">INTEGER </span><span class="n">MDPDETA</span><span class="p">,</span><span class="n">METAPAR</span>
+<a name="ln-120"></a>  <span class="kt">REAL </span><span class="n">RLO0</span><span class="p">,</span> <span class="n">RLO1</span><span class="p">,</span> <span class="n">RLA0</span><span class="p">,</span> <span class="n">RLA1</span>
+<a name="ln-121"></a>  <span class="kt">CHARACTER</span><span class="o">*</span><span class="mi">300</span> <span class="n">MLEVELIST</span>
+<a name="ln-122"></a>
+<a name="ln-123"></a>  <span class="kt">INTEGER </span><span class="n">MAUF</span><span class="p">,</span> <span class="n">MANF</span><span class="p">,</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<a name="ln-124"></a>
+<a name="ln-125"></a>  <span class="kt">INTEGER </span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">iret</span><span class="p">,</span><span class="n">ogrib</span>
+<a name="ln-126"></a>
+<a name="ln-127"></a>  <span class="kt">CHARACTER</span><span class="o">*</span><span class="mi">80</span> <span class="n">FILENAME</span>
+<a name="ln-128"></a>
+<a name="ln-129"></a>  <span class="k">NAMELIST</span> <span class="o">/</span><span class="n">NAMGEN</span><span class="o">/</span> <span class="p">&amp;</span>
+<a name="ln-130"></a>    <span class="n">MAXL</span><span class="p">,</span> <span class="n">MAXB</span><span class="p">,</span> <span class="p">&amp;</span>
+<a name="ln-131"></a>    <span class="n">MLEVEL</span><span class="p">,</span><span class="n">MLEVELIST</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">METAPAR</span><span class="p">,</span> <span class="p">&amp;</span>
+<a name="ln-132"></a>    <span class="n">RLO0</span><span class="p">,</span> <span class="n">RLO1</span><span class="p">,</span> <span class="n">RLA0</span><span class="p">,</span> <span class="n">RLA1</span><span class="p">,</span> <span class="p">&amp;</span>
+<a name="ln-133"></a>    <span class="n">MOMEGA</span><span class="p">,</span><span class="n">MOMEGADIFF</span><span class="p">,</span><span class="n">MGAUSS</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">,</span><span class="n">META</span><span class="p">,</span><span class="n">METADIFF</span><span class="p">,&amp;</span>
+<a name="ln-134"></a>    <span class="n">MDPDETA</span>
 <a name="ln-135"></a>
-<a name="ln-136"></a>  <span class="n">MAUF</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="mi">36</span><span class="mf">0.</span><span class="o">*</span><span class="p">(</span><span class="kt">REAL</span><span class="p">(</span><span class="n">MAXL</span><span class="p">)</span><span class="o">-</span><span class="mf">1.</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">RLO1</span><span class="o">-</span><span class="n">RLO0</span><span class="p">)</span><span class="o">+</span><span class="mf">0.0001</span><span class="p">)</span>
-<a name="ln-137"></a><span class="c">!      PRINT*, MAUF</span>
-<a name="ln-138"></a>
-<a name="ln-139"></a>  <span class="n">MANF</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="kt">REAL</span><span class="p">(</span><span class="n">MAUF</span><span class="p">)</span><span class="o">/</span><span class="mi">36</span><span class="mf">0.</span><span class="o">*</span><span class="p">(</span><span class="mi">36</span><span class="mf">0.</span><span class="o">+</span><span class="n">RLO0</span><span class="p">)</span><span class="o">+</span><span class="mf">1.0001</span><span class="p">)</span>
-<a name="ln-140"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span> <span class="p">.</span><span class="n">gt</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="n">MANF</span><span class="o">=</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span>
-<a name="ln-141"></a>
-<a name="ln-142"></a>
-<a name="ln-143"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-144"></a><span class="c">!! ALLOCATE VARIABLES                       </span>
-<a name="ln-145"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-136"></a>  <span class="n">LTEST</span><span class="o">=</span><span class="mi">1</span>
+<a name="ln-137"></a>
+<a name="ln-138"></a>  <span class="k">CALL </span><span class="n">POSNAM</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="s1">&#39;NAMGEN&#39;</span><span class="p">)</span>
+<a name="ln-139"></a>  <span class="k">READ</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="n">NAMGEN</span><span class="p">)</span>
+<a name="ln-140"></a>
+<a name="ln-141"></a>  <span class="n">MAUF</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="mi">36</span><span class="mf">0.</span><span class="o">*</span><span class="p">(</span><span class="kt">REAL</span><span class="p">(</span><span class="n">MAXL</span><span class="p">)</span><span class="o">-</span><span class="mf">1.</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">RLO1</span><span class="o">-</span><span class="n">RLO0</span><span class="p">)</span><span class="o">+</span><span class="mf">0.0001</span><span class="p">)</span>
+<a name="ln-142"></a><span class="c">!      PRINT*, MAUF</span>
+<a name="ln-143"></a>
+<a name="ln-144"></a>  <span class="n">MANF</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="kt">REAL</span><span class="p">(</span><span class="n">MAUF</span><span class="p">)</span><span class="o">/</span><span class="mi">36</span><span class="mf">0.</span><span class="o">*</span><span class="p">(</span><span class="mi">36</span><span class="mf">0.</span><span class="o">+</span><span class="n">RLO0</span><span class="p">)</span><span class="o">+</span><span class="mf">1.0001</span><span class="p">)</span>
+<a name="ln-145"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span> <span class="p">.</span><span class="n">gt</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="n">MANF</span><span class="o">=</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span>
 <a name="ln-146"></a>
-<a name="ln-147"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">LNPS</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="mi">1</span><span class="p">))</span>
-<a name="ln-148"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-149"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">OM</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>
-<a name="ln-150"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">ETA</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>
-<a name="ln-151"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">PS</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="mi">1</span><span class="p">),</span><span class="n">DPSDT</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="mi">1</span><span class="p">))</span>
-<a name="ln-152"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">),</span><span class="n">WSAVE2</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">))</span>
-<a name="ln-153"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">AK</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">BK</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">PV</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-154"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">MPAR</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-155"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">COSL</span><span class="p">(</span><span class="n">MAXL</span><span class="p">),</span><span class="n">SINL</span><span class="p">(</span><span class="n">MAXL</span><span class="p">))</span>
-<a name="ln-156"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">CUA</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">CVA</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">))</span>
-<a name="ln-157"></a>
-<a name="ln-158"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-159"></a><span class="c">! GAUSS STUFF                                                </span>
-<a name="ln-160"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-161"></a>
-<a name="ln-162"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MGAUSS</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-163"></a><span class="k">    </span><span class="n">LUNIT</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-164"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.18&#39;</span>
-<a name="ln-165"></a>
-<a name="ln-166"></a>    <span class="k">CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT</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>
-<a name="ln-167"></a>
-<a name="ln-168"></a>    <span class="k">CALL </span><span class="n">GRIB_NEW_FROM_FILE</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">IRET</span><span class="p">)</span>
-<a name="ln-169"></a>
-<a name="ln-170"></a><span class="c">! we can close the file</span>
-<a name="ln-171"></a>    <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">)</span>
-<a name="ln-172"></a><span class="c">!      call grib_get(igrib(1),&#39;gridType&#39;, j)</span>
-<a name="ln-173"></a>
-<a name="ln-174"></a>    <span class="n">NGJ</span><span class="o">=</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-175"></a>
-<a name="ln-176"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NGJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NGJ</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-177"></a>    <span class="k">ALLOCATE</span><span class="p">(</span><span class="n">GIFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NGJ</span><span class="p">))</span>
-<a name="ln-178"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">GBREITE</span><span class="p">(</span><span class="n">NGJ</span><span class="p">),</span><span class="n">WEIGHT</span><span class="p">(</span><span class="n">NGJ</span><span class="p">))</span>
-<a name="ln-179"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">MLAT</span><span class="p">(</span><span class="n">NGJ</span><span class="p">))</span>
-<a name="ln-180"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">P</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NGJ</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-181"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">PP</span><span class="p">(</span><span class="n">NGJ</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-182"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">))</span>
-<a name="ln-183"></a>
-<a name="ln-184"></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="mi">1</span><span class="p">),</span><span class="s1">&#39;numberOfPointsAlongAMeridian&#39;</span><span class="p">,</span> <span class="n">NGJ</span><span class="p">)</span>
-<a name="ln-185"></a>
-<a name="ln-186"></a><span class="c">!   get as a integer</span>
-<a name="ln-187"></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="mi">1</span><span class="p">),</span><span class="s1">&#39;pl&#39;</span><span class="p">,</span> <span class="n">MLAT</span><span class="p">)</span>
+<a name="ln-147"></a>
+<a name="ln-148"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-149"></a><span class="c">!! ALLOCATE VARIABLES                       </span>
+<a name="ln-150"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-151"></a>
+<a name="ln-152"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">LNPS</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="mi">1</span><span class="p">))</span>
+<a name="ln-153"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-154"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">OM</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>
+<a name="ln-155"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">ETA</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>
+<a name="ln-156"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">PS</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="mi">1</span><span class="p">),</span><span class="n">DPSDT</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="mi">1</span><span class="p">))</span>
+<a name="ln-157"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">),</span><span class="n">WSAVE2</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">))</span>
+<a name="ln-158"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">AK</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">BK</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">PV</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-159"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">MPAR</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-160"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">COSL</span><span class="p">(</span><span class="n">MAXL</span><span class="p">),</span><span class="n">SINL</span><span class="p">(</span><span class="n">MAXL</span><span class="p">))</span>
+<a name="ln-161"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">CUA</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">CVA</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">))</span>
+<a name="ln-162"></a>
+<a name="ln-163"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-164"></a><span class="c">! GAUSS STUFF                                                </span>
+<a name="ln-165"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-166"></a>
+<a name="ln-167"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MGAUSS</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-168"></a><span class="k">    </span><span class="n">LUNIT</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-169"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.18&#39;</span>
+<a name="ln-170"></a>
+<a name="ln-171"></a>    <span class="k">CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT</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>
+<a name="ln-172"></a>
+<a name="ln-173"></a>    <span class="k">CALL </span><span class="n">GRIB_NEW_FROM_FILE</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">IRET</span><span class="p">)</span>
+<a name="ln-174"></a>
+<a name="ln-175"></a><span class="c">! we can close the file</span>
+<a name="ln-176"></a>    <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">)</span>
+<a name="ln-177"></a><span class="c">!      call grib_get(igrib(1),&#39;gridType&#39;, j)</span>
+<a name="ln-178"></a>
+<a name="ln-179"></a>    <span class="n">NGJ</span><span class="o">=</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-180"></a>
+<a name="ln-181"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NGJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NGJ</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-182"></a>    <span class="k">ALLOCATE</span><span class="p">(</span><span class="n">GIFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NGJ</span><span class="p">))</span>
+<a name="ln-183"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">GBREITE</span><span class="p">(</span><span class="n">NGJ</span><span class="p">),</span><span class="n">WEIGHT</span><span class="p">(</span><span class="n">NGJ</span><span class="p">))</span>
+<a name="ln-184"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">MLAT</span><span class="p">(</span><span class="n">NGJ</span><span class="p">))</span>
+<a name="ln-185"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">P</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NGJ</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-186"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">PP</span><span class="p">(</span><span class="n">NGJ</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-187"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">))</span>
 <a name="ln-188"></a>
-<a name="ln-189"></a>    <span class="n">NGI</span><span class="o">=</span><span class="nb">SUM</span><span class="p">(</span><span class="n">MLAT</span><span class="p">)</span>
+<a name="ln-189"></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="mi">1</span><span class="p">),</span><span class="s1">&#39;numberOfPointsAlongAMeridian&#39;</span><span class="p">,</span> <span class="n">NGJ</span><span class="p">)</span>
 <a name="ln-190"></a>
-<a name="ln-191"></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="mi">1</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>
-<a name="ln-192"></a>
-<a name="ln-193"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MK</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</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>
-<a name="ln-194"></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;FATAL: Number of model levels&#39;</span><span class="p">,</span><span class="n">mk</span><span class="p">,</span> <span class="p">&amp;</span>
-<a name="ln-195"></a>        <span class="s1">&#39; does not agree with&#39;</span><span class="p">,</span> <span class="n">MLEVEL</span><span class="p">,</span><span class="s1">&#39; in namelist&#39;</span>
-<a name="ln-196"></a>      <span class="k">STOP</span>
-<a name="ln-197"></a><span class="k">    END IF</span>
-<a name="ln-198"></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="mi">1</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>
-<a name="ln-199"></a>    <span class="n">AK</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">MLEVEL</span><span class="p">)</span>
-<a name="ln-200"></a>    <span class="n">BK</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">MLEVEL</span><span class="p">:</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-201"></a>
-<a name="ln-202"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">LNPMN</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>
-<a name="ln-203"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">LNPMN2</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>
-<a name="ln-204"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">UGVG</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">HILFUV</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span>
-<a name="ln-205"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">DPSDL</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="n">DPSDM</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
-<a name="ln-206"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">PSG</span><span class="p">(</span><span class="n">NGI</span><span class="p">),</span><span class="n">HILF</span><span class="p">(</span><span class="n">NGI</span><span class="p">))</span>
-<a name="ln-207"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">UV</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">))</span>
-<a name="ln-208"></a><span class="c">!      ALLOCATE (UV2(MAXL, MAXB, 2*MLEVEL))</span>
-<a name="ln-209"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">XMN</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">))</span>
-<a name="ln-210"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">DG</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">ETAG</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">))</span>
-<a name="ln-211"></a>
-<a name="ln-212"></a><span class="c">!! Initialisieren  Legendretransformation auf das LaT/LON Gitter  </span>
-<a name="ln-213"></a>
-<a name="ln-214"></a>    <span class="n">PI</span><span class="o">=</span><span class="nb">ACOS</span><span class="p">(</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span>
-<a name="ln-215"></a>
-<a name="ln-216"></a><span class="c">!$OMP PARALLEL DO</span>
-<a name="ln-217"></a>    <span class="k">DO </span><span class="mi">20</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span>
-<a name="ln-218"></a>      <span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="nb">SIN</span><span class="p">((</span><span class="n">RLA1</span><span class="o">-</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">RLA1</span><span class="o">-</span><span class="n">RLA0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span><span class="o">*</span> <span class="n">PI</span><span class="o">/</span><span class="mi">18</span><span class="mf">0.D0</span><span class="p">)</span>
-<a name="ln-219"></a>      <span class="k">CALL </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">))</span>
-<a name="ln-220"></a><span class="mi">20</span>  <span class="k">CONTINUE</span>
-<a name="ln-221"></a><span class="c">!$OMP END PARALLEL DO</span>
-<a name="ln-222"></a>
-<a name="ln-223"></a><span class="c">! Avoid possible Pole problem</span>
-<a name="ln-224"></a><span class="c">!      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0)</span>
-<a name="ln-225"></a><span class="c">!      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0)</span>
-<a name="ln-226"></a>
-<a name="ln-227"></a><span class="c">!* Initialisation of fields for FFT and Legendre transformation</span>
-<a name="ln-228"></a><span class="c">! to Gaussian grid and back to phase space</span>
-<a name="ln-229"></a>    <span class="n">X1</span><span class="o">=-</span><span class="mf">1.D0</span>
-<a name="ln-230"></a>    <span class="n">X2</span><span class="o">=</span><span class="mf">1.D0</span>
-<a name="ln-231"></a>    <span class="k">CALL </span><span class="n">GAULEG</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span><span class="n">X2</span><span class="p">,</span><span class="n">GBREITE</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">NGJ</span><span class="p">)</span>
-<a name="ln-232"></a>
-<a name="ln-233"></a><span class="c">!$OMP PARALLEL DO PRIVATE(M)</span>
-<a name="ln-234"></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">NGJ</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-235"></a>      <span class="k">CALL </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GBREITE</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">P</span><span class="p">(:,</span><span class="n">J</span><span class="p">))</span>
-<a name="ln-236"></a>      <span class="k">DO </span><span class="n">M</span><span class="o">=</span><span class="mi">0</span><span class="p">,(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-237"></a>        <span class="n">PP</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">M</span><span class="p">)</span><span class="o">=</span><span class="n">P</span><span class="p">(</span><span class="n">M</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-238"></a>      <span class="k">END DO</span>
-<a name="ln-239"></a><span class="k">    END DO</span>
-<a name="ln-240"></a><span class="c">!$OMP END PARALLEL DO</span>
-<a name="ln-241"></a>
-<a name="ln-242"></a><span class="c">!       MPAR(1)=152</span>
-<a name="ln-243"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.12&#39;</span> 
-<a name="ln-244"></a><span class="c">!!  read LNSP in SH</span>
-<a name="ln-245"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">152</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
-<a name="ln-246"></a>    <span class="k">CALL </span><span class="n">SET99</span><span class="p">(</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">mauf</span><span class="p">)</span>
-<a name="ln-247"></a>    <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">PS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">1</span><span class="p">)</span>
-<a name="ln-248"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="nb">EXP</span><span class="p">(</span><span class="n">PS</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-249"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-250"></a>
-<a name="ln-251"></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">NGJ</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-252"></a>      <span class="k">CALL </span><span class="n">SET99</span><span class="p">(</span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">GIFAX</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span>
-<a name="ln-253"></a>    <span class="k">END DO</span>
-<a name="ln-254"></a><span class="k">    CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-255"></a>    <span class="n">PSG</span><span class="o">=</span><span class="n">HILF</span>
-<a name="ln-256"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">LNPMN2</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-257"></a>    <span class="k">CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">LNPMN2</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-258"></a>
-<a name="ln-259"></a>
-<a name="ln-260"></a>    <span class="n">HILF</span><span class="o">=</span><span class="nb">exp</span><span class="p">(</span><span class="n">PSG</span><span class="p">)</span><span class="o">-</span><span class="nb">exp</span><span class="p">(</span><span class="n">HILF</span><span class="p">)</span>
-<a name="ln-261"></a>
-<a name="ln-262"></a>    <span class="k">CALL </span><span class="n">STATIS</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-263"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ratio of PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-191"></a><span class="c">!   get as a integer</span>
+<a name="ln-192"></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="mi">1</span><span class="p">),</span><span class="s1">&#39;pl&#39;</span><span class="p">,</span> <span class="n">MLAT</span><span class="p">)</span>
+<a name="ln-193"></a>
+<a name="ln-194"></a>    <span class="n">NGI</span><span class="o">=</span><span class="nb">SUM</span><span class="p">(</span><span class="n">MLAT</span><span class="p">)</span>
+<a name="ln-195"></a>
+<a name="ln-196"></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="mi">1</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>
+<a name="ln-197"></a>
+<a name="ln-198"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MK</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</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>
+<a name="ln-199"></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;FATAL: Number of model levels&#39;</span><span class="p">,</span><span class="n">mk</span><span class="p">,</span> <span class="p">&amp;</span>
+<a name="ln-200"></a>        <span class="s1">&#39; does not agree with&#39;</span><span class="p">,</span> <span class="n">MLEVEL</span><span class="p">,</span><span class="s1">&#39; in namelist&#39;</span>
+<a name="ln-201"></a>      <span class="k">STOP</span>
+<a name="ln-202"></a><span class="k">    END IF</span>
+<a name="ln-203"></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="mi">1</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>
+<a name="ln-204"></a>    <span class="n">AK</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">MLEVEL</span><span class="p">)</span>
+<a name="ln-205"></a>    <span class="n">BK</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">MLEVEL</span><span class="p">:</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-206"></a>
+<a name="ln-207"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">LNPMN</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>
+<a name="ln-208"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">LNPMN2</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>
+<a name="ln-209"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">UGVG</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span> <span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">HILFUV</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span>
+<a name="ln-210"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">DPSDL</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="n">DPSDM</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
+<a name="ln-211"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">PSG</span><span class="p">(</span><span class="n">NGI</span><span class="p">),</span><span class="n">HILF</span><span class="p">(</span><span class="n">NGI</span><span class="p">))</span>
+<a name="ln-212"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">UV</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">))</span>
+<a name="ln-213"></a><span class="c">!      ALLOCATE (UV2(MAXL, MAXB, 2*MLEVEL))</span>
+<a name="ln-214"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">XMN</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">))</span>
+<a name="ln-215"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">DG</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">ETAG</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">))</span>
+<a name="ln-216"></a>
+<a name="ln-217"></a><span class="c">!! Initialise  Legendre transformation on the lat-lon grid</span>
+<a name="ln-218"></a>
+<a name="ln-219"></a>    <span class="n">PI</span><span class="o">=</span><span class="nb">ACOS</span><span class="p">(</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span>
+<a name="ln-220"></a>
+<a name="ln-221"></a><span class="c">!$OMP PARALLEL DO</span>
+<a name="ln-222"></a>    <span class="k">DO </span><span class="mi">20</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span>
+<a name="ln-223"></a>      <span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="nb">SIN</span><span class="p">((</span><span class="n">RLA1</span><span class="o">-</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">RLA1</span><span class="o">-</span><span class="n">RLA0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span><span class="o">*</span> <span class="n">PI</span><span class="o">/</span><span class="mi">18</span><span class="mf">0.D0</span><span class="p">)</span>
+<a name="ln-224"></a>      <span class="k">CALL </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">))</span>
+<a name="ln-225"></a><span class="mi">20</span>  <span class="k">CONTINUE</span>
+<a name="ln-226"></a><span class="c">!$OMP END PARALLEL DO</span>
+<a name="ln-227"></a>
+<a name="ln-228"></a><span class="c">! Avoid possible Pole problem</span>
+<a name="ln-229"></a><span class="c">!      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0)</span>
+<a name="ln-230"></a><span class="c">!      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0)</span>
+<a name="ln-231"></a>
+<a name="ln-232"></a><span class="c">!* Initialisation of fields for FFT and Legendre transformation</span>
+<a name="ln-233"></a><span class="c">! to Gaussian grid and back to phase space</span>
+<a name="ln-234"></a>    <span class="n">X1</span><span class="o">=-</span><span class="mf">1.D0</span>
+<a name="ln-235"></a>    <span class="n">X2</span><span class="o">=</span><span class="mf">1.D0</span>
+<a name="ln-236"></a>    <span class="k">CALL </span><span class="n">GAULEG</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span><span class="n">X2</span><span class="p">,</span><span class="n">GBREITE</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">NGJ</span><span class="p">)</span>
+<a name="ln-237"></a>
+<a name="ln-238"></a><span class="c">!$OMP PARALLEL DO PRIVATE(M)</span>
+<a name="ln-239"></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">NGJ</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-240"></a>      <span class="k">CALL </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GBREITE</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">P</span><span class="p">(:,</span><span class="n">J</span><span class="p">))</span>
+<a name="ln-241"></a>      <span class="k">DO </span><span class="n">M</span><span class="o">=</span><span class="mi">0</span><span class="p">,(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-242"></a>        <span class="n">PP</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">M</span><span class="p">)</span><span class="o">=</span><span class="n">P</span><span class="p">(</span><span class="n">M</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-243"></a>      <span class="k">END DO</span>
+<a name="ln-244"></a><span class="k">    END DO</span>
+<a name="ln-245"></a><span class="c">!$OMP END PARALLEL DO</span>
+<a name="ln-246"></a>
+<a name="ln-247"></a><span class="c">!       MPAR(1)=152</span>
+<a name="ln-248"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.12&#39;</span> 
+<a name="ln-249"></a><span class="c">!!  read LNSP in SH</span>
+<a name="ln-250"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">152</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
+<a name="ln-251"></a>    <span class="k">CALL </span><span class="n">SET99</span><span class="p">(</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">mauf</span><span class="p">)</span>
+<a name="ln-252"></a>    <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">PS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">1</span><span class="p">)</span>
+<a name="ln-253"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="nb">EXP</span><span class="p">(</span><span class="n">PS</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-254"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-255"></a>
+<a name="ln-256"></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">NGJ</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-257"></a>      <span class="k">CALL </span><span class="n">SET99</span><span class="p">(</span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">GIFAX</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span>
+<a name="ln-258"></a>    <span class="k">END DO</span>
+<a name="ln-259"></a><span class="k">    CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-260"></a>    <span class="n">PSG</span><span class="o">=</span><span class="n">HILF</span>
+<a name="ln-261"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">LNPMN2</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-262"></a>    <span class="k">CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">LNPMN2</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-263"></a>
 <a name="ln-264"></a>
-<a name="ln-265"></a>    <span class="n">PSG</span><span class="o">=</span><span class="nb">EXP</span><span class="p">(</span><span class="n">PSG</span><span class="p">)</span>
-<a name="ln-266"></a>    <span class="n">HILF</span><span class="o">=</span><span class="n">PSG</span>
+<a name="ln-265"></a>    <span class="n">HILF</span><span class="o">=</span><span class="nb">exp</span><span class="p">(</span><span class="n">PSG</span><span class="p">)</span><span class="o">-</span><span class="nb">exp</span><span class="p">(</span><span class="n">HILF</span><span class="p">)</span>
+<a name="ln-266"></a>
 <a name="ln-267"></a>    <span class="k">CALL </span><span class="n">STATIS</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-268"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PSG: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-268"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ratio of PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
 <a name="ln-269"></a>
-<a name="ln-270"></a><span class="mi">111</span> <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.10&#39;</span>
-<a name="ln-271"></a><span class="c">!!  read u,v in SH</span>
-<a name="ln-272"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">131</span><span class="p">,</span><span class="mi">132</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
-<a name="ln-273"></a>
-<a name="ln-274"></a><span class="c">!!  Transformieren des Windes auf das Gaussgitter  </span>
-<a name="ln-275"></a>    <span class="k">CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">UGVG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-276"></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">MLEVEL</span>
-<a name="ln-277"></a><span class="c">! North Pole</span>
-<a name="ln-278"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CUA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">))</span>
-<a name="ln-279"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CVA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">))</span>
-<a name="ln-280"></a><span class="c">! South Pole</span>
-<a name="ln-281"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CUA</span><span class="p">(:,</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">))</span>
-<a name="ln-282"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">),</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CVA</span><span class="p">(:,</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">))</span>
-<a name="ln-283"></a>    <span class="k">END DO</span>
-<a name="ln-284"></a>
-<a name="ln-285"></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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span>
-<a name="ln-286"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
-<a name="ln-287"></a>    <span class="k">END DO</span>
-<a name="ln-288"></a><span class="k">    CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">UV</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-270"></a>    <span class="n">PSG</span><span class="o">=</span><span class="nb">EXP</span><span class="p">(</span><span class="n">PSG</span><span class="p">)</span>
+<a name="ln-271"></a>    <span class="n">HILF</span><span class="o">=</span><span class="n">PSG</span>
+<a name="ln-272"></a>    <span class="k">CALL </span><span class="n">STATIS</span><span class="p">(</span><span class="n">NGI</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-273"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PSG: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-274"></a>
+<a name="ln-275"></a><span class="mi">111</span> <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.10&#39;</span>
+<a name="ln-276"></a><span class="c">!!  read u,v in SH</span>
+<a name="ln-277"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">131</span><span class="p">,</span><span class="mi">132</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
+<a name="ln-278"></a>
+<a name="ln-279"></a><span class="c">!!  Transforming the wind to the Gaussian grid</span>
+<a name="ln-280"></a>    <span class="k">CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">UGVG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-281"></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">MLEVEL</span>
+<a name="ln-282"></a><span class="c">! North Pole</span>
+<a name="ln-283"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CUA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">))</span>
+<a name="ln-284"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CVA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">))</span>
+<a name="ln-285"></a><span class="c">! South Pole</span>
+<a name="ln-286"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CUA</span><span class="p">(:,</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">))</span>
+<a name="ln-287"></a>      <span class="k">CALL </span><span class="n">JSPPOLE</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">),</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,.</span><span class="n">TRUE</span><span class="p">.,</span><span class="n">CVA</span><span class="p">(:,</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">))</span>
+<a name="ln-288"></a>    <span class="k">END DO</span>
 <a name="ln-289"></a>
-<a name="ln-290"></a>
-<a name="ln-291"></a><span class="mi">112</span> <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.13&#39;</span>
-<a name="ln-292"></a><span class="c">!!  read DIV in SH</span>
-<a name="ln-293"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">155</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
-<a name="ln-294"></a><span class="c">!! Transformieren der horizontalen Divergenz auf das Gaussgitter  </span>
-<a name="ln-295"></a>    <span class="k">CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-296"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-297"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS DG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-298"></a>
-<a name="ln-299"></a><span class="c">!! Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter  </span>
-<a name="ln-300"></a>    <span class="k">CALL </span><span class="n">PHGRAD</span><span class="p">(</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-301"></a>
-<a name="ln-302"></a><span class="c">!! Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter  </span>
-<a name="ln-303"></a>    <span class="k">CALL </span><span class="n">CONTGL</span><span class="p">(</span><span class="n">HILF</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">UGVG</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UGVG</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="p">&amp;</span>
-<a name="ln-304"></a>      <span class="n">GBREITE</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-305"></a><span class="c">! note that HILF is ps on input and  dpsdt*ps on output</span>
-<a name="ln-306"></a>      
-<a name="ln-307"></a>     <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-308"></a>     <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ETAG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-309"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-310"></a>     <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-311"></a>     <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ETAG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-312"></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">MLEVEL</span>
-<a name="ln-313"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
-<a name="ln-314"></a>    <span class="k">END DO</span>
-<a name="ln-315"></a>
-<a name="ln-316"></a><span class="k">    CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
-<a name="ln-317"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-318"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ETA-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-319"></a>
-<a name="ln-320"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span> <span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-321"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-322"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS HILF-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-323"></a>
-<a name="ln-324"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
-<a name="ln-325"></a>    <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">DPSDT</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">1</span><span class="p">)</span>
-<a name="ln-326"></a>
-<a name="ln-327"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">DPSDT</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-328"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS DPSDT: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-290"></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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span>
+<a name="ln-291"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
+<a name="ln-292"></a>    <span class="k">END DO</span>
+<a name="ln-293"></a><span class="k">    CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">UV</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-294"></a>
+<a name="ln-295"></a>
+<a name="ln-296"></a><span class="mi">112</span> <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.13&#39;</span>
+<a name="ln-297"></a><span class="c">!!  read DIV in SH</span>
+<a name="ln-298"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">155</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
+<a name="ln-299"></a>    
+<a name="ln-300"></a><span class="c">!! Transform horizontal divergence to the Gaussian grid</span>
+<a name="ln-301"></a>    <span class="k">CALL </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-302"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-303"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS DG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-304"></a>
+<a name="ln-305"></a><span class="c">!! Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid  </span>
+<a name="ln-306"></a>    <span class="k">CALL </span><span class="n">PHGRAD</span><span class="p">(</span><span class="n">LNPMN</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-307"></a>
+<a name="ln-308"></a><span class="c">!! Calculation of the vertical velocity on the Gaussian grid  </span>
+<a name="ln-309"></a>    <span class="k">CALL </span><span class="n">CONTGL</span><span class="p">(</span><span class="n">HILF</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">UGVG</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UGVG</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="p">&amp;</span>
+<a name="ln-310"></a>      <span class="n">GBREITE</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-311"></a><span class="c">! note that HILF is ps on input and  dpsdt*ps on output</span>
+<a name="ln-312"></a>      
+<a name="ln-313"></a>     <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-314"></a>     <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ETAG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-315"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-316"></a>     <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-317"></a>     <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ETAG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-318"></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">MLEVEL</span>
+<a name="ln-319"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
+<a name="ln-320"></a>    <span class="k">END DO</span>
+<a name="ln-321"></a>
+<a name="ln-322"></a><span class="k">    CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-323"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-324"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS ETA-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-325"></a>
+<a name="ln-326"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span> <span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-327"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">HILF</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-328"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3p,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS HILF-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
 <a name="ln-329"></a>
-<a name="ln-330"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</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>
-<a name="ln-331"></a><span class="c">!! Berechnung von Omega auf dem Gaussgitter  </span>
+<a name="ln-330"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
+<a name="ln-331"></a>    <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">DPSDT</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">1</span><span class="p">)</span>
 <a name="ln-332"></a>
-<a name="ln-333"></a>      <span class="k">CALL </span><span class="n">OMEGA</span><span class="p">(</span><span class="n">PSG</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">UGVG</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UGVG</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="p">&amp;</span>
-<a name="ln-334"></a>        <span class="n">GBREITE</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">,</span><span class="n">NGI</span> <span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-335"></a>      <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-336"></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">MLEVEL</span>
-<a name="ln-337"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
-<a name="ln-338"></a>      <span class="k">END DO</span>
-<a name="ln-339"></a><span class="k">      CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">OM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
-<a name="ln-340"></a>
-<a name="ln-341"></a>    <span class="k">END IF</span> <span class="c">! MOMEGA</span>
-<a name="ln-342"></a>
-<a name="ln-343"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-344"></a>
-<a name="ln-345"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-346"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PSG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-347"></a>
-<a name="ln-348"></a>    <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">PS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">1</span><span class="p">)</span>
-<a name="ln-349"></a>
-<a name="ln-350"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">PS</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-351"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-352"></a>
-<a name="ln-353"></a><span class="mi">114</span> <span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">HILF</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">LNPMN</span><span class="p">)</span>
-<a name="ln-354"></a>
-<a name="ln-355"></a><span class="c">!      ALLOCATE (UV(MAXL, MAXB, 2*MLEVEL))</span>
-<a name="ln-356"></a><span class="c">! CALL GRPH213(XMN,UGVG,GWSAVE,GIFAX,PP,WEIGHT,MLAT,</span>
-<a name="ln-357"></a><span class="c">!     *MNAUF,NGI,NGJ,2*MLEVEL)</span>
-<a name="ln-358"></a><span class="c">!        DO K=1,2*MLEVEL</span>
-<a name="ln-359"></a><span class="c">!          IF (MSMOOTH .ne. 0) CALL SPFILTER(XMN(:,K),MNAUF,MSMOOTH)</span>
-<a name="ln-360"></a><span class="c">!        END DO</span>
-<a name="ln-361"></a><span class="c">!        CALL PHGCUT(XMN,UV,WSAVE,IFAX,Z,</span>
-<a name="ln-362"></a><span class="c">!     *MNAUF,MNAUF,MAUF,MANF,MAXL,MAXB,2*MLEVEL)</span>
-<a name="ln-363"></a>    <span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">PP</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">UGVG</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">GBREITE</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">XMN</span><span class="p">)</span>
-<a name="ln-364"></a><span class="c">!        CALL ETAGAUSS(Z,WSAVE</span>
-<a name="ln-365"></a><span class="c">!     *,BREITE,UV,ETA,OM,PS,</span>
-<a name="ln-366"></a><span class="c">!     *MAUF,MAXB,MAXL,MANF,MNAUF,MLEVEL,MSMOOTH)</span>
-<a name="ln-367"></a>
-<a name="ln-368"></a>  <span class="k">ELSE</span>
-<a name="ln-369"></a>
-<a name="ln-370"></a><span class="c">!-----------------------------------------------------------------</span>
-<a name="ln-371"></a><span class="c">!     READING OF PREPARED METEOROLOGICAL FIELDS             </span>
-<a name="ln-372"></a><span class="c">!                                                                </span>
-<a name="ln-373"></a><span class="c">!     THE FOLLOWING FIELDS ARE EXPECTED:                    </span>
-<a name="ln-374"></a><span class="c">!                                                                </span>
-<a name="ln-375"></a><span class="c">!     UNIT 11: T,U,V        (REGULAR GRID)                  </span>
-<a name="ln-376"></a><span class="c">!     UNIT 17: Q            (REGULAR GRID)                  </span>
-<a name="ln-377"></a><span class="c">!     UNIT 13: D            (REGULAR GRID)                  </span>
-<a name="ln-378"></a><span class="c">!     UNIT 12: LNSP         (SPHERICAL HARMONICS)           </span>
-<a name="ln-379"></a><span class="c">!     UNIT 14: SURFACE DATA (REGULAR GRID)                  </span>
-<a name="ln-380"></a><span class="c">!     UNIT 16: FLUX DATA    (REGULAR GRID)                  </span>
-<a name="ln-381"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-382"></a>
-<a name="ln-383"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">))</span>
-<a name="ln-384"></a>    <span class="n">MLAT</span><span class="o">=</span><span class="n">MAXL</span>
-<a name="ln-385"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
-<a name="ln-386"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">DPSDL</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">DPSDM</span><span class="p">(</span><span class="n">MAXL</span><span class="p">,</span><span class="n">MAXB</span><span class="p">))</span>
-<a name="ln-387"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">UV</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">DIV</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>
+<a name="ln-333"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">DPSDT</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-334"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS DPSDT: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-335"></a>
+<a name="ln-336"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</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>
+<a name="ln-337"></a><span class="c">!! Calculation of omega on the Gaussian grid  </span>
+<a name="ln-338"></a>
+<a name="ln-339"></a>      <span class="k">CALL </span><span class="n">OMEGA</span><span class="p">(</span><span class="n">PSG</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">UGVG</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UGVG</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="p">&amp;</span>
+<a name="ln-340"></a>        <span class="n">GBREITE</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">,</span><span class="n">NGI</span> <span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-341"></a>      <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-342"></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">MLEVEL</span>
+<a name="ln-343"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MSMOOTH</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">CALL </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">XMN</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MSMOOTH</span><span class="p">)</span>
+<a name="ln-344"></a>      <span class="k">END DO</span>
+<a name="ln-345"></a><span class="k">      CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">OM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-346"></a>
+<a name="ln-347"></a>    <span class="k">END IF</span> <span class="c">! MOMEGA</span>
+<a name="ln-348"></a>
+<a name="ln-349"></a>    <span class="k">CALL </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">GIFAX</span><span class="p">,</span><span class="n">PP</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-350"></a>
+<a name="ln-351"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-352"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PSG-PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-353"></a>
+<a name="ln-354"></a>    <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">PS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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="mi">1</span><span class="p">)</span>
+<a name="ln-355"></a>
+<a name="ln-356"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">PS</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-357"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS PS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-358"></a>
+<a name="ln-359"></a><span class="mi">114</span> <span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">HILF</span><span class="p">,</span><span class="n">PSG</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">ETAG</span><span class="p">,</span><span class="n">DG</span><span class="p">,</span><span class="n">LNPMN</span><span class="p">)</span>
+<a name="ln-360"></a>
+<a name="ln-361"></a><span class="c">!      ALLOCATE (UV(MAXL, MAXB, 2*MLEVEL))</span>
+<a name="ln-362"></a><span class="c">! CALL GRPH213(XMN,UGVG,GWSAVE,GIFAX,PP,WEIGHT,MLAT,</span>
+<a name="ln-363"></a><span class="c">!     *MNAUF,NGI,NGJ,2*MLEVEL)</span>
+<a name="ln-364"></a><span class="c">!        DO K=1,2*MLEVEL</span>
+<a name="ln-365"></a><span class="c">!          IF (MSMOOTH .ne. 0) CALL SPFILTER(XMN(:,K),MNAUF,MSMOOTH)</span>
+<a name="ln-366"></a><span class="c">!        END DO</span>
+<a name="ln-367"></a><span class="c">!        CALL PHGCUT(XMN,UV,WSAVE,IFAX,Z,</span>
+<a name="ln-368"></a><span class="c">!     *MNAUF,MNAUF,MAUF,MANF,MAXL,MAXB,2*MLEVEL)</span>
+<a name="ln-369"></a>    <span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">PP</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">UGVG</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">GBREITE</span><span class="p">,</span><span class="n">WEIGHT</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">XMN</span><span class="p">)</span>
+<a name="ln-370"></a><span class="c">!        CALL ETAGAUSS(Z,WSAVE</span>
+<a name="ln-371"></a><span class="c">!     *,BREITE,UV,ETA,OM,PS,</span>
+<a name="ln-372"></a><span class="c">!     *MAUF,MAXB,MAXL,MANF,MNAUF,MLEVEL,MSMOOTH)</span>
+<a name="ln-373"></a>
+<a name="ln-374"></a>  <span class="k">ELSE</span>
+<a name="ln-375"></a>
+<a name="ln-376"></a><span class="c">!-----------------------------------------------------------------</span>
+<a name="ln-377"></a><span class="c">!     READING OF PREPARED METEOROLOGICAL FIELDS             </span>
+<a name="ln-378"></a><span class="c">!                                                                </span>
+<a name="ln-379"></a><span class="c">!     THE FOLLOWING FIELDS ARE EXPECTED:                    </span>
+<a name="ln-380"></a><span class="c">!                                                                </span>
+<a name="ln-381"></a><span class="c">!     UNIT 11: T,U,V        (REGULAR GRID)                  </span>
+<a name="ln-382"></a><span class="c">!     UNIT 17: Q            (REGULAR GRID)                  </span>
+<a name="ln-383"></a><span class="c">!     UNIT 13: D            (REGULAR GRID)                  </span>
+<a name="ln-384"></a><span class="c">!     UNIT 12: LNSP         (SPHERICAL HARMONICS)           </span>
+<a name="ln-385"></a><span class="c">!     UNIT 14: SURFACE DATA (REGULAR GRID)                  </span>
+<a name="ln-386"></a><span class="c">!     UNIT 16: FLUX DATA    (REGULAR GRID)                  </span>
+<a name="ln-387"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-388"></a>
-<a name="ln-389"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-390"></a><span class="c">!! READING OF SURFACE PRESSURE                   </span>
-<a name="ln-391"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-392"></a>
-<a name="ln-393"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.12&#39;</span>
-<a name="ln-394"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">LNPS</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">152</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
-<a name="ln-395"></a>
-<a name="ln-396"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-397"></a><span class="c">!! READING OF U,V                     </span>
-<a name="ln-398"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-399"></a>
-<a name="ln-400"></a><span class="c">! OPENING OF UNBLOCKED GRIB FILE</span>
+<a name="ln-389"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">))</span>
+<a name="ln-390"></a>    <span class="n">MLAT</span><span class="o">=</span><span class="n">MAXL</span>
+<a name="ln-391"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
+<a name="ln-392"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">DPSDL</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">DPSDM</span><span class="p">(</span><span class="n">MAXL</span><span class="p">,</span><span class="n">MAXB</span><span class="p">))</span>
+<a name="ln-393"></a>    <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">UV</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">),</span><span class="n">DIV</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>
+<a name="ln-394"></a>
+<a name="ln-395"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-396"></a><span class="c">!! READING OF SURFACE PRESSURE                   </span>
+<a name="ln-397"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-398"></a>
+<a name="ln-399"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.12&#39;</span>
+<a name="ln-400"></a>    <span class="k">CALL </span><span class="n">READSPECTRAL</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">LNPS</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">152</span><span class="o">/</span><span class="p">),</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</span><span class="p">)</span>
 <a name="ln-401"></a>
-<a name="ln-402"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.10&#39;</span>
-<a name="ln-403"></a>    <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">UV</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">131</span><span class="p">,</span><span class="mi">132</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-404"></a>
-<a name="ln-405"></a>    <span class="n">PI</span><span class="o">=</span><span class="nb">ACOS</span><span class="p">(</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span>
-<a name="ln-406"></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">MAXB</span>
-<a name="ln-407"></a>      <span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="nb">SIN</span><span class="p">((</span><span class="n">RLA1</span><span class="o">-</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">RLA1</span><span class="o">-</span><span class="n">RLA0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span><span class="o">*</span><span class="n">PI</span><span class="o">/</span><span class="mi">18</span><span class="mf">0.D0</span><span class="p">)</span>
-<a name="ln-408"></a>    <span class="k">END DO</span>
-<a name="ln-409"></a>
-<a name="ln-410"></a><span class="c">! Avoid possible Pole problem</span>
-<a name="ln-411"></a><span class="c">!      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0)</span>
-<a name="ln-412"></a><span class="c">!      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0)</span>
-<a name="ln-413"></a>
-<a name="ln-414"></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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span>
-<a name="ln-415"></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">MAXB</span>
-<a name="ln-416"></a>        <span class="n">COSB</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">*</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)))</span>
-<a name="ln-417"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">RLA0</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="o">-</span><span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">MAXB</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="p">&amp;</span>
-<a name="ln-418"></a>            <span class="n">RLA1</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span>  <span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-419"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">/</span><span class="mf">1.D6</span>
-<a name="ln-420"></a>        <span class="k">ELSE</span>
-<a name="ln-421"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">*</span><span class="n">COSB</span>
-<a name="ln-422"></a>        <span class="k">END IF</span>
-<a name="ln-423"></a><span class="k">      END DO</span>
-<a name="ln-424"></a><span class="k">    END DO</span>
-<a name="ln-425"></a>
-<a name="ln-426"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-427"></a><span class="c">!! READING OF LNSP on grid               </span>
-<a name="ln-428"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-429"></a>
-<a name="ln-430"></a><span class="c">! For debugging only</span>
-<a name="ln-431"></a><span class="c">!      FILENAME=&#39;LNSPG_G.20060330.600&#39;</span>
-<a name="ln-432"></a><span class="c">!      INQUIRE(FILE=FILENAME,EXIST=EX)</span>
-<a name="ln-433"></a><span class="c">!      CALL READLATLON(FILENAME,QA,</span>
-<a name="ln-434"></a><span class="c">!     *MAXL,MAXB,1,1,(/152/))</span>
+<a name="ln-402"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-403"></a><span class="c">!! READING OF U,V                     </span>
+<a name="ln-404"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-405"></a>
+<a name="ln-406"></a><span class="c">! OPENING OF UNBLOCKED GRIB FILE</span>
+<a name="ln-407"></a>
+<a name="ln-408"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.10&#39;</span>
+<a name="ln-409"></a>    <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">UV</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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span><span class="p">,(</span><span class="o">/</span><span class="mi">131</span><span class="p">,</span><span class="mi">132</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-410"></a>
+<a name="ln-411"></a>    <span class="n">PI</span><span class="o">=</span><span class="nb">ACOS</span><span class="p">(</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span>
+<a name="ln-412"></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">MAXB</span>
+<a name="ln-413"></a>      <span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="nb">SIN</span><span class="p">((</span><span class="n">RLA1</span><span class="o">-</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">RLA1</span><span class="o">-</span><span class="n">RLA0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span><span class="o">*</span><span class="n">PI</span><span class="o">/</span><span class="mi">18</span><span class="mf">0.D0</span><span class="p">)</span>
+<a name="ln-414"></a>    <span class="k">END DO</span>
+<a name="ln-415"></a>
+<a name="ln-416"></a><span class="c">! Avoid possible Pole problem</span>
+<a name="ln-417"></a><span class="c">!      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0)</span>
+<a name="ln-418"></a><span class="c">!      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0)</span>
+<a name="ln-419"></a>
+<a name="ln-420"></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="mi">2</span><span class="o">*</span><span class="n">MLEVEL</span>
+<a name="ln-421"></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">MAXB</span>
+<a name="ln-422"></a>        <span class="n">COSB</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">*</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)))</span>
+<a name="ln-423"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">RLA0</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="o">-</span><span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">MAXB</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="p">&amp;</span>
+<a name="ln-424"></a>            <span class="n">RLA1</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span>  <span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-425"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">/</span><span class="mf">1.D6</span>
+<a name="ln-426"></a>        <span class="k">ELSE</span>
+<a name="ln-427"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">*</span><span class="n">COSB</span>
+<a name="ln-428"></a>        <span class="k">END IF</span>
+<a name="ln-429"></a><span class="k">      END DO</span>
+<a name="ln-430"></a><span class="k">    END DO</span>
+<a name="ln-431"></a>
+<a name="ln-432"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-433"></a><span class="c">!! READING OF LNSP on grid               </span>
+<a name="ln-434"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-435"></a>
-<a name="ln-436"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-437"></a><span class="c">!! READING OF DIVERGENCE                      </span>
-<a name="ln-438"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-439"></a>
-<a name="ln-440"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</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="n">METADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-441"></a><span class="k">      </span><span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.13&#39;</span>
-<a name="ln-442"></a>      <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">DIV</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="o">/</span><span class="mi">155</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-443"></a>    <span class="k">END IF</span>
-<a name="ln-444"></a>
+<a name="ln-436"></a><span class="c">! For debugging only</span>
+<a name="ln-437"></a><span class="c">!      FILENAME=&#39;LNSPG_G.20060330.600&#39;</span>
+<a name="ln-438"></a><span class="c">!      INQUIRE(FILE=FILENAME,EXIST=EX)</span>
+<a name="ln-439"></a><span class="c">!      CALL READLATLON(FILENAME,QA,</span>
+<a name="ln-440"></a><span class="c">!     *MAXL,MAXB,1,1,(/152/))</span>
+<a name="ln-441"></a>
+<a name="ln-442"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-443"></a><span class="c">!! READING OF DIVERGENCE                      </span>
+<a name="ln-444"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-445"></a>
-<a name="ln-446"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-447"></a><span class="c">!</span>
-<a name="ln-448"></a><span class="c">!  Calculation of etapoint --&gt; total time derivative of    </span>
-<a name="ln-449"></a><span class="c">!  ECMWF vertical coordinate eta multiplied by the derivative</span>
-<a name="ln-450"></a><span class="c">!  of pressure with respect to eta:</span>
-<a name="ln-451"></a><span class="c">!  \[\frac{\mathrm{d}\eta}{\mathrm{d}t}\frac{\partial p}{\partial \eta}\]</span>
+<a name="ln-446"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</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="n">METADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-447"></a><span class="k">      </span><span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.13&#39;</span>
+<a name="ln-448"></a>      <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">DIV</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="o">/</span><span class="mi">155</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-449"></a>    <span class="k">END IF</span>
+<a name="ln-450"></a>
+<a name="ln-451"></a>
 <a name="ln-452"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-453"></a>
-<a name="ln-454"></a><span class="c">!* Initialisieren  Legendretransformation auf das LaT/LON Gitter</span>
-<a name="ln-455"></a><span class="c">!! Without Gaussian grid calculation Legendre Polynomials are calculated</span>
-<a name="ln-456"></a><span class="c">!! only for one latitude to save space</span>
-<a name="ln-457"></a>
-<a name="ln-458"></a>
+<a name="ln-453"></a><span class="c">!</span>
+<a name="ln-454"></a><span class="c">!  Calculation of etapoint --&gt; total time derivative of    </span>
+<a name="ln-455"></a><span class="c">!  ECMWF vertical coordinate eta multiplied by the derivative</span>
+<a name="ln-456"></a><span class="c">!  of pressure with respect to eta:</span>
+<a name="ln-457"></a><span class="c">!  \[\frac{\mathrm{d}\eta}{\mathrm{d}t}\frac{\partial p}{\partial \eta}\]</span>
+<a name="ln-458"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-459"></a>
-<a name="ln-460"></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">MAXB</span>
-<a name="ln-461"></a>      <span class="k">CALL </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
-<a name="ln-462"></a>      <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">LNPS</span><span class="p">,</span><span class="n">PS</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-463"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</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="n">METADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span> <span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-464"></a><span class="k">        CALL </span><span class="n">PHGRACUT</span><span class="p">(</span><span class="n">LNPS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">DPSDM</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span> <span class="p">&amp;</span>
-<a name="ln-465"></a>          <span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-466"></a>      <span class="k">END IF</span>
-<a name="ln-467"></a><span class="k">    END DO</span>
-<a name="ln-468"></a>
-<a name="ln-469"></a><span class="k">    </span><span class="n">PS</span><span class="o">=</span><span class="nb">EXP</span><span class="p">(</span><span class="n">PS</span><span class="p">)</span>
-<a name="ln-470"></a>
-<a name="ln-471"></a><span class="c">! For debugging only</span>
-<a name="ln-472"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">PS</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-473"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-474"></a>
-<a name="ln-475"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</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>
-<a name="ln-476"></a><span class="k">      CALL </span><span class="n">OMEGA</span><span class="p">(</span><span class="n">PS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">UV</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UV</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="p">&amp;</span>
-<a name="ln-477"></a>        <span class="n">BREITE</span><span class="p">,</span><span class="n">OM</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</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="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-478"></a>    <span class="k">END IF</span>
-<a name="ln-479"></a>
-<a name="ln-480"></a><span class="k">    IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</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="n">METADIFF</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>
-<a name="ln-481"></a><span class="k">      </span><span class="n">DPSDT</span><span class="o">=</span><span class="n">PS</span>
-<a name="ln-482"></a>      <span class="k">CALL </span><span class="n">CONTGL</span><span class="p">(</span><span class="n">DPSDT</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">UV</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UV</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="p">&amp;</span>
-<a name="ln-483"></a>        <span class="n">BREITE</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</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="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
-<a name="ln-484"></a>    <span class="k">END IF</span>
-<a name="ln-485"></a>
-<a name="ln-486"></a><span class="k">  END IF</span> <span class="c">! MGAUSS</span>
+<a name="ln-460"></a>
+<a name="ln-461"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-462"></a>
+<a name="ln-463"></a><span class="c">!* Initialise Legendre transformation on the lat-lon grid.</span>
+<a name="ln-464"></a><span class="c">!! Without Gaussian grid calculation, </span>
+<a name="ln-465"></a><span class="c">!! Legendre polynomials are calculated only for one latitude, to save space</span>
+<a name="ln-466"></a>
+<a name="ln-467"></a>
+<a name="ln-468"></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">MAXB</span>
+<a name="ln-469"></a>      <span class="k">CALL </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
+<a name="ln-470"></a>      <span class="k">CALL </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">LNPS</span><span class="p">,</span><span class="n">PS</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-471"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</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="n">METADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span> <span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-472"></a><span class="k">        CALL </span><span class="n">PHGRACUT</span><span class="p">(</span><span class="n">LNPS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">DPSDM</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span> <span class="p">&amp;</span>
+<a name="ln-473"></a>          <span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-474"></a>      <span class="k">END IF</span>
+<a name="ln-475"></a><span class="k">    END DO</span>
+<a name="ln-476"></a>
+<a name="ln-477"></a><span class="k">    </span><span class="n">PS</span><span class="o">=</span><span class="nb">EXP</span><span class="p">(</span><span class="n">PS</span><span class="p">)</span>
+<a name="ln-478"></a>
+<a name="ln-479"></a><span class="c">! For debugging only</span>
+<a name="ln-480"></a>    <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">PS</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-481"></a>    <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A,T20,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;STATISTICS: &#39;</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-482"></a>
+<a name="ln-483"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</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>
+<a name="ln-484"></a><span class="k">      CALL </span><span class="n">OMEGA</span><span class="p">(</span><span class="n">PS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">UV</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UV</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="p">&amp;</span>
+<a name="ln-485"></a>        <span class="n">BREITE</span><span class="p">,</span><span class="n">OM</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</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="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-486"></a>    <span class="k">END IF</span>
 <a name="ln-487"></a>
-<a name="ln-488"></a><span class="c">!! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL  </span>
-<a name="ln-489"></a>
-<a name="ln-490"></a>  <span class="k">OPEN</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="k">FILE</span><span class="o">=</span><span class="s1">&#39;VERTICAL.EC&#39;</span><span class="p">)</span>
-<a name="ln-491"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span>
-<a name="ln-492"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;VERTICAL DISCRETIZATION OF POP MODEL&#39;</span>
-<a name="ln-493"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span>
-<a name="ln-494"></a>  <span class="k">write</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(i3,a)&#39;</span><span class="p">)</span> <span class="n">MLEVEL</span><span class="p">,</span><span class="s1">&#39;   number of layers&#39;</span>
-<a name="ln-495"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span>
-<a name="ln-496"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;* A(NLEV+1)&#39;</span>
-<a name="ln-497"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span>
-<a name="ln-498"></a>  <span class="k">DO </span><span class="mi">205</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-499"></a><span class="mi">205</span> <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(F18.12)&#39;</span><span class="p">)</span> <span class="n">AK</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
-<a name="ln-500"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span>
-<a name="ln-501"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;* B(NLEV+1)&#39;</span>
-<a name="ln-502"></a>  <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span>
-<a name="ln-503"></a>  <span class="k">DO </span><span class="mi">210</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-504"></a><span class="mi">210</span> <span class="k">WRITE</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span><span class="s1">&#39;(F18.12)&#39;</span><span class="p">)</span> <span class="n">BK</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
-<a name="ln-505"></a>  <span class="k">CLOSE</span><span class="p">(</span><span class="mi">21</span><span class="p">)</span>
-<a name="ln-506"></a>
-<a name="ln-507"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-508"></a><span class="c">! READING OF OMEGA                           </span>
-<a name="ln-509"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-510"></a>
-<a name="ln-511"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGA</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>
-<a name="ln-512"></a>
-<a name="ln-513"></a><span class="k">    ALLOCATE</span> <span class="p">(</span><span class="n">OMR</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>
-<a name="ln-514"></a>
-<a name="ln-515"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.19&#39;</span>
-<a name="ln-516"></a>    <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">OMR</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="o">/</span><span class="mi">135</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-517"></a>
-<a name="ln-518"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</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>
+<a name="ln-488"></a><span class="k">    IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</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="n">METADIFF</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>
+<a name="ln-489"></a><span class="k">      </span><span class="n">DPSDT</span><span class="o">=</span><span class="n">PS</span>
+<a name="ln-490"></a>      <span class="k">CALL </span><span class="n">CONTGL</span><span class="p">(</span><span class="n">DPSDT</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">UV</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">),</span><span class="n">UV</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="p">&amp;</span>
+<a name="ln-491"></a>        <span class="n">BREITE</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">AK</span><span class="p">,</span><span class="n">BK</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="n">MAXB</span><span class="p">,</span><span class="n">MLEVEL</span><span class="p">)</span>
+<a name="ln-492"></a>    <span class="k">END IF</span>
+<a name="ln-493"></a>
+<a name="ln-494"></a><span class="k">  END IF</span> <span class="c">! MGAUSS</span>
+<a name="ln-495"></a>
+<a name="ln-496"></a><span class="c">! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL  </span>
+<a name="ln-497"></a><span class="c">! 2020-06-25 Commented out by PS - not needed anymore</span>
+<a name="ln-498"></a>
+<a name="ln-499"></a><span class="c">!  OPEN(21,FILE=&#39;VERTICAL.EC&#39;)</span>
+<a name="ln-500"></a><span class="c">!  WRITE(21,&#39;(A)&#39;)</span>
+<a name="ln-501"></a><span class="c">!  WRITE(21,&#39;(A)&#39;) &#39;VERTICAL DISCRETIZATION OF POP MODEL&#39;</span>
+<a name="ln-502"></a><span class="c">!  WRITE(21,&#39;(A)&#39;)</span>
+<a name="ln-503"></a><span class="c">!  write(21,&#39;(i3,a)&#39;) MLEVEL,&#39;   number of layers&#39;</span>
+<a name="ln-504"></a><span class="c">!  WRITE(21,&#39;(A)&#39;)</span>
+<a name="ln-505"></a><span class="c">!  WRITE(21,&#39;(A)&#39;) &#39;* A(NLEV+1)&#39;</span>
+<a name="ln-506"></a><span class="c">!  WRITE(21,&#39;(A)&#39;)</span>
+<a name="ln-507"></a><span class="c">!  DO 205 I=1,MLEVEL+1</span>
+<a name="ln-508"></a><span class="c">!205 WRITE(21,&#39;(F18.12)&#39;) AK(I)</span>
+<a name="ln-509"></a><span class="c">!  WRITE(21,&#39;(A)&#39;)</span>
+<a name="ln-510"></a><span class="c">!  WRITE(21,&#39;(A)&#39;) &#39;* B(NLEV+1)&#39;</span>
+<a name="ln-511"></a><span class="c">!  WRITE(21,&#39;(A)&#39;)</span>
+<a name="ln-512"></a><span class="c">!  DO 210 I=1,MLEVEL+1</span>
+<a name="ln-513"></a><span class="c">!210 WRITE(21,&#39;(F18.12)&#39;) BK(I)</span>
+<a name="ln-514"></a><span class="c">!  CLOSE(21)</span>
+<a name="ln-515"></a>
+<a name="ln-516"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-517"></a><span class="c">! READING OF OMEGA                           </span>
+<a name="ln-518"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-519"></a>
-<a name="ln-520"></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">MLEVEL</span>
-<a name="ln-521"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-522"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;       ETA: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-523"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">OMR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-524"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;     OMEGA: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-525"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">OM</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="n">OMR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-526"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;OMEGA DIFF: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-527"></a>      <span class="k">END DO</span>
+<a name="ln-520"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGA</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>
+<a name="ln-521"></a>
+<a name="ln-522"></a><span class="k">    ALLOCATE</span> <span class="p">(</span><span class="n">OMR</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>
+<a name="ln-523"></a>
+<a name="ln-524"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.19&#39;</span>
+<a name="ln-525"></a>    <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">OMR</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="o">/</span><span class="mi">135</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-526"></a>
+<a name="ln-527"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</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>
 <a name="ln-528"></a>
-<a name="ln-529"></a><span class="k">    END IF</span>
-<a name="ln-530"></a><span class="k">  END IF</span>
-<a name="ln-531"></a>
-<a name="ln-532"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-533"></a><span class="c">! READING OF ETA                             </span>
-<a name="ln-534"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-535"></a>
-<a name="ln-536"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">META</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>
+<a name="ln-529"></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">MLEVEL</span>
+<a name="ln-530"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-531"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;       ETA: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-532"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">OMR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-533"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;     OMEGA: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-534"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">OM</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="n">OMR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-535"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;OMEGA DIFF: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-536"></a>      <span class="k">END DO</span>
 <a name="ln-537"></a>
-<a name="ln-538"></a><span class="k">    ALLOCATE</span> <span class="p">(</span><span class="n">ETAR</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>
-<a name="ln-539"></a>
-<a name="ln-540"></a>    <span class="n">P00</span><span class="o">=</span><span class="mi">10132</span><span class="mf">5.</span>
-<a name="ln-541"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.21&#39;</span>
-<a name="ln-542"></a>    <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">ETAR</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="o">/</span><span class="mi">77</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-543"></a>
-<a name="ln-544"></a>    <span class="k">IF</span><span class="p">(</span><span class="n">MDPDETA</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-545"></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">MLEVEL</span>
-<a name="ln-546"></a>        <span class="n">DAK</span><span class="o">=</span><span class="n">AK</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">AK</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-547"></a>        <span class="n">DBK</span><span class="o">=</span><span class="n">BK</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">BK</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-548"></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">MAXB</span>
-<a name="ln-549"></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">MAXL</span>
-<a name="ln-550"></a>            <span class="n">ETAR</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="o">=</span><span class="mi">2</span><span class="o">*</span><span class="n">ETAR</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="o">*</span><span class="n">PS</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="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">DAK</span><span class="o">/</span><span class="n">PS</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="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">DBK</span><span class="p">)</span><span class="o">/</span> <span class="p">&amp;</span>
-<a name="ln-551"></a>              <span class="p">(</span><span class="n">DAK</span><span class="o">/</span><span class="n">P00</span><span class="o">+</span><span class="n">DBK</span><span class="p">)</span>
-<a name="ln-552"></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="mi">1</span><span class="p">)</span> <span class="n">ETAR</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="o">=</span><span class="n">ETAR</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="o">-</span><span class="n">ETAR</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="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-553"></a>          <span class="k">END DO</span>
-<a name="ln-554"></a><span class="k">        END DO</span>
-<a name="ln-555"></a><span class="k">      END DO</span>
-<a name="ln-556"></a><span class="k">    END IF</span>
-<a name="ln-557"></a>
-<a name="ln-558"></a><span class="k">    IF</span> <span class="p">(</span><span class="n">METADIFF</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>
-<a name="ln-559"></a>
-<a name="ln-560"></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">MLEVEL</span>
-<a name="ln-561"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-562"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;       ETA: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-563"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETAR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-564"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;     ETAR: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-565"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="n">ETAR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
-<a name="ln-566"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;ETA DIFF: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
-<a name="ln-567"></a>      <span class="k">END DO</span>
-<a name="ln-568"></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">MLEVEL</span>
-<a name="ln-569"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(I3,2F12.4)&#39;</span><span class="p">)</span> <span class="n">K</span><span class="p">,</span><span class="n">ETA</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">),</span><span class="n">ETAR</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-570"></a>      <span class="k">END DO</span>
-<a name="ln-571"></a><span class="k">    ELSE</span>
-<a name="ln-572"></a><span class="k">      </span><span class="n">ETA</span><span class="o">=</span><span class="n">ETAR</span>
-<a name="ln-573"></a>    <span class="k">END IF</span>
-<a name="ln-574"></a><span class="k">  END IF</span>
-<a name="ln-575"></a>
-<a name="ln-576"></a><span class="k">  ALLOCATE</span> <span class="p">(</span><span class="n">T</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>
-<a name="ln-577"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">QA</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>
-<a name="ln-578"></a>
-<a name="ln-579"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-580"></a><span class="c">!! READING OF T                     </span>
-<a name="ln-581"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-582"></a>
-<a name="ln-583"></a><span class="c">! OPENING OF UNBLOCKED GRIB FILE</span>
+<a name="ln-538"></a><span class="k">    END IF</span>
+<a name="ln-539"></a><span class="k">  END IF</span>
+<a name="ln-540"></a>
+<a name="ln-541"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-542"></a><span class="c">! READING OF ETA                             </span>
+<a name="ln-543"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-544"></a>
+<a name="ln-545"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">META</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>
+<a name="ln-546"></a>
+<a name="ln-547"></a><span class="k">    ALLOCATE</span> <span class="p">(</span><span class="n">ETAR</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>
+<a name="ln-548"></a>
+<a name="ln-549"></a>    <span class="n">P00</span><span class="o">=</span><span class="mi">10132</span><span class="mf">5.</span>
+<a name="ln-550"></a>    <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.21&#39;</span>
+<a name="ln-551"></a>    <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">ETAR</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="o">/</span><span class="mi">77</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-552"></a>
+<a name="ln-553"></a>    <span class="k">IF</span><span class="p">(</span><span class="n">MDPDETA</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-554"></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">MLEVEL</span>
+<a name="ln-555"></a>        <span class="n">DAK</span><span class="o">=</span><span class="n">AK</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">AK</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-556"></a>        <span class="n">DBK</span><span class="o">=</span><span class="n">BK</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">BK</span><span class="p">(</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-557"></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">MAXB</span>
+<a name="ln-558"></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">MAXL</span>
+<a name="ln-559"></a>            <span class="n">ETAR</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="o">=</span><span class="mi">2</span><span class="o">*</span><span class="n">ETAR</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="o">*</span><span class="n">PS</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="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">DAK</span><span class="o">/</span><span class="n">PS</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="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">DBK</span><span class="p">)</span><span class="o">/</span> <span class="p">&amp;</span>
+<a name="ln-560"></a>              <span class="p">(</span><span class="n">DAK</span><span class="o">/</span><span class="n">P00</span><span class="o">+</span><span class="n">DBK</span><span class="p">)</span>
+<a name="ln-561"></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="mi">1</span><span class="p">)</span> <span class="n">ETAR</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="o">=</span><span class="n">ETAR</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="o">-</span><span class="n">ETAR</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="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-562"></a>          <span class="k">END DO</span>
+<a name="ln-563"></a><span class="k">        END DO</span>
+<a name="ln-564"></a><span class="k">      END DO</span>
+<a name="ln-565"></a><span class="k">    END IF</span>
+<a name="ln-566"></a>
+<a name="ln-567"></a><span class="k">    IF</span> <span class="p">(</span><span class="n">METADIFF</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>
+<a name="ln-568"></a>
+<a name="ln-569"></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">MLEVEL</span>
+<a name="ln-570"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-571"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;       ETA: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-572"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETAR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-573"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;     ETAR: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-574"></a>        <span class="k">CALL </span><span class="n">STATIS</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="mi">1</span><span class="p">,</span><span class="n">ETA</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="n">ETAR</span><span class="p">(:,:,</span><span class="n">K</span><span class="p">),</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-575"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A12,I3,3F12.4)&#39;</span><span class="p">)</span> <span class="s1">&#39;ETA DIFF: &#39;</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span>
+<a name="ln-576"></a>      <span class="k">END DO</span>
+<a name="ln-577"></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">MLEVEL</span>
+<a name="ln-578"></a>        <span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(I3,2F12.4)&#39;</span><span class="p">)</span> <span class="n">K</span><span class="p">,</span><span class="n">ETA</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">),</span><span class="n">ETAR</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-579"></a>      <span class="k">END DO</span>
+<a name="ln-580"></a><span class="k">    ELSE</span>
+<a name="ln-581"></a><span class="k">      </span><span class="n">ETA</span><span class="o">=</span><span class="n">ETAR</span>
+<a name="ln-582"></a>    <span class="k">END IF</span>
+<a name="ln-583"></a><span class="k">  END IF</span>
 <a name="ln-584"></a>
-<a name="ln-585"></a>  <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.11&#39;</span>
-<a name="ln-586"></a>  <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">T</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="o">/</span><span class="mi">130</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-585"></a><span class="k">  ALLOCATE</span> <span class="p">(</span><span class="n">T</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>
+<a name="ln-586"></a>  <span class="k">ALLOCATE</span> <span class="p">(</span><span class="n">QA</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>
 <a name="ln-587"></a>
 <a name="ln-588"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-589"></a><span class="c">!! READING OF SPECIFIC HUMIDITY               </span>
+<a name="ln-589"></a><span class="c">!! READING OF T                     </span>
 <a name="ln-590"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-591"></a>
-<a name="ln-592"></a>  <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.17&#39;</span>
-<a name="ln-593"></a>  <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">QA</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="o">/</span><span class="mi">133</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-594"></a>
-<a name="ln-595"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-596"></a><span class="c">!                     TEST READING OF UV from MARS (debug only)  </span>
+<a name="ln-592"></a><span class="c">! OPENING OF UNBLOCKED GRIB FILE</span>
+<a name="ln-593"></a>
+<a name="ln-594"></a>  <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.11&#39;</span>
+<a name="ln-595"></a>  <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">T</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="o">/</span><span class="mi">130</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-596"></a>
 <a name="ln-597"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-598"></a><span class="c">!      FILENAME=&#39;fort.22&#39;</span>
-<a name="ln-599"></a><span class="c">!      CALL READLATLON(FILENAME,UV2,MAXL,MAXB,2*MLEVEL,2,(/131,132/))</span>
+<a name="ln-598"></a><span class="c">!! READING OF SPECIFIC HUMIDITY               </span>
+<a name="ln-599"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-600"></a>
-<a name="ln-601"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-602"></a><span class="c">!! WRITE MODEL LEVEL DATA TO fort.15           </span>
-<a name="ln-603"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-604"></a>
-<a name="ln-605"></a><span class="c">!!     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)</span>
-<a name="ln-606"></a><span class="c">!!     Now we are transforming back to the usual winds.</span>
-<a name="ln-607"></a>
-<a name="ln-608"></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">MLEVEL</span>
-<a name="ln-609"></a>    <span class="k">DO </span><span class="n">J</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-610"></a>      <span class="n">COSB</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">*</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)))</span>
-<a name="ln-611"></a>      <span class="n">UV</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="o">=</span><span class="n">UV</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="o">/</span><span class="n">COSB</span>
-<a name="ln-612"></a>      <span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">/</span><span class="n">COSB</span>
-<a name="ln-613"></a>    <span class="k">END DO</span>
-<a name="ln-614"></a>
-<a name="ln-615"></a><span class="c">! special treatment for poles, if necessary.</span>
-<a name="ln-616"></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">MAXB</span><span class="p">,</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-617"></a>      <span class="n">COSB</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">*</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)))</span>
-<a name="ln-618"></a>      <span class="k">IF</span> <span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span> <span class="p">.</span><span class="n">GT</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="n">MGAUSS</span> <span class="p">.</span><span class="n">NE</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-619"></a><span class="k">        IF</span> <span class="p">(</span><span class="n">RLA0</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="o">-</span><span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">MAXB</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="p">&amp;</span>
-<a name="ln-620"></a>            <span class="n">RLA1</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span>  <span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-621"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">*</span><span class="mf">1.D6</span>
-<a name="ln-622"></a>          <span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="mf">1.D6</span>
-<a name="ln-623"></a>        <span class="k">ELSE</span>
-<a name="ln-624"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">/</span><span class="n">COSB</span>
-<a name="ln-625"></a>          <span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">/</span><span class="n">COSB</span>
-<a name="ln-626"></a>        <span class="k">END IF</span>
-<a name="ln-627"></a><span class="k">      ELSE</span>
-<a name="ln-628"></a><span class="k">        </span><span class="n">HILFUV</span><span class="p">(</span><span class="mi">5</span><span class="p">:</span><span class="n">MAXL</span><span class="p">,:)</span><span class="o">=</span><span class="mf">0.</span>
-<a name="ln-629"></a>        <span class="n">HILFUV</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">,:)</span><span class="o">=</span><span class="mf">0.</span>
-<a name="ln-630"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">J</span><span class="p">.</span><span class="n">EQ</span><span class="p">.</span><span class="n">MAXB</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-631"></a><span class="c">! Suedpol</span>
-<a name="ln-632"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CUA</span><span class="p">(:,</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-633"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">=</span><span class="n">CVA</span><span class="p">(:,</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-634"></a>        <span class="k">ELSE</span>
-<a name="ln-635"></a><span class="c">! Nordpol</span>
-<a name="ln-636"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CUA</span><span class="p">(:,</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-637"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">=</span><span class="n">CVA</span><span class="p">(:,</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-638"></a>        <span class="k">END IF</span>
-<a name="ln-639"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">HILFUV</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAXL</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-640"></a>        <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-641"></a>          <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAXL</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-642"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-643"></a>          <span class="k">ELSE</span>
-<a name="ln-644"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAXL</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-645"></a>          <span class="k">END IF</span>
-<a name="ln-646"></a><span class="k">        END DO</span>
-<a name="ln-647"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">HILFUV</span><span class="p">(:,</span><span class="mi">2</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAXL</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-648"></a>        <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-649"></a>          <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAXL</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-650"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-651"></a>          <span class="k">ELSE</span>
-<a name="ln-652"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAXL</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-653"></a>          <span class="k">END IF</span>
-<a name="ln-654"></a><span class="k">        END DO</span>
-<a name="ln-655"></a><span class="k">      end if</span>
-<a name="ln-656"></a><span class="k">    END DO</span>
-<a name="ln-657"></a><span class="k">  END DO</span>
-<a name="ln-658"></a>
-<a name="ln-659"></a><span class="c">! open output file</span>
-<a name="ln-660"></a>  <span class="k">call </span><span class="n">grib_open_file</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="s1">&#39;fort.15&#39;</span><span class="p">,</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
-<a name="ln-661"></a>
-<a name="ln-662"></a><span class="c">! we use temperature on lat/lon on model levels as template for model level data</span>
-<a name="ln-663"></a>  <span class="n">LUNIT2</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-664"></a>  <span class="k">CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="s1">&#39;fort.11&#39;</span><span class="p">,</span><span class="s1">&#39;R&#39;</span><span class="p">)</span>
-<a name="ln-665"></a>  <span class="k">CALL </span><span class="n">GRIB_NEW_FROM_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">IRET</span><span class="p">)</span>
-<a name="ln-666"></a>  <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">)</span>
+<a name="ln-601"></a>  <span class="n">FILENAME</span><span class="o">=</span><span class="s1">&#39;fort.17&#39;</span>
+<a name="ln-602"></a>  <span class="k">CALL </span><span class="n">READLATLON</span><span class="p">(</span><span class="n">FILENAME</span><span class="p">,</span><span class="n">QA</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="o">/</span><span class="mi">133</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-603"></a>
+<a name="ln-604"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-605"></a><span class="c">!                     TEST READING OF UV from MARS (debug only)  </span>
+<a name="ln-606"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-607"></a><span class="c">!      FILENAME=&#39;fort.22&#39;</span>
+<a name="ln-608"></a><span class="c">!      CALL READLATLON(FILENAME,UV2,MAXL,MAXB,2*MLEVEL,2,(/131,132/))</span>
+<a name="ln-609"></a>
+<a name="ln-610"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-611"></a><span class="c">!! WRITE MODEL LEVEL DATA TO fort.15           </span>
+<a name="ln-612"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-613"></a>
+<a name="ln-614"></a><span class="c">!     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)</span>
+<a name="ln-615"></a><span class="c">!     Now we are transforming back to the usual winds.</span>
+<a name="ln-616"></a>
+<a name="ln-617"></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">MLEVEL</span>
+<a name="ln-618"></a>    <span class="k">DO </span><span class="n">J</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-619"></a>      <span class="n">COSB</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">*</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)))</span>
+<a name="ln-620"></a>      <span class="n">UV</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="o">=</span><span class="n">UV</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="o">/</span><span class="n">COSB</span>
+<a name="ln-621"></a>      <span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">/</span><span class="n">COSB</span>
+<a name="ln-622"></a>    <span class="k">END DO</span>
+<a name="ln-623"></a>
+<a name="ln-624"></a><span class="c">! special treatment for poles, if necessary.</span>
+<a name="ln-625"></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">MAXB</span><span class="p">,</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-626"></a>      <span class="n">COSB</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">*</span><span class="p">(</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)))</span>
+<a name="ln-627"></a>      <span class="k">IF</span> <span class="p">(</span><span class="mf">1.0</span><span class="o">-</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">BREITE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span> <span class="p">.</span><span class="n">GT</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="n">MGAUSS</span> <span class="p">.</span><span class="n">NE</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-628"></a><span class="k">        IF</span> <span class="p">(</span><span class="n">RLA0</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="o">-</span><span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">MAXB</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="p">&amp;</span>
+<a name="ln-629"></a>            <span class="n">RLA1</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span>  <span class="mi">9</span><span class="mf">0.0</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">J</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-630"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">*</span><span class="mf">1.D6</span>
+<a name="ln-631"></a>          <span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="mf">1.D6</span>
+<a name="ln-632"></a>        <span class="k">ELSE</span>
+<a name="ln-633"></a><span class="k">          </span><span class="n">UV</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="o">=</span><span class="n">UV</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="o">/</span><span class="n">COSB</span>
+<a name="ln-634"></a>          <span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UV</span><span class="p">(:,</span><span class="n">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">/</span><span class="n">COSB</span>
+<a name="ln-635"></a>        <span class="k">END IF</span>
+<a name="ln-636"></a><span class="k">      ELSE</span>
+<a name="ln-637"></a><span class="k">        </span><span class="n">HILFUV</span><span class="p">(</span><span class="mi">5</span><span class="p">:</span><span class="n">MAXL</span><span class="p">,:)</span><span class="o">=</span><span class="mf">0.</span>
+<a name="ln-638"></a>        <span class="n">HILFUV</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">,:)</span><span class="o">=</span><span class="mf">0.</span>
+<a name="ln-639"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">J</span><span class="p">.</span><span class="n">EQ</span><span class="p">.</span><span class="n">MAXB</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-640"></a><span class="c">! Suedpol</span>
+<a name="ln-641"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CUA</span><span class="p">(:,</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-642"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">=</span><span class="n">CVA</span><span class="p">(:,</span><span class="mi">4</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-643"></a>        <span class="k">ELSE</span>
+<a name="ln-644"></a><span class="c">! Nordpol</span>
+<a name="ln-645"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CUA</span><span class="p">(:,</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-646"></a>          <span class="n">HILFUV</span><span class="p">(</span><span class="mi">3</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="o">=</span><span class="n">CVA</span><span class="p">(:,</span><span class="mi">2</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-647"></a>        <span class="k">END IF</span>
+<a name="ln-648"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">HILFUV</span><span class="p">(:,</span><span class="mi">1</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAXL</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-649"></a>        <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-650"></a>          <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAXL</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-651"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-652"></a>          <span class="k">ELSE</span>
+<a name="ln-653"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAXL</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-654"></a>          <span class="k">END IF</span>
+<a name="ln-655"></a><span class="k">        END DO</span>
+<a name="ln-656"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">HILFUV</span><span class="p">(:,</span><span class="mi">2</span><span class="p">),</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAXL</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-657"></a>        <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-658"></a>          <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAXL</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-659"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-660"></a>          <span class="k">ELSE</span>
+<a name="ln-661"></a><span class="k">            </span><span class="n">UV</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">J</span><span class="p">,</span><span class="n">MLEVEL</span><span class="o">+</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">HILFUV</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAXL</span><span class="o">+</span><span class="n">I</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-662"></a>          <span class="k">END IF</span>
+<a name="ln-663"></a><span class="k">        END DO</span>
+<a name="ln-664"></a><span class="k">      end if</span>
+<a name="ln-665"></a><span class="k">    END DO</span>
+<a name="ln-666"></a><span class="k">  END DO</span>
 <a name="ln-667"></a>
-<a name="ln-668"></a>
-<a name="ln-669"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-670"></a>    <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">UV</span><span class="p">(:,:,</span><span class="mi">1</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">131</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-671"></a>
-<a name="ln-672"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-673"></a>    <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">UV</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">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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">132</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-674"></a>
-<a name="ln-675"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MDPDETA</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="mi">1</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">MGAUSS</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">0</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">META</span> <span class="p">.</span><span class="n">eq</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-676"></a><span class="k">    CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-677"></a>      <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">ETA</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">77</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-678"></a>  <span class="k">ELSE</span>
-<a name="ln-679"></a><span class="k">    CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-680"></a>      <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">ETA</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="n">METAPAR</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-681"></a>  <span class="k">END IF</span>
-<a name="ln-682"></a>
-<a name="ln-683"></a><span class="k">  CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">T</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">130</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-684"></a>
-<a name="ln-685"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">PS</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="mi">1</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">134</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-686"></a>
-<a name="ln-687"></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="mi">1</span><span class="p">),</span><span class="s2">&quot;levelType&quot;</span><span class="p">,</span><span class="s2">&quot;ml&quot;</span><span class="p">)</span>
-<a name="ln-688"></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="mi">1</span><span class="p">),</span><span class="s2">&quot;typeOfLevel&quot;</span><span class="p">,</span><span class="s2">&quot;hybrid&quot;</span><span class="p">)</span>
-<a name="ln-689"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">QA</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">133</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-690"></a>
+<a name="ln-668"></a><span class="c">! open output file</span>
+<a name="ln-669"></a>  <span class="k">call </span><span class="n">grib_open_file</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="s1">&#39;fort.15&#39;</span><span class="p">,</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
+<a name="ln-670"></a>
+<a name="ln-671"></a><span class="c">! we use temperature on lat/lon on model levels as template for model level data</span>
+<a name="ln-672"></a>  <span class="n">LUNIT2</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-673"></a>  <span class="k">CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="s1">&#39;fort.11&#39;</span><span class="p">,</span><span class="s1">&#39;R&#39;</span><span class="p">)</span>
+<a name="ln-674"></a>  <span class="k">CALL </span><span class="n">GRIB_NEW_FROM_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">IRET</span><span class="p">)</span>
+<a name="ln-675"></a>  <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">)</span>
+<a name="ln-676"></a>
+<a name="ln-677"></a>
+<a name="ln-678"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-679"></a>    <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">UV</span><span class="p">(:,:,</span><span class="mi">1</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">131</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-680"></a>
+<a name="ln-681"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-682"></a>    <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">UV</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">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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">132</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-683"></a>
+<a name="ln-684"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MDPDETA</span> <span class="p">.</span><span class="n">ne</span><span class="p">.</span> <span class="mi">1</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">MGAUSS</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">0</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">META</span> <span class="p">.</span><span class="n">eq</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-685"></a><span class="k">    CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-686"></a>      <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">ETA</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">77</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-687"></a>  <span class="k">ELSE</span>
+<a name="ln-688"></a><span class="k">    CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-689"></a>      <span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">ETA</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="n">METAPAR</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-690"></a>  <span class="k">END IF</span>
 <a name="ln-691"></a>
-<a name="ln-692"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGA</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-693"></a><span class="k">    CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="s1">&#39;fort.25&#39;</span><span class="p">,</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
-<a name="ln-694"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span>  <span class="p">&amp;</span> 
-<a name="ln-695"></a>      <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">OMR</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">135</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-696"></a>
-<a name="ln-697"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-698"></a><span class="k">      CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">DPSDT</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="mi">1</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">158</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-699"></a>      <span class="n">OM</span><span class="o">=</span><span class="n">OM</span><span class="o">-</span><span class="n">OMR</span>
-<a name="ln-700"></a>      <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-701"></a>        <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">OM</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">001</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-702"></a>      <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">)</span>
-<a name="ln-703"></a>    <span class="k">END IF</span>
-<a name="ln-704"></a><span class="k">  END IF</span>
+<a name="ln-692"></a><span class="k">  CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">T</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">130</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-693"></a>
+<a name="ln-694"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">PS</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="mi">1</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">134</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-695"></a>
+<a name="ln-696"></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="mi">1</span><span class="p">),</span><span class="s2">&quot;levelType&quot;</span><span class="p">,</span><span class="s2">&quot;ml&quot;</span><span class="p">)</span>
+<a name="ln-697"></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="mi">1</span><span class="p">),</span><span class="s2">&quot;typeOfLevel&quot;</span><span class="p">,</span><span class="s2">&quot;hybrid&quot;</span><span class="p">)</span>
+<a name="ln-698"></a>  <span class="k">CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">QA</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">133</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-699"></a>
+<a name="ln-700"></a>
+<a name="ln-701"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGA</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-702"></a><span class="k">    CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="s1">&#39;fort.25&#39;</span><span class="p">,</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
+<a name="ln-703"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span>  <span class="p">&amp;</span> 
+<a name="ln-704"></a>      <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">OMR</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">135</span><span class="o">/</span><span class="p">))</span>
 <a name="ln-705"></a>
-<a name="ln-706"></a><span class="k">  IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">METADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-707"></a><span class="k">    CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="s1">&#39;fort.26&#39;</span><span class="p">,</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
-<a name="ln-708"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-709"></a>      <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">ETAR</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">135</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-710"></a><span class="c">!        IF (MOMEGADIFF .EQ. 1) THEN</span>
-<a name="ln-711"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">DPSDT</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="mi">1</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">158</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-712"></a>    <span class="n">OM</span><span class="o">=</span><span class="n">ETA</span><span class="o">-</span><span class="n">ETAR</span>
-<a name="ln-713"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
-<a name="ln-714"></a>      <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">OM</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">001</span><span class="o">/</span><span class="p">))</span>
-<a name="ln-715"></a>    <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">)</span>
-<a name="ln-716"></a><span class="c">!        END IF</span>
-<a name="ln-717"></a>  <span class="k">END IF</span>
-<a name="ln-718"></a>
-<a name="ln-719"></a><span class="k">  CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">)</span>
-<a name="ln-720"></a>
-<a name="ln-721"></a><span class="mi">2000</span> <span class="k">STOP</span> <span class="s1">&#39;SUCCESSFULLY FINISHED calc_etadot: CONGRATULATIONS&#39;</span>
-<a name="ln-722"></a><span class="mi">3000</span> <span class="k">STOP</span> <span class="s1">&#39;ROUTINE calc_etadot: ERROR&#39;</span>
-<a name="ln-723"></a><span class="mi">9999</span> <span class="k">stop</span> <span class="s1">&#39;ROUTINE calc_etadot: ERROR&#39;</span>
-<a name="ln-724"></a>
-<a name="ln-725"></a><span class="k">END</span>
-<a name="ln-726"></a>
-<a name="ln-727"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-728"></a><span class="kt">INTEGER </span><span class="k">FUNCTION </span><span class="n">IA</span> <span class="p">(</span><span class="n">FIELD1</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">G</span><span class="p">)</span>
+<a name="ln-706"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MOMEGADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-707"></a><span class="k">      CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">DPSDT</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="mi">1</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">158</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-708"></a>      <span class="n">OM</span><span class="o">=</span><span class="n">OM</span><span class="o">-</span><span class="n">OMR</span>
+<a name="ln-709"></a>      <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-710"></a>        <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">OM</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">001</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-711"></a>      <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">)</span>
+<a name="ln-712"></a>    <span class="k">END IF</span>
+<a name="ln-713"></a><span class="k">  END IF</span>
+<a name="ln-714"></a>
+<a name="ln-715"></a><span class="k">  IF</span> <span class="p">(</span><span class="n">META</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span> <span class="p">.</span><span class="nb">AND</span><span class="p">.</span> <span class="n">METADIFF</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">1</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-716"></a><span class="k">    CALL </span><span class="n">GRIB_OPEN_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="s1">&#39;fort.26&#39;</span><span class="p">,</span><span class="s1">&#39;w&#39;</span><span class="p">)</span>
+<a name="ln-717"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-718"></a>      <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">ETAR</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">135</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-719"></a><span class="c">!        IF (MOMEGADIFF .EQ. 1) THEN</span>
+<a name="ln-720"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">DPSDT</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="mi">1</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">158</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-721"></a>    <span class="n">OM</span><span class="o">=</span><span class="n">ETA</span><span class="o">-</span><span class="n">ETAR</span>
+<a name="ln-722"></a>    <span class="k">CALL </span><span class="n">WRITELATLON</span> <span class="p">&amp;</span>
+<a name="ln-723"></a>      <span class="p">(</span><span class="n">LUNIT2</span><span class="p">,</span><span class="n">IGRIB</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="n">OGRIB</span><span class="p">,</span><span class="n">OM</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">MLEVELIST</span><span class="p">,</span><span class="mi">1</span><span class="p">,(</span><span class="o">/</span><span class="mi">001</span><span class="o">/</span><span class="p">))</span>
+<a name="ln-724"></a>    <span class="k">CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT2</span><span class="p">)</span>
+<a name="ln-725"></a><span class="c">!        END IF</span>
+<a name="ln-726"></a>  <span class="k">END IF</span>
+<a name="ln-727"></a>
+<a name="ln-728"></a><span class="k">  CALL </span><span class="n">GRIB_CLOSE_FILE</span><span class="p">(</span><span class="n">LUNIT</span><span class="p">)</span>
 <a name="ln-729"></a>
-<a name="ln-730"></a>
-<a name="ln-731"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-732"></a><span class="c">!! Calculate something that is roughly log10( maxval(field1)/g ) [PS]           </span>
-<a name="ln-733"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-734"></a>
+<a name="ln-730"></a><span class="mi">2000</span> <span class="k">STOP</span> <span class="s1">&#39;SUCCESSFULLY FINISHED calc_etadot: CONGRATULATIONS&#39;</span>
+<a name="ln-731"></a><span class="mi">3000</span> <span class="k">STOP</span> <span class="s1">&#39;ROUTINE calc_etadot: ERROR&#39;</span>
+<a name="ln-732"></a><span class="mi">9999</span> <span class="k">stop</span> <span class="s1">&#39;ROUTINE calc_etadot: ERROR&#39;</span>
+<a name="ln-733"></a>
+<a name="ln-734"></a><span class="k">END</span>
 <a name="ln-735"></a>
-<a name="ln-736"></a>  <span class="k">IMPLICIT NONE</span>
-<a name="ln-737"></a>
-<a name="ln-738"></a><span class="k">  </span><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">K</span>
-<a name="ln-739"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span>
-<a name="ln-740"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">FIELD1</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-741"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">G</span>
-<a name="ln-742"></a>  <span class="kt">REAL</span>  <span class="kd">::</span> <span class="n">RMIN</span><span class="p">,</span><span class="n">RMAX</span><span class="p">,</span><span class="n">XMAX</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">A1</span><span class="p">,</span><span class="n">A2</span>
+<a name="ln-736"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-737"></a><span class="kt">INTEGER </span><span class="k">FUNCTION </span><span class="n">IA</span> <span class="p">(</span><span class="n">FIELD1</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">G</span><span class="p">)</span>
+<a name="ln-738"></a>
+<a name="ln-739"></a>
+<a name="ln-740"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-741"></a><span class="c">!! Calculate something that is roughly log10( maxval(field1)/g ) [PS]           </span>
+<a name="ln-742"></a><span class="c">!------------------------------------------------------------------</span>
 <a name="ln-743"></a>
-<a name="ln-744"></a>  <span class="n">RMAX</span><span class="o">=</span><span class="n">FIELD1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-745"></a>  <span class="n">RMIN</span><span class="o">=</span><span class="n">FIELD1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-744"></a>
+<a name="ln-745"></a>  <span class="k">IMPLICIT NONE</span>
 <a name="ln-746"></a>
-<a name="ln-747"></a>  <span class="k">DO </span><span class="mi">100</span> <span class="n">K</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
-<a name="ln-748"></a>    <span class="k">DO </span><span class="mi">100</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NJ</span>
-<a name="ln-749"></a>      <span class="k">DO </span><span class="mi">100</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NI</span>
-<a name="ln-750"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">FIELD1</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="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">RMAX</span><span class="p">)</span> <span class="n">RMAX</span><span class="o">=</span><span class="n">FIELD1</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>
-<a name="ln-751"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">FIELD1</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="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">RMIN</span><span class="p">)</span> <span class="n">RMIN</span><span class="o">=</span><span class="n">FIELD1</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>
-<a name="ln-752"></a><span class="mi">100</span> <span class="k">CONTINUE</span>
-<a name="ln-753"></a>
-<a name="ln-754"></a><span class="k">  IF</span> <span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="n">RMIN</span><span class="p">)</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">RMAX</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="nb">ABS</span><span class="p">(</span><span class="n">RMIN</span><span class="p">)</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">RMAX</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-755"></a><span class="k">    </span><span class="n">XMAX</span><span class="o">=</span><span class="nb">ABS</span><span class="p">(</span><span class="n">RMIN</span><span class="p">)</span>
-<a name="ln-756"></a>  <span class="k">ELSE</span>
-<a name="ln-757"></a><span class="k">    </span><span class="n">XMAX</span><span class="o">=</span><span class="n">RMAX</span>
-<a name="ln-758"></a>  <span class="k">END IF</span>
-<a name="ln-759"></a>
-<a name="ln-760"></a><span class="k">  IF</span> <span class="p">(</span><span class="n">XMAX</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-761"></a><span class="k">    </span><span class="n">IA</span> <span class="o">=</span> <span class="mi">0</span>
-<a name="ln-762"></a>    <span class="k">RETURN</span>
-<a name="ln-763"></a><span class="k">  END IF</span>
-<a name="ln-764"></a>
-<a name="ln-765"></a><span class="k">  </span><span class="n">A1</span><span class="o">=</span><span class="n">LOG10</span><span class="p">(</span> <span class="p">(</span><span class="n">G</span><span class="o">/</span><span class="mi">1</span><span class="mf">0.d0</span><span class="p">)</span><span class="o">/</span><span class="n">XMAX</span> <span class="p">)</span>
-<a name="ln-766"></a>  <span class="n">A2</span><span class="o">=</span><span class="n">LOG10</span><span class="p">(</span> <span class="n">G</span><span class="o">/</span><span class="n">XMAX</span> <span class="p">)</span>
-<a name="ln-767"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">A1</span> <span class="p">.</span><span class="n">gt</span><span class="p">.</span> <span class="n">A2</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-768"></a><span class="k">    </span><span class="n">A</span><span class="o">=</span><span class="n">A2</span>
-<a name="ln-769"></a>  <span class="k">ELSE</span>
-<a name="ln-770"></a><span class="k">    </span><span class="n">A</span><span class="o">=</span><span class="n">A1</span>
-<a name="ln-771"></a>  <span class="k">END IF</span>
-<a name="ln-772"></a>
-<a name="ln-773"></a><span class="k">  IF</span> <span class="p">(</span><span class="n">A</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="n">IA</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
-<a name="ln-774"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">A</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="n">IA</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="mf">1.0</span><span class="p">)</span>
-<a name="ln-775"></a>
-<a name="ln-776"></a>  <span class="k">RETURN</span>
-<a name="ln-777"></a>
-<a name="ln-778"></a><span class="k">END</span>
-<a name="ln-779"></a>
-<a name="ln-780"></a><span class="k">SUBROUTINE </span><span class="n">STATIS</span> <span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">PHI</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-747"></a><span class="k">  </span><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">K</span>
+<a name="ln-748"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span>
+<a name="ln-749"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">FIELD1</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-750"></a>  <span class="kt">REAL</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">G</span>
+<a name="ln-751"></a>  <span class="kt">REAL</span>  <span class="kd">::</span> <span class="n">RMIN</span><span class="p">,</span><span class="n">RMAX</span><span class="p">,</span><span class="n">XMAX</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">A1</span><span class="p">,</span><span class="n">A2</span>
+<a name="ln-752"></a>
+<a name="ln-753"></a>  <span class="n">RMAX</span><span class="o">=</span><span class="n">FIELD1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-754"></a>  <span class="n">RMIN</span><span class="o">=</span><span class="n">FIELD1</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-755"></a>
+<a name="ln-756"></a>  <span class="k">DO </span><span class="mi">100</span> <span class="n">K</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
+<a name="ln-757"></a>    <span class="k">DO </span><span class="mi">100</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NJ</span>
+<a name="ln-758"></a>      <span class="k">DO </span><span class="mi">100</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NI</span>
+<a name="ln-759"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">FIELD1</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="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">RMAX</span><span class="p">)</span> <span class="n">RMAX</span><span class="o">=</span><span class="n">FIELD1</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>
+<a name="ln-760"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">FIELD1</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="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">RMIN</span><span class="p">)</span> <span class="n">RMIN</span><span class="o">=</span><span class="n">FIELD1</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>
+<a name="ln-761"></a><span class="mi">100</span> <span class="k">CONTINUE</span>
+<a name="ln-762"></a>
+<a name="ln-763"></a><span class="k">  IF</span> <span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="n">RMIN</span><span class="p">)</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">RMAX</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="nb">ABS</span><span class="p">(</span><span class="n">RMIN</span><span class="p">)</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">RMAX</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-764"></a><span class="k">    </span><span class="n">XMAX</span><span class="o">=</span><span class="nb">ABS</span><span class="p">(</span><span class="n">RMIN</span><span class="p">)</span>
+<a name="ln-765"></a>  <span class="k">ELSE</span>
+<a name="ln-766"></a><span class="k">    </span><span class="n">XMAX</span><span class="o">=</span><span class="n">RMAX</span>
+<a name="ln-767"></a>  <span class="k">END IF</span>
+<a name="ln-768"></a>
+<a name="ln-769"></a><span class="k">  IF</span> <span class="p">(</span><span class="n">XMAX</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-770"></a><span class="k">    </span><span class="n">IA</span> <span class="o">=</span> <span class="mi">0</span>
+<a name="ln-771"></a>    <span class="k">RETURN</span>
+<a name="ln-772"></a><span class="k">  END IF</span>
+<a name="ln-773"></a>
+<a name="ln-774"></a><span class="k">  </span><span class="n">A1</span><span class="o">=</span><span class="n">LOG10</span><span class="p">(</span> <span class="p">(</span><span class="n">G</span><span class="o">/</span><span class="mi">1</span><span class="mf">0.d0</span><span class="p">)</span><span class="o">/</span><span class="n">XMAX</span> <span class="p">)</span>
+<a name="ln-775"></a>  <span class="n">A2</span><span class="o">=</span><span class="n">LOG10</span><span class="p">(</span> <span class="n">G</span><span class="o">/</span><span class="n">XMAX</span> <span class="p">)</span>
+<a name="ln-776"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">A1</span> <span class="p">.</span><span class="n">gt</span><span class="p">.</span> <span class="n">A2</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-777"></a><span class="k">    </span><span class="n">A</span><span class="o">=</span><span class="n">A2</span>
+<a name="ln-778"></a>  <span class="k">ELSE</span>
+<a name="ln-779"></a><span class="k">    </span><span class="n">A</span><span class="o">=</span><span class="n">A1</span>
+<a name="ln-780"></a>  <span class="k">END IF</span>
 <a name="ln-781"></a>
-<a name="ln-782"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-783"></a><span class="c">!! calculate mean, rms, stdev</span>
-<a name="ln-784"></a><span class="c">!------------------------------------------------------------------</span>
-<a name="ln-785"></a>
-<a name="ln-786"></a>  <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-787"></a>
-<a name="ln-788"></a>  <span class="kt">REAL </span><span class="n">PHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">SIG</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">P</span>
-<a name="ln-789"></a>
-<a name="ln-790"></a>  <span class="n">N</span><span class="o">=</span><span class="n">NI</span><span class="o">*</span><span class="n">NJ</span><span class="o">*</span><span class="n">NK</span>
-<a name="ln-791"></a>
-<a name="ln-792"></a>  <span class="n">RMS</span><span class="o">=</span><span class="mf">0.</span>
-<a name="ln-793"></a>  <span class="n">MW</span><span class="o">=</span><span class="mf">0.</span>
-<a name="ln-794"></a><span class="c">! 10.86 sinstead of 11.04 sec</span>
-<a name="ln-795"></a>      <span class="k">DO </span><span class="mi">10</span> <span class="n">K</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
-<a name="ln-796"></a>    <span class="k">DO </span><span class="mi">10</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NJ</span>
-<a name="ln-797"></a>  <span class="k">DO </span><span class="mi">10</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NI</span>
-<a name="ln-798"></a>        <span class="n">P</span><span class="o">=</span><span class="n">PHI</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>
-<a name="ln-799"></a>        <span class="n">RMS</span><span class="o">=</span><span class="n">RMS</span><span class="o">+</span><span class="n">P</span><span class="o">*</span><span class="n">P</span>
-<a name="ln-800"></a>        <span class="n">MW</span><span class="o">=</span><span class="n">MW</span><span class="o">+</span><span class="n">P</span>
-<a name="ln-801"></a><span class="mi">10</span> <span class="k">CONTINUE</span>
-<a name="ln-802"></a>
-<a name="ln-803"></a><span class="k">  </span><span class="n">RMS</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="n">RMS</span><span class="o">/</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-804"></a>  <span class="n">MW</span><span class="o">=</span><span class="n">MW</span><span class="o">/</span><span class="n">N</span>
-<a name="ln-805"></a>
-<a name="ln-806"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">RMS</span><span class="o">*</span><span class="n">RMS</span><span class="o">-</span><span class="n">MW</span><span class="o">*</span><span class="n">MW</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mf">0.</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-807"></a><span class="k">    </span><span class="n">SIG</span><span class="o">=</span><span class="mf">0.0</span>
-<a name="ln-808"></a>  <span class="k">ELSE</span>
-<a name="ln-809"></a><span class="k">    </span><span class="n">SIG</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="n">RMS</span><span class="o">*</span><span class="n">RMS</span><span class="o">-</span><span class="n">MW</span><span class="o">*</span><span class="n">MW</span><span class="p">)</span>
-<a name="ln-810"></a>  <span class="k">END IF</span>
+<a name="ln-782"></a><span class="k">  IF</span> <span class="p">(</span><span class="n">A</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="n">IA</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
+<a name="ln-783"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">A</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="n">IA</span><span class="o">=</span><span class="nb">INT</span><span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="mf">1.0</span><span class="p">)</span>
+<a name="ln-784"></a>
+<a name="ln-785"></a>  <span class="k">RETURN</span>
+<a name="ln-786"></a>
+<a name="ln-787"></a><span class="k">END</span>
+<a name="ln-788"></a>
+<a name="ln-789"></a><span class="k">SUBROUTINE </span><span class="n">STATIS</span> <span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">PHI</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">SIG</span><span class="p">)</span>
+<a name="ln-790"></a>
+<a name="ln-791"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-792"></a><span class="c">!! calculate mean, rms, stdev</span>
+<a name="ln-793"></a><span class="c">!------------------------------------------------------------------</span>
+<a name="ln-794"></a>
+<a name="ln-795"></a>  <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-796"></a>
+<a name="ln-797"></a>  <span class="kt">REAL </span><span class="n">PHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">SIG</span><span class="p">,</span><span class="n">MW</span><span class="p">,</span><span class="n">RMS</span><span class="p">,</span><span class="n">P</span>
+<a name="ln-798"></a>
+<a name="ln-799"></a>  <span class="n">N</span><span class="o">=</span><span class="n">NI</span><span class="o">*</span><span class="n">NJ</span><span class="o">*</span><span class="n">NK</span>
+<a name="ln-800"></a>
+<a name="ln-801"></a>  <span class="n">RMS</span><span class="o">=</span><span class="mf">0.</span>
+<a name="ln-802"></a>  <span class="n">MW</span><span class="o">=</span><span class="mf">0.</span>
+<a name="ln-803"></a><span class="c">! 10.86 sinstead of 11.04 sec</span>
+<a name="ln-804"></a>      <span class="k">DO </span><span class="mi">10</span> <span class="n">K</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
+<a name="ln-805"></a>    <span class="k">DO </span><span class="mi">10</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NJ</span>
+<a name="ln-806"></a>  <span class="k">DO </span><span class="mi">10</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">NI</span>
+<a name="ln-807"></a>        <span class="n">P</span><span class="o">=</span><span class="n">PHI</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>
+<a name="ln-808"></a>        <span class="n">RMS</span><span class="o">=</span><span class="n">RMS</span><span class="o">+</span><span class="n">P</span><span class="o">*</span><span class="n">P</span>
+<a name="ln-809"></a>        <span class="n">MW</span><span class="o">=</span><span class="n">MW</span><span class="o">+</span><span class="n">P</span>
+<a name="ln-810"></a><span class="mi">10</span> <span class="k">CONTINUE</span>
 <a name="ln-811"></a>
-<a name="ln-812"></a><span class="k">  RETURN</span>
-<a name="ln-813"></a>
-<a name="ln-814"></a><span class="k">END</span>
+<a name="ln-812"></a><span class="k">  </span><span class="n">RMS</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="n">RMS</span><span class="o">/</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-813"></a>  <span class="n">MW</span><span class="o">=</span><span class="n">MW</span><span class="o">/</span><span class="n">N</span>
+<a name="ln-814"></a>
+<a name="ln-815"></a>  <span class="k">IF</span> <span class="p">(</span><span class="n">RMS</span><span class="o">*</span><span class="n">RMS</span><span class="o">-</span><span class="n">MW</span><span class="o">*</span><span class="n">MW</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mf">0.</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-816"></a><span class="k">    </span><span class="n">SIG</span><span class="o">=</span><span class="mf">0.0</span>
+<a name="ln-817"></a>  <span class="k">ELSE</span>
+<a name="ln-818"></a><span class="k">    </span><span class="n">SIG</span><span class="o">=</span><span class="nb">SQRT</span><span class="p">(</span><span class="n">RMS</span><span class="o">*</span><span class="n">RMS</span><span class="o">-</span><span class="n">MW</span><span class="o">*</span><span class="n">MW</span><span class="p">)</span>
+<a name="ln-819"></a>  <span class="k">END IF</span>
+<a name="ln-820"></a>
+<a name="ln-821"></a><span class="k">  RETURN</span>
+<a name="ln-822"></a>
+<a name="ln-823"></a><span class="k">END</span>
 </pre></div>
 
     </section>
@@ -1255,8 +1264,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/sourcefile/ftrafo.f90.html b/Documentation/html/Documentation/Api/Fortran/sourcefile/ftrafo.f90.html
index 56779aa64d2282a0b032bceba792f1db63708193..201dd852a79188714355508d917b21e8179f3dc0 100644
--- a/Documentation/html/Documentation/Api/Fortran/sourcefile/ftrafo.f90.html
+++ b/Documentation/html/Documentation/Api/Fortran/sourcefile/ftrafo.f90.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -126,7 +126,7 @@
      <li><i class="fa fa-list-ol"></i>
        <a data-toggle="tooltip"
     data-placement="bottom" data-html="true"
-    title="25.4% of total for source files.">359 statements</a>
+    title="25.7% of total for source files.">359 statements</a>
      </li> 
      
      
@@ -405,389 +405,389 @@
       <h2><span class="anchor" id="src"></span>Source Code</h2>
     <div class="hl"><pre><span></span><a name="ln-1"></a><span class="k">MODULE </span><span class="n">FTRAFO</span>
 <a name="ln-2"></a>
-<a name="ln-3"></a><span class="c">!! Implementation of the spectral transformation using reduced the Gaussian grid</span>
+<a name="ln-3"></a><span class="c">!! Implementation of the spectral transformation using the reduced Gaussian grid</span>
 <a name="ln-4"></a>
 <a name="ln-5"></a><span class="k">CONTAINS</span>
 <a name="ln-6"></a>
-<a name="ln-7"></a><span class="c">! Implementierung der spektralen Transformationsmethode unter Verwendung</span>
-<a name="ln-8"></a><span class="c">! des reduzierten Gauss&#39;schen Gitters</span>
-<a name="ln-9"></a>
-<a name="ln-10"></a>
-<a name="ln-11"></a>  <span class="k">SUBROUTINE </span><span class="n">VDTOUV</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-12"></a>
-<a name="ln-13"></a><span class="c">!! Berechnung der scale winds aus Vorticity und Divergenz</span>
-<a name="ln-14"></a><span class="c">!! uebergibt man in XMN die Divergenz, so wird der divergente Anteil des</span>
-<a name="ln-15"></a><span class="c">!! Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so</span>
-<a name="ln-16"></a><span class="c">!! erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).</span>
-<a name="ln-17"></a><span class="c">!! Summiert man beide, erhaelt man den gesamten Scale wind</span>
-<a name="ln-18"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
-<a name="ln-19"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
-<a name="ln-20"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
-<a name="ln-21"></a><span class="c">! MNAUF gibt die spektrale Aufloesung an,</span>
-<a name="ln-22"></a><span class="c">! NI = Anzahl der Gauss&#39;schen Gitterpunkte pro Flaeche</span>
-<a name="ln-23"></a><span class="c">! NJ = Anzahl der Gauss&#39;schen Breiten,</span>
-<a name="ln-24"></a><span class="c">! NK = Anzahl der Niveaus</span>
-<a name="ln-25"></a>
-<a name="ln-26"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
-<a name="ln-27"></a>
-<a name="ln-28"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-29"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">(</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-30"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">NJ</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
-<a name="ln-31"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
-<a name="ln-32"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-33"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-34"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-35"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-36"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span>
-<a name="ln-37"></a>    <span class="kt">REAL </span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
-<a name="ln-38"></a>
-<a name="ln-39"></a>    <span class="n">GGIND</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-40"></a>    <span class="k">DO </span><span class="mi">4</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-41"></a>      <span class="n">GGIND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="n">GGIND</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-42"></a><span class="mi">4</span>   <span class="k">CONTINUE</span>
-<a name="ln-43"></a>
-<a name="ln-44"></a><span class="c">!$OMP PARALLEL DO SCHEDULE(DYNAMIC)</span>
-<a name="ln-45"></a>    <span class="k">DO </span><span class="mi">5</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-46"></a>      <span class="k">CALL </span><span class="n">VDUVSUB</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">GGIND</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-47"></a><span class="mi">5</span>   <span class="k">CONTINUE</span>
-<a name="ln-48"></a><span class="c">!$OMP END PARALLEL DO</span>
-<a name="ln-49"></a>
-<a name="ln-50"></a>    <span class="k">RETURN</span>
-<a name="ln-51"></a>
-<a name="ln-52"></a><span class="k">  END SUBROUTINE </span><span class="n">VDTOUV</span>
-<a name="ln-53"></a>
-<a name="ln-54"></a>  <span class="k">SUBROUTINE </span><span class="n">VDUVSUB</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-55"></a>
-<a name="ln-56"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
-<a name="ln-57"></a>
-<a name="ln-58"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-59"></a>
-<a name="ln-60"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">LLH</span><span class="p">,</span><span class="n">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LLHS</span>
-<a name="ln-61"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">NJ</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
-<a name="ln-62"></a>    <span class="kt">REAL </span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-63"></a>    <span class="kt">REAL </span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-64"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
-<a name="ln-65"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-66"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-67"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-68"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-69"></a>    <span class="kt">REAL </span><span class="n">ERAD</span><span class="p">,</span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span>
-<a name="ln-70"></a>    <span class="kt">REAL </span><span class="n">FAC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MNAUF</span><span class="p">),</span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
-<a name="ln-71"></a>
-<a name="ln-72"></a>    <span class="n">ERAD</span> <span class="o">=</span> <span class="mi">636747</span><span class="mf">0.D0</span>
-<a name="ln-73"></a>
-<a name="ln-74"></a>    <span class="n">FAC</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-75"></a>    <span class="k">DO </span><span class="mi">12</span> <span class="n">N</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-76"></a>      <span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span><span class="o">=-</span><span class="n">ERAD</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">N</span><span class="p">)</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-77"></a><span class="mi">12</span>  <span class="k">CONTINUE</span>
-<a name="ln-78"></a>
-<a name="ln-79"></a><span class="k">    CALL </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">P</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">H</span><span class="p">)</span>
-<a name="ln-80"></a>    <span class="k">DO </span><span class="mi">3</span> <span class="n">K</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
-<a name="ln-81"></a>      <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-82"></a>      <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-83"></a>      <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-84"></a>      <span class="k">DO </span><span class="mi">2</span> <span class="n">M</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-85"></a>        <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-86"></a>        <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-87"></a>        <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-88"></a>        <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-89"></a>        <span class="n">MUSCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-90"></a>        <span class="n">MUSCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-91"></a>        <span class="n">MUACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-92"></a>        <span class="n">MUACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-93"></a>        <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
-<a name="ln-94"></a>        <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
-<a name="ln-95"></a>        <span class="n">LLHS</span><span class="o">=</span><span class="n">LLH</span>
-<a name="ln-96"></a>        <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span> <span class="k">THEN</span>
-<a name="ln-97"></a><span class="k">          DO </span><span class="mi">1</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-98"></a>            <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-99"></a>            <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-100"></a>            <span class="n">SCR</span> <span class="o">=</span><span class="n">SCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-101"></a>            <span class="n">SCI</span> <span class="o">=</span><span class="n">SCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-102"></a>            <span class="n">MUACR</span> <span class="o">=</span><span class="n">MUACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-103"></a>            <span class="n">MUACI</span> <span class="o">=</span><span class="n">MUACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-104"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-105"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-106"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-107"></a><span class="mi">1</span>         <span class="k">CONTINUE</span>
-<a name="ln-108"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-109"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-110"></a>          <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-111"></a>          <span class="k">DO </span><span class="mi">11</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-112"></a>            <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-113"></a>            <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-114"></a>            <span class="n">ACR</span> <span class="o">=</span><span class="n">ACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-115"></a>            <span class="n">ACI</span> <span class="o">=</span><span class="n">ACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-116"></a>            <span class="n">MUSCR</span> <span class="o">=</span><span class="n">MUSCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-117"></a>            <span class="n">MUSCI</span> <span class="o">=</span><span class="n">MUSCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-118"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-119"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-120"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-121"></a><span class="mi">11</span>        <span class="k">CONTINUE</span>
-<a name="ln-122"></a><span class="k">        END IF</span>
-<a name="ln-123"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-124"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
-<a name="ln-125"></a>        <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-126"></a>
-<a name="ln-127"></a>        <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">-</span><span class="n">ACI</span><span class="p">)</span>
-<a name="ln-128"></a>        <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span><span class="p">)</span>
-<a name="ln-129"></a>        <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">+</span><span class="n">ACI</span><span class="p">)</span>
-<a name="ln-130"></a>        <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span><span class="p">)</span>
-<a name="ln-131"></a>
-<a name="ln-132"></a>        <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">-</span><span class="n">MUACR</span><span class="p">)</span>
-<a name="ln-133"></a>        <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">-</span><span class="n">MUACI</span><span class="p">)</span>
-<a name="ln-134"></a>        <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">+</span><span class="n">MUACR</span><span class="p">)</span>
-<a name="ln-135"></a>        <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">+</span><span class="n">MUACI</span><span class="p">)</span>
-<a name="ln-136"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
-<a name="ln-137"></a>
-<a name="ln-138"></a><span class="k">      CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">VFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-139"></a>      <span class="n">XLAM</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-140"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">UFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-141"></a>      <span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-142"></a>
-<a name="ln-143"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MVFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-144"></a>      <span class="n">XPHI</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-145"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MUFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-146"></a>      <span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-147"></a>
-<a name="ln-148"></a><span class="mi">3</span>   <span class="k">CONTINUE</span>
-<a name="ln-149"></a>
-<a name="ln-150"></a><span class="k">    RETURN</span>
+<a name="ln-7"></a><span class="k">  SUBROUTINE </span><span class="n">VDTOUV</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-8"></a>
+<a name="ln-9"></a><span class="c">!! Calculates scale winds from vorticity and divergence.</span>
+<a name="ln-10"></a><span class="c">!! If in XMN the divergence is passed, then the divergent part of the wind</span>
+<a name="ln-11"></a><span class="c">!! (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the </span>
+<a name="ln-12"></a><span class="c">!! rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.</span>
+<a name="ln-13"></a><span class="c">!! Summing both, one obtains the whole scale wind.</span>
+<a name="ln-14"></a>
+<a name="ln-15"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
+<a name="ln-16"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
+<a name="ln-17"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
+<a name="ln-18"></a><span class="c">! MNAUF gibt die spektrale Aufloesung an,</span>
+<a name="ln-19"></a><span class="c">! NI = Anzahl der Gauss&#39;schen Gitterpunkte pro Flaeche</span>
+<a name="ln-20"></a><span class="c">! NJ = Anzahl der Gauss&#39;schen Breiten,</span>
+<a name="ln-21"></a><span class="c">! NK = Anzahl der Niveaus</span>
+<a name="ln-22"></a>
+<a name="ln-23"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
+<a name="ln-24"></a>
+<a name="ln-25"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-26"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">(</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-27"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">NJ</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
+<a name="ln-28"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
+<a name="ln-29"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-30"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-31"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-32"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-33"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span>
+<a name="ln-34"></a>    <span class="kt">REAL </span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
+<a name="ln-35"></a>
+<a name="ln-36"></a>    <span class="n">GGIND</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-37"></a>    <span class="k">DO </span><span class="mi">4</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-38"></a>      <span class="n">GGIND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="n">GGIND</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-39"></a><span class="mi">4</span>   <span class="k">CONTINUE</span>
+<a name="ln-40"></a>
+<a name="ln-41"></a><span class="c">!$OMP PARALLEL DO SCHEDULE(DYNAMIC)</span>
+<a name="ln-42"></a>    <span class="k">DO </span><span class="mi">5</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-43"></a>      <span class="k">CALL </span><span class="n">VDUVSUB</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">GGIND</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-44"></a><span class="mi">5</span>   <span class="k">CONTINUE</span>
+<a name="ln-45"></a><span class="c">!$OMP END PARALLEL DO</span>
+<a name="ln-46"></a>
+<a name="ln-47"></a>    <span class="k">RETURN</span>
+<a name="ln-48"></a>
+<a name="ln-49"></a><span class="k">  END SUBROUTINE </span><span class="n">VDTOUV</span>
+<a name="ln-50"></a>
+<a name="ln-51"></a>  <span class="k">SUBROUTINE </span><span class="n">VDUVSUB</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-52"></a>
+<a name="ln-53"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
+<a name="ln-54"></a>
+<a name="ln-55"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-56"></a>
+<a name="ln-57"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">LLH</span><span class="p">,</span><span class="n">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LLHS</span>
+<a name="ln-58"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">NJ</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
+<a name="ln-59"></a>    <span class="kt">REAL </span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-60"></a>    <span class="kt">REAL </span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-61"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
+<a name="ln-62"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-63"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-64"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-65"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-66"></a>    <span class="kt">REAL </span><span class="n">ERAD</span><span class="p">,</span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span>
+<a name="ln-67"></a>    <span class="kt">REAL </span><span class="n">FAC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MNAUF</span><span class="p">),</span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
+<a name="ln-68"></a>
+<a name="ln-69"></a>    <span class="n">ERAD</span> <span class="o">=</span> <span class="mi">636747</span><span class="mf">0.D0</span>
+<a name="ln-70"></a>
+<a name="ln-71"></a>    <span class="n">FAC</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-72"></a>    <span class="k">DO </span><span class="mi">12</span> <span class="n">N</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-73"></a>      <span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span><span class="o">=-</span><span class="n">ERAD</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">N</span><span class="p">)</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-74"></a><span class="mi">12</span>  <span class="k">CONTINUE</span>
+<a name="ln-75"></a>
+<a name="ln-76"></a><span class="k">    CALL </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">P</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">H</span><span class="p">)</span>
+<a name="ln-77"></a>    <span class="k">DO </span><span class="mi">3</span> <span class="n">K</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
+<a name="ln-78"></a>      <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-79"></a>      <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-80"></a>      <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-81"></a>      <span class="k">DO </span><span class="mi">2</span> <span class="n">M</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-82"></a>        <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-83"></a>        <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-84"></a>        <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-85"></a>        <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-86"></a>        <span class="n">MUSCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-87"></a>        <span class="n">MUSCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-88"></a>        <span class="n">MUACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-89"></a>        <span class="n">MUACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-90"></a>        <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
+<a name="ln-91"></a>        <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
+<a name="ln-92"></a>        <span class="n">LLHS</span><span class="o">=</span><span class="n">LLH</span>
+<a name="ln-93"></a>        <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span> <span class="k">THEN</span>
+<a name="ln-94"></a><span class="k">          DO </span><span class="mi">1</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-95"></a>            <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-96"></a>            <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-97"></a>            <span class="n">SCR</span> <span class="o">=</span><span class="n">SCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-98"></a>            <span class="n">SCI</span> <span class="o">=</span><span class="n">SCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-99"></a>            <span class="n">MUACR</span> <span class="o">=</span><span class="n">MUACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-100"></a>            <span class="n">MUACI</span> <span class="o">=</span><span class="n">MUACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-101"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-102"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-103"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-104"></a><span class="mi">1</span>         <span class="k">CONTINUE</span>
+<a name="ln-105"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-106"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-107"></a>          <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-108"></a>          <span class="k">DO </span><span class="mi">11</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-109"></a>            <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-110"></a>            <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">FAC</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-111"></a>            <span class="n">ACR</span> <span class="o">=</span><span class="n">ACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-112"></a>            <span class="n">ACI</span> <span class="o">=</span><span class="n">ACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-113"></a>            <span class="n">MUSCR</span> <span class="o">=</span><span class="n">MUSCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-114"></a>            <span class="n">MUSCI</span> <span class="o">=</span><span class="n">MUSCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-115"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-116"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-117"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-118"></a><span class="mi">11</span>        <span class="k">CONTINUE</span>
+<a name="ln-119"></a><span class="k">        END IF</span>
+<a name="ln-120"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-121"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
+<a name="ln-122"></a>        <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-123"></a>
+<a name="ln-124"></a>        <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">-</span><span class="n">ACI</span><span class="p">)</span>
+<a name="ln-125"></a>        <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span><span class="p">)</span>
+<a name="ln-126"></a>        <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">+</span><span class="n">ACI</span><span class="p">)</span>
+<a name="ln-127"></a>        <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span><span class="p">)</span>
+<a name="ln-128"></a>
+<a name="ln-129"></a>        <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">-</span><span class="n">MUACR</span><span class="p">)</span>
+<a name="ln-130"></a>        <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">-</span><span class="n">MUACI</span><span class="p">)</span>
+<a name="ln-131"></a>        <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">+</span><span class="n">MUACR</span><span class="p">)</span>
+<a name="ln-132"></a>        <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">+</span><span class="n">MUACI</span><span class="p">)</span>
+<a name="ln-133"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
+<a name="ln-134"></a>
+<a name="ln-135"></a><span class="k">      CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">VFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-136"></a>      <span class="n">XLAM</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-137"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">UFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-138"></a>      <span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-139"></a>
+<a name="ln-140"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MVFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-141"></a>      <span class="n">XPHI</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-142"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MUFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-143"></a>      <span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-144"></a>
+<a name="ln-145"></a><span class="mi">3</span>   <span class="k">CONTINUE</span>
+<a name="ln-146"></a>
+<a name="ln-147"></a><span class="k">    RETURN</span>
+<a name="ln-148"></a>
+<a name="ln-149"></a><span class="k">  END SUBROUTINE </span><span class="n">VDUVSUB</span>
+<a name="ln-150"></a>
 <a name="ln-151"></a>
-<a name="ln-152"></a><span class="k">  END SUBROUTINE </span><span class="n">VDUVSUB</span>
+<a name="ln-152"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGRAD</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
 <a name="ln-153"></a>
-<a name="ln-154"></a>
-<a name="ln-155"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGRAD</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-156"></a>
-<a name="ln-157"></a><span class="c">!! Berechnung des Gradienten eines Skalars aus dem Feld des</span>
-<a name="ln-158"></a><span class="c">!! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der</span>
-<a name="ln-159"></a><span class="c">!! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss&#39;schen Gitter.</span>
-<a name="ln-160"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
-<a name="ln-161"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
-<a name="ln-162"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
-<a name="ln-163"></a><span class="c">! MNAUF gibt die spektrale Aufloesung an,</span>
-<a name="ln-164"></a><span class="c">! NI = Anzahl der Gauss&#39;schen Gitterpunkte,</span>
-<a name="ln-165"></a><span class="c">! NJ = Anzahl der Gauss&#39;schen Breiten,</span>
-<a name="ln-166"></a><span class="c">! NK = Anzahl der Niveaus</span>
+<a name="ln-154"></a><span class="c">!! Calculates the gradient of a scalar from the field of the scalar XMN</span>
+<a name="ln-155"></a><span class="c">!! in phase space. Returns fields of the componentens of the horizontal</span>
+<a name="ln-156"></a><span class="c">!! gradients XLAM,XPHI on the Gaussian grid.</span>
+<a name="ln-157"></a>
+<a name="ln-158"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
+<a name="ln-159"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
+<a name="ln-160"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
+<a name="ln-161"></a><span class="c">! MNAUF gibt die spektrale Aufloesung an,</span>
+<a name="ln-162"></a><span class="c">! NI = Anzahl der Gauss&#39;schen Gitterpunkte,</span>
+<a name="ln-163"></a><span class="c">! NJ = Anzahl der Gauss&#39;schen Breiten,</span>
+<a name="ln-164"></a><span class="c">! NK = Anzahl der Niveaus</span>
+<a name="ln-165"></a>
+<a name="ln-166"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
 <a name="ln-167"></a>
-<a name="ln-168"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
+<a name="ln-168"></a>    <span class="k">IMPLICIT NONE</span>
 <a name="ln-169"></a>
-<a name="ln-170"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-171"></a>
-<a name="ln-172"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">LLH</span><span class="p">,</span><span class="n">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LLHS</span>
-<a name="ln-173"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">NJ</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
-<a name="ln-174"></a>    <span class="kt">REAL </span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-175"></a>    <span class="kt">REAL </span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-176"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
-<a name="ln-177"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-178"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-179"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-180"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-181"></a>    <span class="kt">REAL </span><span class="n">ERAD</span>
-<a name="ln-182"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span><span class="p">,</span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
+<a name="ln-170"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">LLH</span><span class="p">,</span><span class="n">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LLHS</span>
+<a name="ln-171"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">NJ</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
+<a name="ln-172"></a>    <span class="kt">REAL </span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-173"></a>    <span class="kt">REAL </span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-174"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
+<a name="ln-175"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-176"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-177"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-178"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">NJ</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-179"></a>    <span class="kt">REAL </span><span class="n">ERAD</span>
+<a name="ln-180"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span><span class="p">,</span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
+<a name="ln-181"></a>
+<a name="ln-182"></a>    <span class="n">ERAD</span> <span class="o">=</span> <span class="mi">636747</span><span class="mf">0.0</span>
 <a name="ln-183"></a>
-<a name="ln-184"></a>    <span class="n">ERAD</span> <span class="o">=</span> <span class="mi">636747</span><span class="mf">0.0</span>
-<a name="ln-185"></a>
-<a name="ln-186"></a>    <span class="n">GGIND</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-187"></a>    <span class="k">DO </span><span class="mi">4</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-188"></a>      <span class="k">CALL </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">P</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">H</span><span class="p">)</span>
-<a name="ln-189"></a>      <span class="k">DO </span><span class="mi">3</span> <span class="n">K</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
-<a name="ln-190"></a>        <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-191"></a>        <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-192"></a>        <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-193"></a>        <span class="k">DO </span><span class="mi">2</span> <span class="n">M</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-194"></a>          <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-195"></a>          <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-196"></a>          <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-197"></a>          <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-198"></a>          <span class="n">MUSCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-199"></a>          <span class="n">MUSCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-200"></a>          <span class="n">MUACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-201"></a>          <span class="n">MUACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-202"></a>          <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
-<a name="ln-203"></a>          <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
-<a name="ln-204"></a>          <span class="n">LLHS</span><span class="o">=</span><span class="n">LLH</span>
-<a name="ln-205"></a>          <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span> <span class="k">THEN</span>
-<a name="ln-206"></a><span class="k">            DO </span><span class="mi">1</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-207"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-208"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-209"></a>              <span class="n">SCR</span> <span class="o">=</span><span class="n">SCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-210"></a>              <span class="n">SCI</span> <span class="o">=</span><span class="n">SCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-211"></a>              <span class="n">MUACR</span> <span class="o">=</span><span class="n">MUACR</span><span class="o">+</span><span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-212"></a>              <span class="n">MUACI</span> <span class="o">=</span><span class="n">MUACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-213"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-214"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-215"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-216"></a><span class="mi">1</span>           <span class="k">CONTINUE</span>
-<a name="ln-217"></a><span class="k">            </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-218"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-219"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-220"></a>            <span class="k">DO </span><span class="mi">11</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-221"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-222"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-223"></a>              <span class="n">ACR</span> <span class="o">=</span><span class="n">ACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-224"></a>              <span class="n">ACI</span> <span class="o">=</span><span class="n">ACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-225"></a>              <span class="n">MUSCR</span> <span class="o">=</span><span class="n">MUSCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-226"></a>              <span class="n">MUSCI</span> <span class="o">=</span><span class="n">MUSCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-227"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-228"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-229"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-230"></a><span class="mi">11</span>          <span class="k">CONTINUE</span>
-<a name="ln-231"></a><span class="k">          END IF</span>
-<a name="ln-232"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-233"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
-<a name="ln-234"></a>          <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-235"></a>
-<a name="ln-236"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">-</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-237"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-238"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">+</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-239"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-240"></a>
-<a name="ln-241"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">-</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-242"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">-</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-243"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">+</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-244"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">+</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-245"></a><span class="mi">2</span>       <span class="k">CONTINUE</span>
-<a name="ln-246"></a>
-<a name="ln-247"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">VFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-248"></a>        <span class="n">XLAM</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-249"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">UFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-250"></a>        <span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-251"></a>
-<a name="ln-252"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MVFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-253"></a>        <span class="n">XPHI</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-254"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MUFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-255"></a>        <span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-256"></a>
-<a name="ln-257"></a><span class="mi">3</span>     <span class="k">CONTINUE</span>
-<a name="ln-258"></a><span class="k">      </span><span class="n">GGIND</span><span class="o">=</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-259"></a><span class="mi">4</span>   <span class="k">CONTINUE</span>
-<a name="ln-260"></a>
+<a name="ln-184"></a>    <span class="n">GGIND</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-185"></a>    <span class="k">DO </span><span class="mi">4</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NJ</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-186"></a>      <span class="k">CALL </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">P</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">H</span><span class="p">)</span>
+<a name="ln-187"></a>      <span class="k">DO </span><span class="mi">3</span> <span class="n">K</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
+<a name="ln-188"></a>        <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-189"></a>        <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-190"></a>        <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-191"></a>        <span class="k">DO </span><span class="mi">2</span> <span class="n">M</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-192"></a>          <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-193"></a>          <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-194"></a>          <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-195"></a>          <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-196"></a>          <span class="n">MUSCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-197"></a>          <span class="n">MUSCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-198"></a>          <span class="n">MUACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-199"></a>          <span class="n">MUACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-200"></a>          <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
+<a name="ln-201"></a>          <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
+<a name="ln-202"></a>          <span class="n">LLHS</span><span class="o">=</span><span class="n">LLH</span>
+<a name="ln-203"></a>          <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span> <span class="k">THEN</span>
+<a name="ln-204"></a><span class="k">            DO </span><span class="mi">1</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-205"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-206"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-207"></a>              <span class="n">SCR</span> <span class="o">=</span><span class="n">SCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-208"></a>              <span class="n">SCI</span> <span class="o">=</span><span class="n">SCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-209"></a>              <span class="n">MUACR</span> <span class="o">=</span><span class="n">MUACR</span><span class="o">+</span><span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-210"></a>              <span class="n">MUACI</span> <span class="o">=</span><span class="n">MUACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-211"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-212"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-213"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-214"></a><span class="mi">1</span>           <span class="k">CONTINUE</span>
+<a name="ln-215"></a><span class="k">            </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-216"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-217"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-218"></a>            <span class="k">DO </span><span class="mi">11</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-219"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-220"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-221"></a>              <span class="n">ACR</span> <span class="o">=</span><span class="n">ACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-222"></a>              <span class="n">ACI</span> <span class="o">=</span><span class="n">ACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-223"></a>              <span class="n">MUSCR</span> <span class="o">=</span><span class="n">MUSCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-224"></a>              <span class="n">MUSCI</span> <span class="o">=</span><span class="n">MUSCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-225"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-226"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-227"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-228"></a><span class="mi">11</span>          <span class="k">CONTINUE</span>
+<a name="ln-229"></a><span class="k">          END IF</span>
+<a name="ln-230"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-231"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
+<a name="ln-232"></a>          <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-233"></a>
+<a name="ln-234"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">-</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-235"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-236"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">+</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-237"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-238"></a>
+<a name="ln-239"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">-</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-240"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">-</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-241"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">+</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-242"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">+</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-243"></a><span class="mi">2</span>       <span class="k">CONTINUE</span>
+<a name="ln-244"></a>
+<a name="ln-245"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">VFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-246"></a>        <span class="n">XLAM</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-247"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">UFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-248"></a>        <span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-249"></a>
+<a name="ln-250"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MVFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-251"></a>        <span class="n">XPHI</span><span class="p">(</span><span class="n">GGIND</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-252"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MUFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-253"></a>        <span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">NI</span><span class="o">-</span><span class="n">GGIND</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-254"></a>
+<a name="ln-255"></a><span class="mi">3</span>     <span class="k">CONTINUE</span>
+<a name="ln-256"></a><span class="k">      </span><span class="n">GGIND</span><span class="o">=</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-257"></a><span class="mi">4</span>   <span class="k">CONTINUE</span>
+<a name="ln-258"></a>
+<a name="ln-259"></a>
+<a name="ln-260"></a><span class="k">    RETURN</span>
 <a name="ln-261"></a>
-<a name="ln-262"></a><span class="k">    RETURN</span>
+<a name="ln-262"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGRAD</span>
 <a name="ln-263"></a>
-<a name="ln-264"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGRAD</span>
-<a name="ln-265"></a>
+<a name="ln-264"></a>
+<a name="ln-265"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGRACUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
 <a name="ln-266"></a>
-<a name="ln-267"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGRACUT</span><span class="p">(</span><span class="n">XMN</span><span class="p">,</span><span class="n">XLAM</span><span class="p">,</span><span class="n">XPHI</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">P</span><span class="p">,</span><span class="n">H</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-268"></a>
-<a name="ln-269"></a><span class="c">!! Berechnung des Gradienten eines Skalars aus dem Feld des</span>
-<a name="ln-270"></a><span class="c">!! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der</span>
-<a name="ln-271"></a><span class="c">!! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss&#39;schen Gitter.</span>
-<a name="ln-272"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
-<a name="ln-273"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
-<a name="ln-274"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
-<a name="ln-275"></a><span class="c">! MNAUF gibt die spektrale Aufloesung an,</span>
-<a name="ln-276"></a><span class="c">! NI = Anzahl der Gauss&#39;schen Gitterpunkte,</span>
-<a name="ln-277"></a><span class="c">! NJ = Anzahl der Gauss&#39;schen Breiten,</span>
-<a name="ln-278"></a><span class="c">! NK = Anzahl der Niveaus</span>
-<a name="ln-279"></a>
-<a name="ln-280"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
-<a name="ln-281"></a>
-<a name="ln-282"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-283"></a>
-<a name="ln-284"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">LLH</span><span class="p">,</span><span class="n">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LLHS</span>
-<a name="ln-285"></a>    <span class="kt">INTEGER </span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">I</span><span class="p">,</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-286"></a>    <span class="kt">REAL </span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-287"></a>    <span class="kt">REAL </span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-288"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
-<a name="ln-289"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
-<a name="ln-290"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-291"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-292"></a>    <span class="kt">REAL </span><span class="n">HLAM</span><span class="p">(</span><span class="n">MAXAUF</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="n">HPHI</span><span class="p">(</span><span class="n">MAXAUF</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-293"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
-<a name="ln-294"></a>    <span class="kt">REAL </span><span class="n">ERAD</span>
-<a name="ln-295"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span><span class="p">,</span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
-<a name="ln-296"></a>
-<a name="ln-297"></a>    <span class="n">ERAD</span> <span class="o">=</span> <span class="mi">636747</span><span class="mf">0.0</span>
-<a name="ln-298"></a>
-<a name="ln-299"></a>    <span class="n">GGIND</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-300"></a>    <span class="k">DO </span><span class="mi">4</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NJ</span>
-<a name="ln-301"></a>      <span class="k">CALL </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">P</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">H</span><span class="p">)</span>
-<a name="ln-302"></a>      <span class="k">DO </span><span class="mi">3</span> <span class="n">K</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
-<a name="ln-303"></a>        <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-304"></a>        <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-305"></a>        <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-306"></a>        <span class="k">DO </span><span class="mi">2</span> <span class="n">M</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-307"></a>          <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-308"></a>          <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-309"></a>          <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-310"></a>          <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-311"></a>          <span class="n">MUSCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-312"></a>          <span class="n">MUSCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-313"></a>          <span class="n">MUACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-314"></a>          <span class="n">MUACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-315"></a>          <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
-<a name="ln-316"></a>          <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
-<a name="ln-317"></a>          <span class="n">LLHS</span><span class="o">=</span><span class="n">LLH</span>
-<a name="ln-318"></a>          <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-319"></a><span class="k">            DO </span><span class="mi">1</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-320"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-321"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-322"></a>              <span class="n">SCR</span> <span class="o">=</span><span class="n">SCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-323"></a>              <span class="n">SCI</span> <span class="o">=</span><span class="n">SCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-324"></a>              <span class="n">MUACR</span> <span class="o">=</span><span class="n">MUACR</span><span class="o">+</span><span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-325"></a>              <span class="n">MUACI</span> <span class="o">=</span><span class="n">MUACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-326"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-327"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-328"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-329"></a><span class="mi">1</span>           <span class="k">CONTINUE</span>
-<a name="ln-330"></a><span class="k">            </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-331"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-332"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-333"></a>            <span class="k">DO </span><span class="mi">11</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-334"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-335"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
-<a name="ln-336"></a>              <span class="n">ACR</span> <span class="o">=</span><span class="n">ACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-337"></a>              <span class="n">ACI</span> <span class="o">=</span><span class="n">ACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-338"></a>              <span class="n">MUSCR</span> <span class="o">=</span><span class="n">MUSCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-339"></a>              <span class="n">MUSCI</span> <span class="o">=</span><span class="n">MUSCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
-<a name="ln-340"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-341"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-342"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-343"></a><span class="mi">11</span>          <span class="k">CONTINUE</span>
-<a name="ln-344"></a><span class="k">          END IF</span>
-<a name="ln-345"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-346"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
-<a name="ln-347"></a>          <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-348"></a>
-<a name="ln-349"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">-</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-350"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-351"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">+</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-352"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-353"></a>
-<a name="ln-354"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">-</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-355"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">-</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-356"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">+</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-357"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">+</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
-<a name="ln-358"></a><span class="mi">2</span>       <span class="k">CONTINUE</span>
-<a name="ln-359"></a>
-<a name="ln-360"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">VFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-361"></a>
-<a name="ln-362"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MVFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-363"></a>
-<a name="ln-364"></a>        <span class="k">DO </span><span class="mi">6</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">NI</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-365"></a>          <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span>  <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-366"></a><span class="k">            </span><span class="n">XLAM</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-367"></a>            <span class="n">XPHI</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-368"></a>          <span class="k">ELSE</span>
-<a name="ln-369"></a><span class="k">            </span><span class="n">XLAM</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-370"></a>            <span class="n">XPHI</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-371"></a>          <span class="k">END IF</span>
-<a name="ln-372"></a><span class="mi">6</span>       <span class="k">CONTINUE</span>
-<a name="ln-373"></a><span class="mi">3</span>     <span class="k">CONTINUE</span>
-<a name="ln-374"></a><span class="k">      </span><span class="n">GGIND</span><span class="o">=</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MAUF</span>
-<a name="ln-375"></a><span class="mi">4</span>   <span class="k">CONTINUE</span>
-<a name="ln-376"></a>
-<a name="ln-377"></a><span class="k">    RETURN</span>
-<a name="ln-378"></a>
-<a name="ln-379"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGRACUT</span>
-<a name="ln-380"></a>
-<a name="ln-381"></a>  <span class="k">SUBROUTINE </span><span class="n">CONTGL</span><span class="p">(</span><span class="n">PS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">U</span><span class="p">,</span><span class="n">V</span><span class="p">,</span><span class="n">BREITE</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">B</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
-<a name="ln-382"></a>
-<a name="ln-383"></a><span class="c">!! Berechnung der Divergenz aus dem Windfeld (U,V)</span>
-<a name="ln-384"></a><span class="c">!! im Phasenraum. Zurueckgegeben werden die Felder der</span>
-<a name="ln-385"></a><span class="c">!! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss&#39;schen Gitter.</span>
+<a name="ln-267"></a><span class="c">!! Calculated the gradient of a scalar from the field of the scalar XMN </span>
+<a name="ln-268"></a><span class="c">!! in phase space. Returns the fields of the components of the horizontal</span>
+<a name="ln-269"></a><span class="c">!! gradient XLAM,XPHI on the Gaussian grid</span>
+<a name="ln-270"></a>
+<a name="ln-271"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
+<a name="ln-272"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
+<a name="ln-273"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
+<a name="ln-274"></a><span class="c">! MNAUF gibt die spektrale Aufloesung an,</span>
+<a name="ln-275"></a><span class="c">! NI = Anzahl der Gauss&#39;schen Gitterpunkte,</span>
+<a name="ln-276"></a><span class="c">! NJ = Anzahl der Gauss&#39;schen Breiten,</span>
+<a name="ln-277"></a><span class="c">! NK = Anzahl der Niveaus</span>
+<a name="ln-278"></a>
+<a name="ln-279"></a>    <span class="k">USE </span><span class="n">PHTOGR</span>
+<a name="ln-280"></a>
+<a name="ln-281"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-282"></a>
+<a name="ln-283"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">J</span><span class="p">,</span><span class="n">K</span><span class="p">,</span><span class="n">M</span><span class="p">,</span><span class="n">N</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">GGIND</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">LLH</span><span class="p">,</span><span class="n">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LLHS</span>
+<a name="ln-284"></a>    <span class="kt">INTEGER </span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">I</span><span class="p">,</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<a name="ln-285"></a>    <span class="kt">REAL </span><span class="n">UFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MUFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-286"></a>    <span class="kt">REAL </span><span class="n">VFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">),</span><span class="n">MVFOUC</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-287"></a>    <span class="kt">REAL </span><span class="n">XMN</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">NK</span><span class="p">)</span>
+<a name="ln-288"></a>    <span class="kt">REAL </span><span class="n">P</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">3</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">4</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">NJ</span><span class="p">)</span>
+<a name="ln-289"></a>    <span class="kt">REAL </span><span class="n">H</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">2</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">3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-290"></a>    <span class="kt">REAL </span><span class="n">XLAM</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">),</span><span class="n">XPHI</span><span class="p">(</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-291"></a>    <span class="kt">REAL </span><span class="n">HLAM</span><span class="p">(</span><span class="n">MAXAUF</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="n">HPHI</span><span class="p">(</span><span class="n">MAXAUF</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-292"></a>    <span class="kt">REAL </span><span class="n">GWSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
+<a name="ln-293"></a>    <span class="kt">REAL </span><span class="n">ERAD</span>
+<a name="ln-294"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">MUSCR</span><span class="p">,</span><span class="n">MUSCI</span><span class="p">,</span><span class="n">MUACR</span><span class="p">,</span><span class="n">MUACI</span><span class="p">,</span><span class="n">RT</span><span class="p">,</span><span class="n">IT</span>
+<a name="ln-295"></a>
+<a name="ln-296"></a>    <span class="n">ERAD</span> <span class="o">=</span> <span class="mi">636747</span><span class="mf">0.0</span>
+<a name="ln-297"></a>
+<a name="ln-298"></a>    <span class="n">GGIND</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-299"></a>    <span class="k">DO </span><span class="mi">4</span> <span class="n">J</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NJ</span>
+<a name="ln-300"></a>      <span class="k">CALL </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">P</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">H</span><span class="p">)</span>
+<a name="ln-301"></a>      <span class="k">DO </span><span class="mi">3</span> <span class="n">K</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span><span class="n">NK</span>
+<a name="ln-302"></a>        <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-303"></a>        <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-304"></a>        <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-305"></a>        <span class="k">DO </span><span class="mi">2</span> <span class="n">M</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-306"></a>          <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-307"></a>          <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-308"></a>          <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-309"></a>          <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-310"></a>          <span class="n">MUSCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-311"></a>          <span class="n">MUSCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-312"></a>          <span class="n">MUACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-313"></a>          <span class="n">MUACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-314"></a>          <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
+<a name="ln-315"></a>          <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
+<a name="ln-316"></a>          <span class="n">LLHS</span><span class="o">=</span><span class="n">LLH</span>
+<a name="ln-317"></a>          <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-318"></a><span class="k">            DO </span><span class="mi">1</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-319"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-320"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-321"></a>              <span class="n">SCR</span> <span class="o">=</span><span class="n">SCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-322"></a>              <span class="n">SCI</span> <span class="o">=</span><span class="n">SCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-323"></a>              <span class="n">MUACR</span> <span class="o">=</span><span class="n">MUACR</span><span class="o">+</span><span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-324"></a>              <span class="n">MUACI</span> <span class="o">=</span><span class="n">MUACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-325"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-326"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-327"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-328"></a><span class="mi">1</span>           <span class="k">CONTINUE</span>
+<a name="ln-329"></a><span class="k">            </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-330"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-331"></a>            <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-332"></a>            <span class="k">DO </span><span class="mi">11</span> <span class="n">N</span> <span class="o">=</span> <span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-333"></a>              <span class="n">RT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-334"></a>              <span class="n">IT</span><span class="o">=</span><span class="n">XMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span>
+<a name="ln-335"></a>              <span class="n">ACR</span> <span class="o">=</span><span class="n">ACR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-336"></a>              <span class="n">ACI</span> <span class="o">=</span><span class="n">ACI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">P</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-337"></a>              <span class="n">MUSCR</span> <span class="o">=</span><span class="n">MUSCR</span><span class="o">+</span> <span class="n">RT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-338"></a>              <span class="n">MUSCI</span> <span class="o">=</span><span class="n">MUSCI</span><span class="o">+</span> <span class="n">IT</span><span class="o">*</span><span class="n">H</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span>
+<a name="ln-339"></a>              <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-340"></a>              <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-341"></a>              <span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-342"></a><span class="mi">11</span>          <span class="k">CONTINUE</span>
+<a name="ln-343"></a><span class="k">          END IF</span>
+<a name="ln-344"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-345"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
+<a name="ln-346"></a>          <span class="n">LLH</span><span class="o">=</span><span class="n">LLHS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">M</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-347"></a>
+<a name="ln-348"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">-</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-349"></a>          <span class="n">UFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-350"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCI</span><span class="o">+</span><span class="n">ACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-351"></a>          <span class="n">VFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">M</span><span class="o">*</span><span class="p">(</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-352"></a>
+<a name="ln-353"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">-</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-354"></a>          <span class="n">MUFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">-</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-355"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</span><span class="p">)</span><span class="o">=-</span><span class="p">(</span><span class="n">MUSCR</span><span class="o">+</span><span class="n">MUACR</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-356"></a>          <span class="n">MVFOUC</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">M</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">MUSCI</span><span class="o">+</span><span class="n">MUACI</span><span class="p">)</span><span class="o">/</span><span class="n">ERAD</span>
+<a name="ln-357"></a><span class="mi">2</span>       <span class="k">CONTINUE</span>
+<a name="ln-358"></a>
+<a name="ln-359"></a><span class="k">        CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">VFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-360"></a>
+<a name="ln-361"></a>        <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">MVFOUC</span><span class="p">,</span><span class="n">GWSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-362"></a>
+<a name="ln-363"></a>        <span class="k">DO </span><span class="mi">6</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">NI</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-364"></a>          <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span>  <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-365"></a><span class="k">            </span><span class="n">XLAM</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-366"></a>            <span class="n">XPHI</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-367"></a>          <span class="k">ELSE</span>
+<a name="ln-368"></a><span class="k">            </span><span class="n">XLAM</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">VFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-369"></a>            <span class="n">XPHI</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">J</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">MVFOUC</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-370"></a>          <span class="k">END IF</span>
+<a name="ln-371"></a><span class="mi">6</span>       <span class="k">CONTINUE</span>
+<a name="ln-372"></a><span class="mi">3</span>     <span class="k">CONTINUE</span>
+<a name="ln-373"></a><span class="k">      </span><span class="n">GGIND</span><span class="o">=</span><span class="n">GGIND</span><span class="o">+</span><span class="n">MAUF</span>
+<a name="ln-374"></a><span class="mi">4</span>   <span class="k">CONTINUE</span>
+<a name="ln-375"></a>
+<a name="ln-376"></a><span class="k">    RETURN</span>
+<a name="ln-377"></a>
+<a name="ln-378"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGRACUT</span>
+<a name="ln-379"></a>
+<a name="ln-380"></a>  <span class="k">SUBROUTINE </span><span class="n">CONTGL</span><span class="p">(</span><span class="n">PS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">U</span><span class="p">,</span><span class="n">V</span><span class="p">,</span><span class="n">BREITE</span><span class="p">,</span><span class="n">ETA</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">B</span><span class="p">,</span><span class="n">NI</span><span class="p">,</span><span class="n">NJ</span><span class="p">,</span><span class="n">NK</span><span class="p">)</span>
+<a name="ln-381"></a>
+<a name="ln-382"></a><span class="c">!! Calculation of divergence from the wind field (U,V)</span>
+<a name="ln-383"></a><span class="c">!! in phase space. Returns fields of the componentens of the </span>
+<a name="ln-384"></a><span class="c">!! horizontal gradients XLAM,XPHI on the Gaussian grid</span>
+<a name="ln-385"></a>
 <a name="ln-386"></a><span class="c">! GWSAVE ist ein Hilfsfeld fuer die FFT</span>
 <a name="ln-387"></a><span class="c">! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung</span>
 <a name="ln-388"></a><span class="c">! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis</span>
@@ -843,7 +843,7 @@
 <a name="ln-438"></a>
 <a name="ln-439"></a>  <span class="k">SUBROUTINE </span><span class="n">OMEGA</span><span class="p">(</span><span class="n">PS</span><span class="p">,</span><span class="n">DPSDL</span><span class="p">,</span><span class="n">DPSDM</span><span class="p">,</span><span class="n">DIV</span><span class="p">,</span><span class="n">U</span><span class="p">,</span><span class="n">V</span><span class="p">,</span><span class="n">BREITE</span><span class="p">,</span><span class="n">E</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">A</span><span class="p">,</span><span class="n">B</span><span class="p">,</span><span class="n">NGI</span><span class="p">,</span><span class="n">NGJ</span><span class="p">,</span><span class="n">MKK</span><span class="p">)</span>
 <a name="ln-440"></a>
-<a name="ln-441"></a><span class="c">!! calculates $\omega$ in the hybrid ($\eta$-) coordinate system</span>
+<a name="ln-441"></a><span class="c">!! Calculates \(\omega\) in the hybrid (\(\eta\)-)coordinate system</span>
 <a name="ln-442"></a>
 <a name="ln-443"></a><span class="c">! OMEGA berechnet omega im Hybridkoordinatensystem</span>
 <a name="ln-444"></a><span class="c">! PS ist der Bodendruck,</span>
@@ -919,8 +919,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/sourcefile/grphreal.f90.html b/Documentation/html/Documentation/Api/Fortran/sourcefile/grphreal.f90.html
index 9acdffade7e911d0e3968c714ce33d0cc4ca0a63..a62df61d14e9ff114769f13864a46f76ae4a1ac8 100644
--- a/Documentation/html/Documentation/Api/Fortran/sourcefile/grphreal.f90.html
+++ b/Documentation/html/Documentation/Api/Fortran/sourcefile/grphreal.f90.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -405,189 +405,190 @@
       <h2><span class="anchor" id="src"></span>Source Code</h2>
     <div class="hl"><pre><span></span><a name="ln-1"></a><span class="k">MODULE </span><span class="n">GRTOPH</span>
 <a name="ln-2"></a>
-<a name="ln-3"></a>  <span class="k">USE </span><span class="n">PHTOGR</span>
+<a name="ln-3"></a><span class="c">!! Module for transformation from phase space into physical space</span>
 <a name="ln-4"></a>
-<a name="ln-5"></a><span class="k">CONTAINS</span>
+<a name="ln-5"></a>  <span class="k">USE </span><span class="n">PHTOGR</span>
 <a name="ln-6"></a>
-<a name="ln-7"></a><span class="k">  SUBROUTINE </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-7"></a><span class="k">CONTAINS</span>
 <a name="ln-8"></a>
-<a name="ln-9"></a><span class="c">!! WRONG&gt;&gt;&gt; DIE ROUTINE F]HRT EINE TRANSFORMATION EINER</span>
-<a name="ln-10"></a><span class="c">!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN</span>
-<a name="ln-11"></a><span class="c">!! RAUM AUF KUGELKOORDINATEN DURCH</span>
-<a name="ln-12"></a>
-<a name="ln-13"></a><span class="c">! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
-<a name="ln-14"></a><span class="c">!          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
-<a name="ln-15"></a><span class="c">! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld</span>
-<a name="ln-16"></a><span class="c">! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN</span>
-<a name="ln-17"></a><span class="c">! WSAVE  = Working Array fuer Fouriertransformation</span>
-<a name="ln-18"></a><span class="c">! Z   = LEGENDREFUNKTIONSWERTE</span>
-<a name="ln-19"></a><span class="c">!</span>
-<a name="ln-20"></a><span class="c">! MNAUF    ANZAHL DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-21"></a><span class="c">! MAXL     ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
-<a name="ln-22"></a><span class="c">! MAXB     ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
-<a name="ln-23"></a><span class="c">! MLEVEL   ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
-<a name="ln-24"></a>
-<a name="ln-25"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-9"></a><span class="k">  SUBROUTINE </span><span class="n">GRPH213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-10"></a>
+<a name="ln-11"></a><span class="c">! WRONG&gt;&gt;&gt; DIE ROUTINE F]HRT EINE TRANSFORMATION EINER</span>
+<a name="ln-12"></a><span class="c">! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN</span>
+<a name="ln-13"></a><span class="c">! RAUM AUF KUGELKOORDINATEN DURCH</span>
+<a name="ln-14"></a>
+<a name="ln-15"></a><span class="c">! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
+<a name="ln-16"></a><span class="c">!          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
+<a name="ln-17"></a><span class="c">! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld</span>
+<a name="ln-18"></a><span class="c">! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN</span>
+<a name="ln-19"></a><span class="c">! WSAVE  = Working Array fuer Fouriertransformation</span>
+<a name="ln-20"></a><span class="c">! Z   = LEGENDREFUNKTIONSWERTE</span>
+<a name="ln-21"></a><span class="c">!</span>
+<a name="ln-22"></a><span class="c">! MNAUF    ANZAHL DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-23"></a><span class="c">! MAXL     ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
+<a name="ln-24"></a><span class="c">! MAXB     ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
+<a name="ln-25"></a><span class="c">! MLEVEL   ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
 <a name="ln-26"></a>
-<a name="ln-27"></a><span class="c">!   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten</span>
-<a name="ln-28"></a><span class="c">!   Gauss&#39;schen Gitters</span>
-<a name="ln-29"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">ISIZE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-30"></a>
-<a name="ln-31"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
-<a name="ln-32"></a>    <span class="kt">REAL </span><span class="n">Z</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-33"></a>
-<a name="ln-34"></a><span class="c">!   LOGICAL*1 USED(((216*217)/2+1)*160)</span>
+<a name="ln-27"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-28"></a>
+<a name="ln-29"></a><span class="c">!   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten</span>
+<a name="ln-30"></a><span class="c">!   Gauss&#39;schen Gitters</span>
+<a name="ln-31"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">ISIZE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-32"></a>
+<a name="ln-33"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
+<a name="ln-34"></a>    <span class="kt">REAL </span><span class="n">Z</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
 <a name="ln-35"></a>
-<a name="ln-36"></a>    <span class="k">DIMENSION </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>
-<a name="ln-37"></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">MLEVEL</span><span class="p">)</span>
-<a name="ln-38"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-39"></a>    <span class="kt">REAL </span><span class="n">W</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-40"></a>    <span class="k">DIMENSION </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-41"></a>
-<a name="ln-42"></a>    <span class="n">IND</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-43"></a>    <span class="k">DO </span><span class="mi">6</span> <span class="n">J</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-44"></a>      <span class="n">IND</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="o">=</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-45"></a><span class="mi">6</span>   <span class="k">CONTINUE</span>
-<a name="ln-46"></a><span class="c">!$OMP PARALLEL DO SCHEDULE(DYNAMIC)</span>
-<a name="ln-47"></a>    <span class="k">DO </span><span class="mi">16</span> <span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
-<a name="ln-48"></a>      <span class="k">CALL </span><span class="n">GRPHSUB</span><span class="p">(</span><span class="n">L</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
-<a name="ln-49"></a><span class="mi">16</span>  <span class="k">CONTINUE</span>
-<a name="ln-50"></a><span class="c">!$omp end parallel do</span>
-<a name="ln-51"></a>
-<a name="ln-52"></a>    <span class="k">RETURN</span>
+<a name="ln-36"></a><span class="c">!   LOGICAL*1 USED(((216*217)/2+1)*160)</span>
+<a name="ln-37"></a>
+<a name="ln-38"></a>    <span class="k">DIMENSION </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>
+<a name="ln-39"></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">MLEVEL</span><span class="p">)</span>
+<a name="ln-40"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-41"></a>    <span class="kt">REAL </span><span class="n">W</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-42"></a>    <span class="k">DIMENSION </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-43"></a>
+<a name="ln-44"></a>    <span class="n">IND</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-45"></a>    <span class="k">DO </span><span class="mi">6</span> <span class="n">J</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-46"></a>      <span class="n">IND</span><span class="p">(</span><span class="n">j</span><span class="p">)</span><span class="o">=</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-47"></a><span class="mi">6</span>   <span class="k">CONTINUE</span>
+<a name="ln-48"></a><span class="c">!$OMP PARALLEL DO SCHEDULE(DYNAMIC)</span>
+<a name="ln-49"></a>    <span class="k">DO </span><span class="mi">16</span> <span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
+<a name="ln-50"></a>      <span class="k">CALL </span><span class="n">GRPHSUB</span><span class="p">(</span><span class="n">L</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-51"></a><span class="mi">16</span>  <span class="k">CONTINUE</span>
+<a name="ln-52"></a><span class="c">!$omp end parallel do</span>
 <a name="ln-53"></a>
-<a name="ln-54"></a><span class="k">  END SUBROUTINE </span><span class="n">GRPH213</span>
+<a name="ln-54"></a>    <span class="k">RETURN</span>
 <a name="ln-55"></a>
-<a name="ln-56"></a>  <span class="k">SUBROUTINE </span><span class="n">GRPHSUB</span><span class="p">(</span><span class="n">L</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-56"></a><span class="k">  END SUBROUTINE </span><span class="n">GRPH213</span>
 <a name="ln-57"></a>
-<a name="ln-58"></a><span class="c">!! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER</span>
-<a name="ln-59"></a><span class="c">!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN</span>
-<a name="ln-60"></a><span class="c">!! RAUM AUF KUGELKOORDINATEN DURCH</span>
-<a name="ln-61"></a><span class="c">!</span>
-<a name="ln-62"></a><span class="c">! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
-<a name="ln-63"></a><span class="c">!         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
-<a name="ln-64"></a><span class="c">! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld</span>
-<a name="ln-65"></a><span class="c">! FELD  = FELD DER METEOROLOGISCHEN VARIABLEN</span>
-<a name="ln-66"></a><span class="c">! WSAVE = Working Array fuer Fouriertransformation</span>
-<a name="ln-67"></a><span class="c">! Z     = LEGENDREFUNKTIONSWERTE</span>
-<a name="ln-68"></a><span class="c">!</span>
-<a name="ln-69"></a><span class="c">! MNAUF ANZAHL DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-70"></a><span class="c">! MAXL  ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
-<a name="ln-71"></a><span class="c">! MAXB  ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
-<a name="ln-72"></a><span class="c">! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
-<a name="ln-73"></a>
-<a name="ln-74"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-75"></a>
-<a name="ln-76"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-77"></a>    <span class="kt">REAL </span><span class="n">CXMS</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
-<a name="ln-78"></a>    <span class="kt">REAL </span><span class="n">CXMA</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
-<a name="ln-79"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">ALLOCATABLE</span> <span class="kd">::</span> <span class="n">CXM</span><span class="p">(:,:)</span>
-<a name="ln-80"></a>
-<a name="ln-81"></a><span class="c">!   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten</span>
-<a name="ln-82"></a><span class="c">!   Gauss&#39;schen Gitters</span>
-<a name="ln-83"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">ISIZE</span>
-<a name="ln-84"></a>
-<a name="ln-85"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
-<a name="ln-86"></a>    <span class="kt">REAL </span><span class="n">Z</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-87"></a>
-<a name="ln-88"></a><span class="c">!   LOGICAL*1 USED(((216*217)/2+1)*160)</span>
-<a name="ln-89"></a>
-<a name="ln-90"></a>    <span class="kt">REAL </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>
-<a name="ln-91"></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">MLEVEL</span><span class="p">)</span>
-<a name="ln-92"></a>    <span class="kt">REAL </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-93"></a>    <span class="kt">INTEGER </span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-94"></a>    <span class="kt">REAL </span><span class="n">W</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-95"></a>    <span class="kt">INTEGER </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-96"></a>
-<a name="ln-97"></a>    <span class="k">ALLOCATE</span><span class="p">(</span><span class="n">CXM</span><span class="p">(</span> <span class="mi">4</span><span class="o">*</span><span class="n">MAXB</span><span class="p">,</span><span class="n">MAXB</span><span class="p">))</span>
-<a name="ln-98"></a>    <span class="k">DO </span><span class="mi">5</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-99"></a>      <span class="n">CXMS</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">=</span><span class="n">FELD</span><span class="p">(</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-100"></a>      <span class="k">CALL </span><span class="n">RFOUFTR</span><span class="p">(</span><span class="n">CXMS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-101"></a>      <span class="n">CXMA</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">=</span><span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-102"></a>      <span class="k">CALL </span><span class="n">RFOUFTR</span><span class="p">(</span><span class="n">CXMA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-103"></a>      <span class="k">DO </span><span class="mi">4</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-104"></a>        <span class="n">CXM</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="o">=</span><span class="n">CXMS</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">+</span><span class="n">CXMA</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
-<a name="ln-105"></a>        <span class="n">CXM</span><span class="p">(</span><span class="n">I</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="n">CXMS</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">-</span><span class="n">CXMA</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
-<a name="ln-106"></a><span class="mi">4</span>     <span class="k">CONTINUE</span>
-<a name="ln-107"></a><span class="mi">5</span>   <span class="k">CONTINUE</span>
-<a name="ln-108"></a><span class="k">    CALL </span><span class="n">LGTR213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">L</span><span class="p">),</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-109"></a>
-<a name="ln-110"></a>    <span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">CXM</span><span class="p">)</span>
-<a name="ln-111"></a>
-<a name="ln-112"></a>    <span class="k">RETURN</span>
-<a name="ln-113"></a><span class="k">    </span>
-<a name="ln-114"></a><span class="k">  END SUBROUTINE </span><span class="n">GRPHSUB</span>
-<a name="ln-115"></a><span class="c">!</span>
-<a name="ln-116"></a>  <span class="k">SUBROUTINE </span><span class="n">LGTR213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-117"></a>
-<a name="ln-118"></a><span class="c">!!     DIESE ROUTINE BERECHNET DIE KFFKs CXMN</span>
-<a name="ln-119"></a>
-<a name="ln-120"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-121"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-122"></a>    <span class="k">DIMENSION </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="o">*</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-123"></a>    <span class="k">DIMENSION </span><span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="o">*</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="n">MNAUF</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="o">+</span><span class="n">MNAUF</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-124"></a>    <span class="kt">REAL</span><span class="o">*</span><span class="mi">8</span> <span class="n">Z</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-125"></a>    <span class="kt">REAL</span><span class="o">*</span><span class="mi">8</span> <span class="n">W</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">CR</span><span class="p">,</span><span class="n">CI</span><span class="p">,</span><span class="n">HILF</span>
-<a name="ln-126"></a>    <span class="kt">LOGICAL </span><span class="n">EVEN</span>
-<a name="ln-127"></a>
+<a name="ln-58"></a>  <span class="k">SUBROUTINE </span><span class="n">GRPHSUB</span><span class="p">(</span><span class="n">L</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-59"></a>
+<a name="ln-60"></a><span class="c">!! Carries out the transformation from the phase space into the physical</span>
+<a name="ln-61"></a><span class="c">!! space on spherical coordinates</span>
+<a name="ln-62"></a>
+<a name="ln-63"></a><span class="c">! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
+<a name="ln-64"></a><span class="c">!         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
+<a name="ln-65"></a><span class="c">! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld</span>
+<a name="ln-66"></a><span class="c">! FELD  = FELD DER METEOROLOGISCHEN VARIABLEN</span>
+<a name="ln-67"></a><span class="c">! WSAVE = Working Array fuer Fouriertransformation</span>
+<a name="ln-68"></a><span class="c">! Z     = LEGENDREFUNKTIONSWERTE</span>
+<a name="ln-69"></a><span class="c">!</span>
+<a name="ln-70"></a><span class="c">! MNAUF ANZAHL DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-71"></a><span class="c">! MAXL  ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
+<a name="ln-72"></a><span class="c">! MAXB  ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
+<a name="ln-73"></a><span class="c">! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
+<a name="ln-74"></a>
+<a name="ln-75"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-76"></a>
+<a name="ln-77"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-78"></a>    <span class="kt">REAL </span><span class="n">CXMS</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
+<a name="ln-79"></a>    <span class="kt">REAL </span><span class="n">CXMA</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span>
+<a name="ln-80"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">ALLOCATABLE</span> <span class="kd">::</span> <span class="n">CXM</span><span class="p">(:,:)</span>
+<a name="ln-81"></a>
+<a name="ln-82"></a><span class="c">!   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten</span>
+<a name="ln-83"></a><span class="c">!   Gauss&#39;schen Gitters</span>
+<a name="ln-84"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">ISIZE</span>
+<a name="ln-85"></a>
+<a name="ln-86"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
+<a name="ln-87"></a>    <span class="kt">REAL </span><span class="n">Z</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-88"></a>
+<a name="ln-89"></a><span class="c">!   LOGICAL*1 USED(((216*217)/2+1)*160)</span>
+<a name="ln-90"></a>
+<a name="ln-91"></a>    <span class="kt">REAL </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>
+<a name="ln-92"></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">MLEVEL</span><span class="p">)</span>
+<a name="ln-93"></a>    <span class="kt">REAL </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-94"></a>    <span class="kt">INTEGER </span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-95"></a>    <span class="kt">REAL </span><span class="n">W</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-96"></a>    <span class="kt">INTEGER </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-97"></a>
+<a name="ln-98"></a>    <span class="k">ALLOCATE</span><span class="p">(</span><span class="n">CXM</span><span class="p">(</span> <span class="mi">4</span><span class="o">*</span><span class="n">MAXB</span><span class="p">,</span><span class="n">MAXB</span><span class="p">))</span>
+<a name="ln-99"></a>    <span class="k">DO </span><span class="mi">5</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-100"></a>      <span class="n">CXMS</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">=</span><span class="n">FELD</span><span class="p">(</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-101"></a>      <span class="k">CALL </span><span class="n">RFOUFTR</span><span class="p">(</span><span class="n">CXMS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-102"></a>      <span class="n">CXMA</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">))</span><span class="o">=</span><span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-103"></a>      <span class="k">CALL </span><span class="n">RFOUFTR</span><span class="p">(</span><span class="n">CXMA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">J</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">J</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-104"></a>      <span class="k">DO </span><span class="mi">4</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="o">*</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-105"></a>        <span class="n">CXM</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="o">=</span><span class="n">CXMS</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">+</span><span class="n">CXMA</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
+<a name="ln-106"></a>        <span class="n">CXM</span><span class="p">(</span><span class="n">I</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">)</span><span class="o">=</span><span class="n">CXMS</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">-</span><span class="n">CXMA</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
+<a name="ln-107"></a><span class="mi">4</span>     <span class="k">CONTINUE</span>
+<a name="ln-108"></a><span class="mi">5</span>   <span class="k">CONTINUE</span>
+<a name="ln-109"></a><span class="k">    CALL </span><span class="n">LGTR213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">L</span><span class="p">),</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-110"></a>
+<a name="ln-111"></a>    <span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">CXM</span><span class="p">)</span>
+<a name="ln-112"></a>
+<a name="ln-113"></a>    <span class="k">RETURN</span>
+<a name="ln-114"></a><span class="k">    </span>
+<a name="ln-115"></a><span class="k">  END SUBROUTINE </span><span class="n">GRPHSUB</span>
+<a name="ln-116"></a><span class="c">!</span>
+<a name="ln-117"></a>  <span class="k">SUBROUTINE </span><span class="n">LGTR213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-118"></a>
+<a name="ln-119"></a><span class="c">!! Calculates the KFFKs (Fourier coefficients) CXMN</span>
+<a name="ln-120"></a>
+<a name="ln-121"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-122"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-123"></a>    <span class="k">DIMENSION </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="o">*</span><span class="n">MAXB</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-124"></a>    <span class="k">DIMENSION </span><span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="o">*</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="n">MNAUF</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="o">+</span><span class="n">MNAUF</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-125"></a>    <span class="kt">REAL</span><span class="o">*</span><span class="mi">8</span> <span class="n">Z</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-126"></a>    <span class="kt">REAL</span><span class="o">*</span><span class="mi">8</span> <span class="n">W</span><span class="p">(</span><span class="n">MAXB</span><span class="p">),</span><span class="n">CR</span><span class="p">,</span><span class="n">CI</span><span class="p">,</span><span class="n">HILF</span>
+<a name="ln-127"></a>    <span class="kt">LOGICAL </span><span class="n">EVEN</span>
 <a name="ln-128"></a>
-<a name="ln-129"></a>    <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-130"></a>    <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-131"></a>    <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-132"></a>      <span class="n">KM</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-133"></a><span class="mi">9</span>     <span class="n">KM</span><span class="o">=</span><span class="n">KM</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-134"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">MLAT</span><span class="p">(</span><span class="n">KM</span><span class="p">)</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-135"></a><span class="k">        GOTO </span><span class="mi">9</span>
-<a name="ln-136"></a>      <span class="k">END IF</span>
-<a name="ln-137"></a><span class="k">      DO </span><span class="mi">2</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-138"></a>        <span class="n">CR</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-139"></a>        <span class="n">CI</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-140"></a>        <span class="n">EVEN</span><span class="o">=</span><span class="nb">MOD</span><span class="p">(</span><span class="n">I</span><span class="o">+</span><span class="n">J</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">0</span>
-<a name="ln-141"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">EVEN</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-142"></a><span class="k">          DO </span><span class="mi">3</span> <span class="n">K</span><span class="o">=</span><span class="n">KM</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-143"></a>            <span class="n">HILF</span><span class="o">=</span><span class="n">W</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">LLP</span><span class="p">)</span>
-<a name="ln-144"></a>            <span class="n">CR</span><span class="o">=</span><span class="n">CR</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
-<a name="ln-145"></a>            <span class="n">CI</span><span class="o">=</span><span class="n">CI</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
-<a name="ln-146"></a><span class="mi">3</span>         <span class="k">CONTINUE</span>
-<a name="ln-147"></a><span class="k">        ELSE</span>
-<a name="ln-148"></a><span class="k">          DO </span><span class="mi">4</span> <span class="n">K</span><span class="o">=</span><span class="n">KM</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-149"></a>            <span class="n">HILF</span><span class="o">=</span><span class="n">W</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">LLP</span><span class="p">)</span>
-<a name="ln-150"></a>            <span class="n">CR</span><span class="o">=</span><span class="n">CR</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
-<a name="ln-151"></a>            <span class="n">CI</span><span class="o">=</span><span class="n">CI</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
-<a name="ln-152"></a><span class="mi">4</span>         <span class="k">CONTINUE</span>
-<a name="ln-153"></a><span class="k">        END IF</span>
-<a name="ln-154"></a><span class="mi">5</span>       <span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">)</span><span class="o">=</span><span class="n">CR</span>
-<a name="ln-155"></a>        <span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CI</span>
-<a name="ln-156"></a>        <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-157"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-158"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
-<a name="ln-159"></a><span class="k">      </span><span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-160"></a><span class="mi">1</span>   <span class="k">CONTINUE</span>
-<a name="ln-161"></a><span class="k">    RETURN</span>
-<a name="ln-162"></a><span class="k">    </span>
-<a name="ln-163"></a><span class="k">  END SUBROUTINE </span><span class="n">LGTR213</span>
-<a name="ln-164"></a>
-<a name="ln-165"></a>  <span class="k">SUBROUTINE </span><span class="n">RFOUFTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="nb">ISIGN</span><span class="p">)</span>
-<a name="ln-166"></a><span class="c">!</span>
-<a name="ln-167"></a><span class="c">! BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS</span>
-<a name="ln-168"></a>
-<a name="ln-169"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-170"></a>    <span class="k">DIMENSION </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-171"></a>    <span class="k">DIMENSION </span><span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="p">),</span><span class="n">TRIGS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">)</span>
-<a name="ln-172"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="n">MAXAUF</span><span class="p">)</span>
-<a name="ln-173"></a>    <span class="kt">INTEGER </span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-174"></a>
-<a name="ln-175"></a><span class="c">! NORMIERUNG...</span>
-<a name="ln-176"></a>    <span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-177"></a>
-<a name="ln-178"></a>    <span class="n">CXM</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">MAXL</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-179"></a>    <span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">=</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-180"></a><span class="c">!    CALL CFFTF(MAXL,CXM,WSAVE)</span>
-<a name="ln-181"></a>    <span class="k">CALL </span><span class="n">FFT99</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-182"></a>    <span class="k">RETURN</span>
-<a name="ln-183"></a><span class="k">  END SUBROUTINE </span><span class="n">RFOUFTR</span>
-<a name="ln-184"></a>
-<a name="ln-185"></a><span class="k">END MODULE </span><span class="n">GRTOPH</span>
+<a name="ln-129"></a>
+<a name="ln-130"></a>    <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-131"></a>    <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-132"></a>    <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-133"></a>      <span class="n">KM</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-134"></a><span class="mi">9</span>     <span class="n">KM</span><span class="o">=</span><span class="n">KM</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-135"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">MLAT</span><span class="p">(</span><span class="n">KM</span><span class="p">)</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-136"></a><span class="k">        GOTO </span><span class="mi">9</span>
+<a name="ln-137"></a>      <span class="k">END IF</span>
+<a name="ln-138"></a><span class="k">      DO </span><span class="mi">2</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-139"></a>        <span class="n">CR</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-140"></a>        <span class="n">CI</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-141"></a>        <span class="n">EVEN</span><span class="o">=</span><span class="nb">MOD</span><span class="p">(</span><span class="n">I</span><span class="o">+</span><span class="n">J</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="mi">0</span>
+<a name="ln-142"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">EVEN</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-143"></a><span class="k">          DO </span><span class="mi">3</span> <span class="n">K</span><span class="o">=</span><span class="n">KM</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-144"></a>            <span class="n">HILF</span><span class="o">=</span><span class="n">W</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">LLP</span><span class="p">)</span>
+<a name="ln-145"></a>            <span class="n">CR</span><span class="o">=</span><span class="n">CR</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
+<a name="ln-146"></a>            <span class="n">CI</span><span class="o">=</span><span class="n">CI</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
+<a name="ln-147"></a><span class="mi">3</span>         <span class="k">CONTINUE</span>
+<a name="ln-148"></a><span class="k">        ELSE</span>
+<a name="ln-149"></a><span class="k">          DO </span><span class="mi">4</span> <span class="n">K</span><span class="o">=</span><span class="n">KM</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-150"></a>            <span class="n">HILF</span><span class="o">=</span><span class="n">W</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">LLP</span><span class="p">)</span>
+<a name="ln-151"></a>            <span class="n">CR</span><span class="o">=</span><span class="n">CR</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
+<a name="ln-152"></a>            <span class="n">CI</span><span class="o">=</span><span class="n">CI</span><span class="o">+</span><span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">HILF</span>
+<a name="ln-153"></a><span class="mi">4</span>         <span class="k">CONTINUE</span>
+<a name="ln-154"></a><span class="k">        END IF</span>
+<a name="ln-155"></a><span class="mi">5</span>       <span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">)</span><span class="o">=</span><span class="n">CR</span>
+<a name="ln-156"></a>        <span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CI</span>
+<a name="ln-157"></a>        <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-158"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-159"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
+<a name="ln-160"></a><span class="k">      </span><span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-161"></a><span class="mi">1</span>   <span class="k">CONTINUE</span>
+<a name="ln-162"></a><span class="k">    RETURN</span>
+<a name="ln-163"></a><span class="k">    </span>
+<a name="ln-164"></a><span class="k">  END SUBROUTINE </span><span class="n">LGTR213</span>
+<a name="ln-165"></a>
+<a name="ln-166"></a>  <span class="k">SUBROUTINE </span><span class="n">RFOUFTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="nb">ISIGN</span><span class="p">)</span>
+<a name="ln-167"></a>
+<a name="ln-168"></a><span class="c">!! Calculates the Fourier sum with an FFT algorithm</span>
+<a name="ln-169"></a>
+<a name="ln-170"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-171"></a>    <span class="k">DIMENSION </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-172"></a>    <span class="k">DIMENSION </span><span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="p">),</span><span class="n">TRIGS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">)</span>
+<a name="ln-173"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="n">MAXAUF</span><span class="p">)</span>
+<a name="ln-174"></a>    <span class="kt">INTEGER </span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<a name="ln-175"></a>
+<a name="ln-176"></a><span class="c">! NORMIERUNG...</span>
+<a name="ln-177"></a>    <span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-178"></a>
+<a name="ln-179"></a>    <span class="n">CXM</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">MAXL</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-180"></a>    <span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">=</span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-181"></a><span class="c">!    CALL CFFTF(MAXL,CXM,WSAVE)</span>
+<a name="ln-182"></a>    <span class="k">CALL </span><span class="n">FFT99</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-183"></a>    <span class="k">RETURN</span>
+<a name="ln-184"></a><span class="k">  END SUBROUTINE </span><span class="n">RFOUFTR</span>
+<a name="ln-185"></a>
+<a name="ln-186"></a><span class="k">END MODULE </span><span class="n">GRTOPH</span>
 </pre></div>
 
     </section>
@@ -600,8 +601,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/sourcefile/phgrreal.f90.html b/Documentation/html/Documentation/Api/Fortran/sourcefile/phgrreal.f90.html
index b679c3c6493c3d676d2b312884244e940a6de6a3..79b682e308b0b5b52fc76a033ec93294adc355ec 100644
--- a/Documentation/html/Documentation/Api/Fortran/sourcefile/phgrreal.f90.html
+++ b/Documentation/html/Documentation/Api/Fortran/sourcefile/phgrreal.f90.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -126,7 +126,7 @@
      <li><i class="fa fa-list-ol"></i>
        <a data-toggle="tooltip"
     data-placement="bottom" data-html="true"
-    title="23.6% of total for source files.">333 statements</a>
+    title="23.8% of total for source files.">333 statements</a>
      </li> 
      
      
@@ -370,487 +370,487 @@
       <h2><span class="anchor" id="src"></span>Source Code</h2>
     <div class="hl"><pre><span></span><a name="ln-1"></a><span class="k">MODULE </span><span class="n">PHTOGR</span>
 <a name="ln-2"></a>
-<a name="ln-3"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">PARAMETER</span> <span class="kd">::</span> <span class="n">MAXAUF</span><span class="o">=</span><span class="mi">36000</span>
-<a name="ln-4"></a>
-<a name="ln-5"></a><span class="k">CONTAINS</span>
-<a name="ln-6"></a>
-<a name="ln-7"></a><span class="k">  SUBROUTINE </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
-<a name="ln-8"></a>
-<a name="ln-9"></a><span class="c">!! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER</span>
-<a name="ln-10"></a><span class="c">!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN</span>
-<a name="ln-11"></a><span class="c">!! RAUM AUF DAS REDUZIERTE GAUSS&#39;SCHE GITTER DURCH</span>
-<a name="ln-12"></a><span class="c">!</span>
-<a name="ln-13"></a><span class="c">! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
-<a name="ln-14"></a><span class="c">!          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
-<a name="ln-15"></a><span class="c">! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN</span>
-<a name="ln-16"></a><span class="c">! WSAVE  = Working Array fuer Fouriertransformation</span>
-<a name="ln-17"></a><span class="c">! Z      = LEGENDREFUNKTIONSWERTE</span>
-<a name="ln-18"></a><span class="c">!</span>
-<a name="ln-19"></a><span class="c">! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-20"></a><span class="c">! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
-<a name="ln-21"></a><span class="c">! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
-<a name="ln-22"></a><span class="c">! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
-<a name="ln-23"></a>
-<a name="ln-24"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-25"></a>
-<a name="ln-26"></a><span class="c">!   Anzahl der Gitterpunkte auf jedem Breitenkreis</span>
-<a name="ln-27"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-28"></a>    <span class="kt">INTEGER </span><span class="n">K</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">MNAUF</span>
-<a name="ln-29"></a>    <span class="kt">INTEGER </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-30"></a>
-<a name="ln-31"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
-<a name="ln-32"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-3"></a><span class="c">!! Module for transformation of a field variable from the phase space</span>
+<a name="ln-4"></a><span class="c">!! into the physical space onto the reduced Gaussian grid</span>
+<a name="ln-5"></a>
+<a name="ln-6"></a>  <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">PARAMETER</span> <span class="kd">::</span> <span class="n">MAXAUF</span><span class="o">=</span><span class="mi">36000</span>
+<a name="ln-7"></a>
+<a name="ln-8"></a><span class="k">CONTAINS</span>
+<a name="ln-9"></a>
+<a name="ln-10"></a><span class="k">  SUBROUTINE </span><span class="n">PHGR213</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-11"></a>
+<a name="ln-12"></a><span class="c">! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER</span>
+<a name="ln-13"></a><span class="c">! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN</span>
+<a name="ln-14"></a><span class="c">! RAUM AUF DAS REDUZIERTE GAUSS&#39;SCHE GITTER DURCH</span>
+<a name="ln-15"></a><span class="c">!</span>
+<a name="ln-16"></a><span class="c">! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
+<a name="ln-17"></a><span class="c">!          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
+<a name="ln-18"></a><span class="c">! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN</span>
+<a name="ln-19"></a><span class="c">! WSAVE  = Working Array fuer Fouriertransformation</span>
+<a name="ln-20"></a><span class="c">! Z      = LEGENDREFUNKTIONSWERTE</span>
+<a name="ln-21"></a><span class="c">!</span>
+<a name="ln-22"></a><span class="c">! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-23"></a><span class="c">! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
+<a name="ln-24"></a><span class="c">! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
+<a name="ln-25"></a><span class="c">! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
+<a name="ln-26"></a>
+<a name="ln-27"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-28"></a>
+<a name="ln-29"></a><span class="c">!   Anzahl der Gitterpunkte auf jedem Breitenkreis</span>
+<a name="ln-30"></a>    <span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-31"></a>    <span class="kt">INTEGER </span><span class="n">K</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">MNAUF</span>
+<a name="ln-32"></a>    <span class="kt">INTEGER </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
 <a name="ln-33"></a>
-<a name="ln-34"></a>    <span class="kt">REAL </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>
-<a name="ln-35"></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">MLEVEL</span><span class="p">)</span>
-<a name="ln-36"></a>    <span class="kt">REAL </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-37"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-38"></a>
-<a name="ln-39"></a>    <span class="n">IND</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-40"></a>    <span class="k">DO </span><span class="mi">7</span> <span class="n">K</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-41"></a>      <span class="n">IND</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">IND</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">MLAT</span><span class="p">(</span><span class="n">K</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-42"></a><span class="mi">7</span>   <span class="k">CONTINUE</span>
-<a name="ln-43"></a>
-<a name="ln-44"></a><span class="c">!$OMP PARALLEL DO SCHEDULE(DYNAMIC)</span>
-<a name="ln-45"></a>    <span class="k">DO </span><span class="mi">17</span> <span class="n">K</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-46"></a>      <span class="k">CALL </span><span class="n">PHSYM</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
-<a name="ln-47"></a><span class="mi">17</span>  <span class="k">CONTINUE</span>
-<a name="ln-48"></a><span class="c">!$OMP END PARALLEL DO</span>
-<a name="ln-49"></a>
-<a name="ln-50"></a>    <span class="k">RETURN</span>
-<a name="ln-51"></a>
-<a name="ln-52"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGR213</span>
-<a name="ln-53"></a>
-<a name="ln-54"></a>  <span class="k">SUBROUTINE </span><span class="n">PHSYM</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
-<a name="ln-55"></a>
-<a name="ln-56"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-57"></a>
-<a name="ln-58"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-59"></a>    <span class="kt">INTEGER </span><span class="n">K</span><span class="p">,</span><span class="n">L</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">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</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">MNAUF</span>
-<a name="ln-60"></a>    <span class="kt">INTEGER </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-61"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-62"></a>
-<a name="ln-63"></a>
-<a name="ln-64"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-65"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">CXMS</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">CXMA</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-34"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
+<a name="ln-35"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-36"></a>
+<a name="ln-37"></a>    <span class="kt">REAL </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>
+<a name="ln-38"></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">MLEVEL</span><span class="p">)</span>
+<a name="ln-39"></a>    <span class="kt">REAL </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-40"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-41"></a>
+<a name="ln-42"></a>    <span class="n">IND</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-43"></a>    <span class="k">DO </span><span class="mi">7</span> <span class="n">K</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-44"></a>      <span class="n">IND</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">=</span><span class="n">IND</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">MLAT</span><span class="p">(</span><span class="n">K</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-45"></a><span class="mi">7</span>   <span class="k">CONTINUE</span>
+<a name="ln-46"></a>
+<a name="ln-47"></a><span class="c">!$OMP PARALLEL DO SCHEDULE(DYNAMIC)</span>
+<a name="ln-48"></a>    <span class="k">DO </span><span class="mi">17</span> <span class="n">K</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-49"></a>      <span class="k">CALL </span><span class="n">PHSYM</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-50"></a><span class="mi">17</span>  <span class="k">CONTINUE</span>
+<a name="ln-51"></a><span class="c">!$OMP END PARALLEL DO</span>
+<a name="ln-52"></a>
+<a name="ln-53"></a>    <span class="k">RETURN</span>
+<a name="ln-54"></a>
+<a name="ln-55"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGR213</span>
+<a name="ln-56"></a>
+<a name="ln-57"></a>  <span class="k">SUBROUTINE </span><span class="n">PHSYM</span><span class="p">(</span><span class="n">K</span><span class="p">,</span><span class="n">IND</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MLAT</span><span class="p">,</span><span class="n">MNAUF</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>
+<a name="ln-58"></a>
+<a name="ln-59"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-60"></a>
+<a name="ln-61"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">MLAT</span><span class="p">(</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-62"></a>    <span class="kt">INTEGER </span><span class="n">K</span><span class="p">,</span><span class="n">L</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">LLS</span><span class="p">,</span><span class="n">LLPS</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</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">MNAUF</span>
+<a name="ln-63"></a>    <span class="kt">INTEGER </span><span class="n">IND</span><span class="p">(</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-64"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-65"></a>
 <a name="ln-66"></a>
-<a name="ln-67"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
-<a name="ln-68"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-69"></a>    <span class="kt">REAL </span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span>
-<a name="ln-70"></a>
-<a name="ln-71"></a>    <span class="kt">REAL </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>
-<a name="ln-72"></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">MLEVEL</span><span class="p">)</span>
-<a name="ln-73"></a>    <span class="kt">REAL </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-74"></a>
-<a name="ln-75"></a>    <span class="k">DO </span><span class="mi">6</span> <span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
-<a name="ln-76"></a>      <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-77"></a>      <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-78"></a>      <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-79"></a>        <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-80"></a>        <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-81"></a>        <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-82"></a>        <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-83"></a>        <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
-<a name="ln-84"></a>        <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
-<a name="ln-85"></a>        <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">))</span> <span class="k">THEN</span>
-<a name="ln-86"></a><span class="c">!         Innerste Schleife aufgespalten um if-Abfrage zu sparen</span>
-<a name="ln-87"></a>          <span class="k">DO </span><span class="mi">18</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-88"></a>            <span class="n">SCR</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-89"></a>            <span class="n">SCI</span><span class="o">=</span><span class="n">SCI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-90"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-91"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-92"></a><span class="mi">18</span>        <span class="k">CONTINUE</span>
-<a name="ln-93"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-94"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-95"></a>          <span class="k">DO </span><span class="mi">19</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-96"></a>            <span class="n">ACR</span><span class="o">=</span><span class="n">ACR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-97"></a>            <span class="n">ACI</span><span class="o">=</span><span class="n">ACI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-98"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-99"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-100"></a><span class="mi">19</span>        <span class="k">CONTINUE</span>
-<a name="ln-101"></a><span class="k">        END IF</span>
-<a name="ln-102"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-103"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
-<a name="ln-104"></a>        <span class="n">CXMS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span>
-<a name="ln-105"></a>        <span class="n">CXMS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">+</span><span class="n">ACI</span>
-<a name="ln-106"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span>
-<a name="ln-107"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">-</span><span class="n">ACI</span>
-<a name="ln-108"></a><span class="mi">1</span>     <span class="k">CONTINUE</span>
-<a name="ln-109"></a><span class="c">!     CALL FOURTR(CXMS,FELD(IND(k)+1,L),WSAVE(:,K),MNAUF,*MLAT(K),1)</span>
-<a name="ln-110"></a><span class="c">!     CALL FOURTR(CXMA,FELD(MAXL-IND(k)-MLAT(K)+1,L),WSAVE(:,K),MNAUF,MLAT(K),1)</span>
-<a name="ln-111"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXMS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-112"></a>      <span class="n">FELD</span><span class="p">(</span><span class="n">IND</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">IND</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">CXMS</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-113"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXMA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-114"></a>      <span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</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="o">=</span><span class="n">CXMA</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-115"></a><span class="c">!      WRITE(*,*) IND+1,FELD(IND+1,L)</span>
-<a name="ln-116"></a><span class="mi">6</span>   <span class="k">CONTINUE</span>
-<a name="ln-117"></a>
-<a name="ln-118"></a><span class="k">  END SUBROUTINE </span><span class="n">PHSYM</span>
-<a name="ln-119"></a>
-<a name="ln-120"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span> <span class="p">&amp;</span>
-<a name="ln-121"></a>    <span class="n">MNAUF</span><span class="p">,</span><span class="n">MMAX</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-67"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-68"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">CXMS</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">CXMA</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-69"></a>
+<a name="ln-70"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
+<a name="ln-71"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-72"></a>    <span class="kt">REAL </span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span><span class="p">,</span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span>
+<a name="ln-73"></a>
+<a name="ln-74"></a>    <span class="kt">REAL </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>
+<a name="ln-75"></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">MLEVEL</span><span class="p">)</span>
+<a name="ln-76"></a>    <span class="kt">REAL </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">8</span><span class="o">*</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">15</span><span class="p">,</span><span class="n">MAXB</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-77"></a>
+<a name="ln-78"></a>    <span class="k">DO </span><span class="mi">6</span> <span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
+<a name="ln-79"></a>      <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-80"></a>      <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-81"></a>      <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-82"></a>        <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-83"></a>        <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-84"></a>        <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-85"></a>        <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-86"></a>        <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
+<a name="ln-87"></a>        <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
+<a name="ln-88"></a>        <span class="k">IF</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">))</span> <span class="k">THEN</span>
+<a name="ln-89"></a><span class="c">!         Innerste Schleife aufgespalten um if-Abfrage zu sparen</span>
+<a name="ln-90"></a>          <span class="k">DO </span><span class="mi">18</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-91"></a>            <span class="n">SCR</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-92"></a>            <span class="n">SCI</span><span class="o">=</span><span class="n">SCI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-93"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-94"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-95"></a><span class="mi">18</span>        <span class="k">CONTINUE</span>
+<a name="ln-96"></a><span class="k">          </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-97"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-98"></a>          <span class="k">DO </span><span class="mi">19</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-99"></a>            <span class="n">ACR</span><span class="o">=</span><span class="n">ACR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-100"></a>            <span class="n">ACI</span><span class="o">=</span><span class="n">ACI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">K</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-101"></a>            <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-102"></a>            <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-103"></a><span class="mi">19</span>        <span class="k">CONTINUE</span>
+<a name="ln-104"></a><span class="k">        END IF</span>
+<a name="ln-105"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-106"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="p">(</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span>
+<a name="ln-107"></a>        <span class="n">CXMS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span>
+<a name="ln-108"></a>        <span class="n">CXMS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">+</span><span class="n">ACI</span>
+<a name="ln-109"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span>
+<a name="ln-110"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">-</span><span class="n">ACI</span>
+<a name="ln-111"></a><span class="mi">1</span>     <span class="k">CONTINUE</span>
+<a name="ln-112"></a><span class="c">!     CALL FOURTR(CXMS,FELD(IND(k)+1,L),WSAVE(:,K),MNAUF,*MLAT(K),1)</span>
+<a name="ln-113"></a><span class="c">!     CALL FOURTR(CXMA,FELD(MAXL-IND(k)-MLAT(K)+1,L),WSAVE(:,K),MNAUF,MLAT(K),1)</span>
+<a name="ln-114"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXMS</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-115"></a>      <span class="n">FELD</span><span class="p">(</span><span class="n">IND</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">IND</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">+</span><span class="n">MLAT</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="o">=</span><span class="n">CXMS</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-116"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXMA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">IFAX</span><span class="p">(:,</span><span class="n">K</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">),</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-117"></a>      <span class="n">FELD</span><span class="p">(</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</span><span class="p">(</span><span class="n">k</span><span class="p">)</span><span class="o">-</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">MAXL</span><span class="o">-</span><span class="n">IND</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="o">=</span><span class="n">CXMA</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MLAT</span><span class="p">(</span><span class="n">K</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-118"></a><span class="c">!      WRITE(*,*) IND+1,FELD(IND+1,L)</span>
+<a name="ln-119"></a><span class="mi">6</span>   <span class="k">CONTINUE</span>
+<a name="ln-120"></a>
+<a name="ln-121"></a><span class="k">  END SUBROUTINE </span><span class="n">PHSYM</span>
 <a name="ln-122"></a>
-<a name="ln-123"></a><span class="c">!! DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER</span>
-<a name="ln-124"></a><span class="c">!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN</span>
-<a name="ln-125"></a><span class="c">!! RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt</span>
-<a name="ln-126"></a><span class="c">!! Der Erde angegeben werden. Diese Routine ist langsamer als phgrph</span>
-<a name="ln-127"></a>
-<a name="ln-128"></a><span class="c">! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
-<a name="ln-129"></a><span class="c">!          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
-<a name="ln-130"></a><span class="c">! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN</span>
-<a name="ln-131"></a><span class="c">! BREITE = SINUS DER GEOGRAFISCHEN BREITEN</span>
-<a name="ln-132"></a><span class="c">!</span>
-<a name="ln-133"></a><span class="c">! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-134"></a><span class="c">! MAUF   ANZAHL DER LAENGEN UND DER FOURIERKOEFFIZIENTEN</span>
-<a name="ln-135"></a><span class="c">! MANF   ANFANG DES LAENGENBEREICHS FUER DAS GITTER,</span>
-<a name="ln-136"></a><span class="c">!        AUF DAS INTERPOLIERT WERDEN SOLL</span>
-<a name="ln-137"></a><span class="c">! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
-<a name="ln-138"></a><span class="c">! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
-<a name="ln-139"></a><span class="c">! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
-<a name="ln-140"></a>
-<a name="ln-141"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-123"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGCUT</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span> <span class="p">&amp;</span>
+<a name="ln-124"></a>    <span class="n">MNAUF</span><span class="p">,</span><span class="n">MMAX</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-125"></a>
+<a name="ln-126"></a><span class="c">!! Carries out the transformation of a field variable from the phase space</span>
+<a name="ln-127"></a><span class="c">!! into the physical space on spherical coordinates. It is possible to </span>
+<a name="ln-128"></a><span class="c">!! specify a section of the Earth. This subroutine is slower thatn PHGRPH.</span>
+<a name="ln-129"></a>
+<a name="ln-130"></a><span class="c">! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE</span>
+<a name="ln-131"></a><span class="c">!          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF</span>
+<a name="ln-132"></a><span class="c">! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN</span>
+<a name="ln-133"></a><span class="c">! BREITE = SINUS DER GEOGRAFISCHEN BREITEN</span>
+<a name="ln-134"></a><span class="c">!</span>
+<a name="ln-135"></a><span class="c">! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-136"></a><span class="c">! MAUF   ANZAHL DER LAENGEN UND DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-137"></a><span class="c">! MANF   ANFANG DES LAENGENBEREICHS FUER DAS GITTER,</span>
+<a name="ln-138"></a><span class="c">!        AUF DAS INTERPOLIERT WERDEN SOLL</span>
+<a name="ln-139"></a><span class="c">! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN</span>
+<a name="ln-140"></a><span class="c">! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN</span>
+<a name="ln-141"></a><span class="c">! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN</span>
 <a name="ln-142"></a>
-<a name="ln-143"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-143"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
 <a name="ln-144"></a>
-<a name="ln-145"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
-<a name="ln-146"></a>    <span class="kt">REAL </span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">:((</span><span class="n">MMAX</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">MMAX</span><span class="o">+</span><span class="mi">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-147"></a>
-<a name="ln-148"></a>    <span class="k">DIMENSION </span><span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">:(</span><span class="n">MMAX</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">MMAX</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>
-<a name="ln-149"></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>
-<a name="ln-150"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
-<a name="ln-151"></a>    <span class="kt">INTEGER</span><span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-152"></a>
-<a name="ln-153"></a>    <span class="kt">LOGICAL </span><span class="n">SYM</span>
+<a name="ln-145"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-146"></a>
+<a name="ln-147"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
+<a name="ln-148"></a>    <span class="kt">REAL </span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">:((</span><span class="n">MMAX</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">MMAX</span><span class="o">+</span><span class="mi">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-149"></a>
+<a name="ln-150"></a>    <span class="k">DIMENSION </span><span class="n">CXMN</span><span class="p">(</span><span class="mi">0</span><span class="p">:(</span><span class="n">MMAX</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">MMAX</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>
+<a name="ln-151"></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>
+<a name="ln-152"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
+<a name="ln-153"></a>    <span class="kt">INTEGER</span><span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
 <a name="ln-154"></a>
-<a name="ln-155"></a><span class="c">!    write(*,*)mauf,mnauf,manf,maxl</span>
+<a name="ln-155"></a>    <span class="kt">LOGICAL </span><span class="n">SYM</span>
 <a name="ln-156"></a>
-<a name="ln-157"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MAUF</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MNAUF</span><span class="p">)</span> <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;TOO COARSE LONGITUDE RESOLUTION&#39;</span>
-<a name="ln-158"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mi">1</span>    <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="n">MAXL</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mi">1</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="p">&amp;</span>
-<a name="ln-159"></a>        <span class="n">MANF</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">MAUF</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="n">MAXL</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-160"></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;WRONG LONGITUDE RANGE&#39;</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">MAXL</span>
-<a name="ln-161"></a>      <span class="k">STOP</span>
-<a name="ln-162"></a><span class="k">    END IF</span>
-<a name="ln-163"></a>
-<a name="ln-164"></a><span class="c">! Pruefe, ob Ausgabegitter symmetrisch zum Aequator ist</span>
-<a name="ln-165"></a><span class="c">! Wenn ja soll Symmetrie der Legendrepolynome ausgenutzt werden</span>
-<a name="ln-166"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MAXB</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mi">4</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-167"></a><span class="k">      </span><span class="n">SYM</span><span class="o">=</span><span class="p">.</span><span class="n">TRUE</span><span class="p">.</span>
-<a name="ln-168"></a>      <span class="k">DO </span><span class="mi">11</span> <span class="n">J</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span>
-<a name="ln-169"></a>        <span class="k">IF</span> <span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="n">Z</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="n">J</span><span class="p">))</span><span class="o">-</span><span class="nb">ABS</span><span class="p">(</span><span class="n">Z</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">)))</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mf">1E-11</span><span class="p">)</span> <span class="n">SYM</span><span class="o">=</span><span class="p">.</span><span class="n">FALSE</span><span class="p">.</span>
-<a name="ln-170"></a><span class="c">!       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J))</span>
-<a name="ln-171"></a><span class="mi">11</span>    <span class="k">CONTINUE</span>
-<a name="ln-172"></a><span class="c">!!      WRITE(*,*) &#39;Symmetrisch: &#39;,SYM</span>
-<a name="ln-173"></a>    <span class="k">ELSE</span>
-<a name="ln-174"></a><span class="k">      </span><span class="n">SYM</span><span class="o">=</span><span class="p">.</span><span class="n">FALSE</span><span class="p">.</span>
-<a name="ln-175"></a>    <span class="k">END IF</span>
-<a name="ln-176"></a>
-<a name="ln-177"></a>
-<a name="ln-178"></a><span class="k">    IF</span> <span class="p">(</span><span class="n">SYM</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-157"></a><span class="c">!    write(*,*)mauf,mnauf,manf,maxl</span>
+<a name="ln-158"></a>
+<a name="ln-159"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MAUF</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MNAUF</span><span class="p">)</span> <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;TOO COARSE LONGITUDE RESOLUTION&#39;</span>
+<a name="ln-160"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mi">1</span>    <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="n">MAXL</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="mi">1</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="p">&amp;</span>
+<a name="ln-161"></a>        <span class="n">MANF</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">MAUF</span> <span class="p">.</span><span class="nb">OR</span><span class="p">.</span> <span class="n">MAXL</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-162"></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;WRONG LONGITUDE RANGE&#39;</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">MAXL</span>
+<a name="ln-163"></a>      <span class="k">STOP</span>
+<a name="ln-164"></a><span class="k">    END IF</span>
+<a name="ln-165"></a>
+<a name="ln-166"></a><span class="c">! Pruefe, ob Ausgabegitter symmetrisch zum Aequator ist</span>
+<a name="ln-167"></a><span class="c">! Wenn ja soll Symmetrie der Legendrepolynome ausgenutzt werden</span>
+<a name="ln-168"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">MAXB</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mi">4</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-169"></a><span class="k">      </span><span class="n">SYM</span><span class="o">=</span><span class="p">.</span><span class="n">TRUE</span><span class="p">.</span>
+<a name="ln-170"></a>      <span class="k">DO </span><span class="mi">11</span> <span class="n">J</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span>
+<a name="ln-171"></a>        <span class="k">IF</span> <span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="n">Z</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="n">J</span><span class="p">))</span><span class="o">-</span><span class="nb">ABS</span><span class="p">(</span><span class="n">Z</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="n">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">)))</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mf">1E-11</span><span class="p">)</span> <span class="n">SYM</span><span class="o">=</span><span class="p">.</span><span class="n">FALSE</span><span class="p">.</span>
+<a name="ln-172"></a><span class="c">!       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J))</span>
+<a name="ln-173"></a><span class="mi">11</span>    <span class="k">CONTINUE</span>
+<a name="ln-174"></a><span class="c">! !      WRITE(*,*) &#39;Symmetrisch: &#39;,SYM</span>
+<a name="ln-175"></a>    <span class="k">ELSE</span>
+<a name="ln-176"></a><span class="k">      </span><span class="n">SYM</span><span class="o">=</span><span class="p">.</span><span class="n">FALSE</span><span class="p">.</span>
+<a name="ln-177"></a>    <span class="k">END IF</span>
+<a name="ln-178"></a>
 <a name="ln-179"></a>
-<a name="ln-180"></a><span class="c">!$OMP PARALLEL DO</span>
-<a name="ln-181"></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">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-182"></a>        <span class="k">CALL </span><span class="n">PHSYMCUT</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MNAUF</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">MANF</span><span class="p">)</span>
-<a name="ln-183"></a>      <span class="k">END DO</span>
-<a name="ln-184"></a><span class="c">!$OMP END PARALLEL DO</span>
-<a name="ln-185"></a>
-<a name="ln-186"></a>    <span class="k">ELSE</span>
+<a name="ln-180"></a><span class="k">    IF</span> <span class="p">(</span><span class="n">SYM</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-181"></a>
+<a name="ln-182"></a><span class="c">!$OMP PARALLEL DO</span>
+<a name="ln-183"></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">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-184"></a>        <span class="k">CALL </span><span class="n">PHSYMCUT</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MNAUF</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">MANF</span><span class="p">)</span>
+<a name="ln-185"></a>      <span class="k">END DO</span>
+<a name="ln-186"></a><span class="c">!$OMP END PARALLEL DO</span>
 <a name="ln-187"></a>
-<a name="ln-188"></a><span class="c">!$OMP PARALLEL DO</span>
-<a name="ln-189"></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">MAXB</span>
-<a name="ln-190"></a>        <span class="k">CALL </span><span class="n">PHGPNS</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">J</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
-<a name="ln-191"></a>      <span class="k">END DO</span>
-<a name="ln-192"></a><span class="c">!$OMP END PARALLEL DO</span>
-<a name="ln-193"></a>
-<a name="ln-194"></a>    <span class="k">END IF</span>
+<a name="ln-188"></a>    <span class="k">ELSE</span>
+<a name="ln-189"></a>
+<a name="ln-190"></a><span class="c">!$OMP PARALLEL DO</span>
+<a name="ln-191"></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">MAXB</span>
+<a name="ln-192"></a>        <span class="k">CALL </span><span class="n">PHGPNS</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">J</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-193"></a>      <span class="k">END DO</span>
+<a name="ln-194"></a><span class="c">!$OMP END PARALLEL DO</span>
 <a name="ln-195"></a>
-<a name="ln-196"></a><span class="k">    RETURN</span>
+<a name="ln-196"></a>    <span class="k">END IF</span>
 <a name="ln-197"></a>
-<a name="ln-198"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGCUT</span>
+<a name="ln-198"></a><span class="k">    RETURN</span>
 <a name="ln-199"></a>
-<a name="ln-200"></a>  <span class="k">SUBROUTINE </span><span class="n">PHSYMCUT</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MNAUF</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">MANF</span><span class="p">)</span>
+<a name="ln-200"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGCUT</span>
 <a name="ln-201"></a>
-<a name="ln-202"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-202"></a>  <span class="k">SUBROUTINE </span><span class="n">PHSYMCUT</span><span class="p">(</span><span class="n">J</span><span class="p">,</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MNAUF</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">MANF</span><span class="p">)</span>
 <a name="ln-203"></a>
-<a name="ln-204"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
+<a name="ln-204"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
 <a name="ln-205"></a>
-<a name="ln-206"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">CXMA</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-206"></a><span class="c">!   FELD DER FOURIERKOEFFIZIENTEN</span>
 <a name="ln-207"></a>
-<a name="ln-208"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
-<a name="ln-209"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-210"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span>
-<a name="ln-211"></a>
-<a name="ln-212"></a>    <span class="k">DIMENSION </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>
-<a name="ln-213"></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>
-<a name="ln-214"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
-<a name="ln-215"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-216"></a>
-<a name="ln-217"></a>    <span class="k">DO </span><span class="mi">16</span> <span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
-<a name="ln-218"></a>      <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-219"></a>      <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-220"></a>      <span class="k">DO </span><span class="mi">17</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-221"></a>        <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-222"></a>        <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-223"></a>        <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-224"></a>        <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-225"></a>        <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
-<a name="ln-226"></a>        <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
-<a name="ln-227"></a><span class="c">!       Innerste Schleife aufgespalten um if-Abfrage zu sparen</span>
-<a name="ln-228"></a>        <span class="k">DO </span><span class="mi">18</span> <span class="n">K</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-229"></a>          <span class="n">SCR</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-230"></a>          <span class="n">SCI</span><span class="o">=</span><span class="n">SCI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-231"></a>          <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-232"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-233"></a><span class="mi">18</span>      <span class="k">CONTINUE</span>
-<a name="ln-234"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-235"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-236"></a>        <span class="k">DO </span><span class="mi">19</span> <span class="n">K</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
-<a name="ln-237"></a>          <span class="n">ACR</span><span class="o">=</span><span class="n">ACR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-238"></a>          <span class="n">ACI</span><span class="o">=</span><span class="n">ACI</span> <span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
-<a name="ln-239"></a>          <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-240"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-241"></a><span class="mi">19</span>      <span class="k">CONTINUE</span>
-<a name="ln-242"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-243"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">3</span>
-<a name="ln-244"></a>        <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span>
-<a name="ln-245"></a>        <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">+</span><span class="n">ACI</span>
-<a name="ln-246"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span>
-<a name="ln-247"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">-</span><span class="n">ACI</span>
-<a name="ln-248"></a><span class="mi">17</span>    <span class="k">CONTINUE</span>
-<a name="ln-249"></a>
-<a name="ln-250"></a><span class="k">      CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-251"></a>      <span class="k">DO </span><span class="mi">26</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-252"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-253"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-254"></a>        <span class="k">ELSE</span>
-<a name="ln-255"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-256"></a>        <span class="k">END IF</span>
-<a name="ln-257"></a><span class="mi">26</span>    <span class="k">CONTINUE</span>
-<a name="ln-258"></a><span class="k">      CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXMA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-259"></a>      <span class="k">DO </span><span class="mi">36</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-260"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-261"></a><span class="k">          </span><span class="n">FELD</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">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXMA</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-262"></a>        <span class="k">ELSE</span>
-<a name="ln-263"></a><span class="k">          </span><span class="n">FELD</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">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXMA</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-264"></a>        <span class="k">END IF</span>
-<a name="ln-265"></a><span class="mi">36</span>    <span class="k">CONTINUE</span>
-<a name="ln-266"></a><span class="mi">16</span>  <span class="k">CONTINUE</span>
-<a name="ln-267"></a>
-<a name="ln-268"></a><span class="k">  END SUBROUTINE </span><span class="n">PHSYMCUT</span>
+<a name="ln-208"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span><span class="n">CXMA</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-209"></a>
+<a name="ln-210"></a><span class="c">!   FELD DER LEGENDREPOLYNOME FUER EINE BREITE</span>
+<a name="ln-211"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-212"></a>    <span class="kt">REAL </span><span class="n">SCR</span><span class="p">,</span><span class="n">SCI</span><span class="p">,</span><span class="n">ACR</span><span class="p">,</span><span class="n">ACI</span>
+<a name="ln-213"></a>
+<a name="ln-214"></a>    <span class="k">DIMENSION </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>
+<a name="ln-215"></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>
+<a name="ln-216"></a>    <span class="k">DIMENSION </span><span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
+<a name="ln-217"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<a name="ln-218"></a>
+<a name="ln-219"></a>    <span class="k">DO </span><span class="mi">16</span> <span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
+<a name="ln-220"></a>      <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-221"></a>      <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-222"></a>      <span class="k">DO </span><span class="mi">17</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-223"></a>        <span class="n">SCR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-224"></a>        <span class="n">SCI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-225"></a>        <span class="n">ACR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-226"></a>        <span class="n">ACI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-227"></a>        <span class="n">LLS</span><span class="o">=</span><span class="n">LL</span>
+<a name="ln-228"></a>        <span class="n">LLPS</span><span class="o">=</span><span class="n">LLP</span>
+<a name="ln-229"></a><span class="c">!       Innerste Schleife aufgespalten um if-Abfrage zu sparen</span>
+<a name="ln-230"></a>        <span class="k">DO </span><span class="mi">18</span> <span class="n">K</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-231"></a>          <span class="n">SCR</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-232"></a>          <span class="n">SCI</span><span class="o">=</span><span class="n">SCI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-233"></a>          <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-234"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-235"></a><span class="mi">18</span>      <span class="k">CONTINUE</span>
+<a name="ln-236"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-237"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-238"></a>        <span class="k">DO </span><span class="mi">19</span> <span class="n">K</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="mi">2</span>
+<a name="ln-239"></a>          <span class="n">ACR</span><span class="o">=</span><span class="n">ACR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-240"></a>          <span class="n">ACI</span><span class="o">=</span><span class="n">ACI</span> <span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">,</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">L</span><span class="p">)</span>
+<a name="ln-241"></a>          <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-242"></a>          <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-243"></a><span class="mi">19</span>      <span class="k">CONTINUE</span>
+<a name="ln-244"></a><span class="k">        </span><span class="n">LL</span><span class="o">=</span><span class="n">LLS</span><span class="o">+</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-245"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLPS</span><span class="o">+</span><span class="n">MNAUF</span><span class="o">-</span><span class="n">I</span><span class="o">+</span><span class="mi">3</span>
+<a name="ln-246"></a>        <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">+</span><span class="n">ACR</span>
+<a name="ln-247"></a>        <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">+</span><span class="n">ACI</span>
+<a name="ln-248"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">SCR</span><span class="o">-</span><span class="n">ACR</span>
+<a name="ln-249"></a>        <span class="n">CXMA</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">SCI</span><span class="o">-</span><span class="n">ACI</span>
+<a name="ln-250"></a><span class="mi">17</span>    <span class="k">CONTINUE</span>
+<a name="ln-251"></a>
+<a name="ln-252"></a><span class="k">      CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-253"></a>      <span class="k">DO </span><span class="mi">26</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-254"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-255"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-256"></a>        <span class="k">ELSE</span>
+<a name="ln-257"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-258"></a>        <span class="k">END IF</span>
+<a name="ln-259"></a><span class="mi">26</span>    <span class="k">CONTINUE</span>
+<a name="ln-260"></a><span class="k">      CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXMA</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-261"></a>      <span class="k">DO </span><span class="mi">36</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-262"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-263"></a><span class="k">          </span><span class="n">FELD</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">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXMA</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-264"></a>        <span class="k">ELSE</span>
+<a name="ln-265"></a><span class="k">          </span><span class="n">FELD</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">MAXB</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXMA</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-266"></a>        <span class="k">END IF</span>
+<a name="ln-267"></a><span class="mi">36</span>    <span class="k">CONTINUE</span>
+<a name="ln-268"></a><span class="mi">16</span>  <span class="k">CONTINUE</span>
 <a name="ln-269"></a>
-<a name="ln-270"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGPNS</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">J</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-270"></a><span class="k">  END SUBROUTINE </span><span class="n">PHSYMCUT</span>
 <a name="ln-271"></a>
-<a name="ln-272"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-273"></a><span class="k">    </span>
-<a name="ln-274"></a><span class="k">    </span><span class="kt">INTEGER</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">J</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>
-<a name="ln-275"></a>
-<a name="ln-276"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-277"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
-<a name="ln-278"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</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>
-<a name="ln-279"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
-<a name="ln-280"></a>    <span class="kt">REAL</span> <span class="kd">::</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>
-<a name="ln-281"></a>
-<a name="ln-282"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-283"></a>    <span class="kt">INTEGER </span><span class="n">I</span><span class="p">,</span><span class="n">L</span>
-<a name="ln-284"></a>
-<a name="ln-285"></a>    <span class="k">DO </span><span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
-<a name="ln-286"></a>      <span class="k">CALL </span><span class="n">LEGTR</span><span class="p">(</span><span class="n">CXMN</span><span class="p">(:,</span><span class="n">L</span><span class="p">),</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">)</span>
-<a name="ln-287"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-288"></a>
-<a name="ln-289"></a>      <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-290"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-291"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-292"></a>        <span class="k">ELSE</span>
-<a name="ln-293"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-294"></a>        <span class="k">END IF</span>
-<a name="ln-295"></a><span class="k">      END DO</span>
-<a name="ln-296"></a><span class="k">    END DO</span>
-<a name="ln-297"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGPNS</span>
-<a name="ln-298"></a>
-<a name="ln-299"></a>  <span class="k">SUBROUTINE </span><span class="n">LEGTR</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">)</span>
+<a name="ln-272"></a>  <span class="k">SUBROUTINE </span><span class="n">PHGPNS</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">FELD</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">J</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</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>
+<a name="ln-273"></a>
+<a name="ln-274"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-275"></a><span class="k">    </span>
+<a name="ln-276"></a><span class="k">    </span><span class="kt">INTEGER</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">MANF</span><span class="p">,</span><span class="n">J</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>
+<a name="ln-277"></a>
+<a name="ln-278"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-279"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span><span class="n">MAXB</span><span class="p">)</span>
+<a name="ln-280"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</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>
+<a name="ln-281"></a>    <span class="kt">REAL</span><span class="p">,</span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">WSAVE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="n">MAUF</span><span class="o">+</span><span class="mi">15</span><span class="p">)</span>
+<a name="ln-282"></a>    <span class="kt">REAL</span> <span class="kd">::</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>
+<a name="ln-283"></a>
+<a name="ln-284"></a>    <span class="kt">INTEGER</span> <span class="kd">::</span> <span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<a name="ln-285"></a>    <span class="kt">INTEGER </span><span class="n">I</span><span class="p">,</span><span class="n">L</span>
+<a name="ln-286"></a>
+<a name="ln-287"></a>    <span class="k">DO </span><span class="n">L</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">MLEVEL</span>
+<a name="ln-288"></a>      <span class="k">CALL </span><span class="n">LEGTR</span><span class="p">(</span><span class="n">CXMN</span><span class="p">(:,</span><span class="n">L</span><span class="p">),</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">(:,</span><span class="n">J</span><span class="p">),</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">)</span>
+<a name="ln-289"></a>      <span class="k">CALL </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-290"></a>
+<a name="ln-291"></a>      <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-292"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span> <span class="p">.</span><span class="n">LE</span><span class="p">.</span> <span class="n">MAUF</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-293"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-294"></a>        <span class="k">ELSE</span>
+<a name="ln-295"></a><span class="k">          </span><span class="n">FELD</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">J</span><span class="p">,</span><span class="n">L</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">MANF</span><span class="o">-</span><span class="n">MAUF</span><span class="o">+</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-296"></a>        <span class="k">END IF</span>
+<a name="ln-297"></a><span class="k">      END DO</span>
+<a name="ln-298"></a><span class="k">    END DO</span>
+<a name="ln-299"></a><span class="k">  END SUBROUTINE </span><span class="n">PHGPNS</span>
 <a name="ln-300"></a>
-<a name="ln-301"></a><span class="c">!!   DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM</span>
+<a name="ln-301"></a>  <span class="k">SUBROUTINE </span><span class="n">LEGTR</span><span class="p">(</span><span class="n">CXMN</span><span class="p">,</span><span class="n">CXM</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">)</span>
 <a name="ln-302"></a>
-<a name="ln-303"></a>
-<a name="ln-304"></a>    <span class="k">IMPLICIT NONE</span>
-<a name="ln-305"></a>
-<a name="ln-306"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">I</span><span class="p">,</span><span class="n">J</span>
-<a name="ln-307"></a>    <span class="kt">REAL </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-308"></a>    <span class="kt">REAL </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>
-<a name="ln-309"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-310"></a>    <span class="kt">REAL </span><span class="n">CI</span><span class="p">,</span><span class="n">CR</span>
-<a name="ln-311"></a>
-<a name="ln-312"></a>    <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-313"></a>    <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-314"></a>    <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-315"></a>      <span class="n">CR</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-316"></a>      <span class="n">CI</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-317"></a>      <span class="k">DO </span><span class="mi">2</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span>
-<a name="ln-318"></a>        <span class="n">CR</span><span class="o">=</span><span class="n">CR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">)</span>
-<a name="ln-319"></a>        <span class="n">CI</span><span class="o">=</span><span class="n">CI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-320"></a>        <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-321"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-322"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
-<a name="ln-323"></a><span class="k">      </span><span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-324"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">CR</span>
-<a name="ln-325"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">CI</span>
-<a name="ln-326"></a><span class="mi">1</span>   <span class="k">CONTINUE</span>
-<a name="ln-327"></a><span class="k">    RETURN</span>
-<a name="ln-328"></a><span class="k">    </span>
-<a name="ln-329"></a><span class="k">  END SUBROUTINE </span><span class="n">LEGTR</span>
-<a name="ln-330"></a>
-<a name="ln-331"></a>  <span class="k">SUBROUTINE </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="nb">ISIGN</span><span class="p">)</span>
-<a name="ln-332"></a>
-<a name="ln-333"></a><span class="c">!!     BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS</span>
-<a name="ln-334"></a>
-<a name="ln-335"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-336"></a>
-<a name="ln-337"></a>    <span class="k">DIMENSION </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-338"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">WSAVE</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">),</span><span class="n">TRIGS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">)</span>
-<a name="ln-339"></a>    <span class="kt">INTEGER </span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
-<a name="ln-340"></a>
-<a name="ln-341"></a>    <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-342"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="mf">0.0</span>
-<a name="ln-343"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="mf">0.0</span>
-<a name="ln-344"></a>    <span class="k">END DO</span>
-<a name="ln-345"></a>
-<a name="ln-346"></a><span class="k">    CALL </span><span class="n">FFT99</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-347"></a>
-<a name="ln-348"></a>    <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
-<a name="ln-349"></a>      <span class="n">CXM</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-350"></a>    <span class="k">END DO</span>
-<a name="ln-351"></a>
-<a name="ln-352"></a><span class="k">    RETURN</span>
-<a name="ln-353"></a>
-<a name="ln-354"></a><span class="k">  END SUBROUTINE </span><span class="n">RFOURTR</span>
-<a name="ln-355"></a>
-<a name="ln-356"></a>  <span class="k">SUBROUTINE </span><span class="n">GAULEG</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span><span class="n">X2</span><span class="p">,</span><span class="n">X</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-357"></a>
-<a name="ln-358"></a><span class="c">!! BERECHNET DIE GAUSS+SCHEN BREITEN</span>
-<a name="ln-359"></a>
-<a name="ln-360"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-361"></a>
-<a name="ln-362"></a>    <span class="k">DIMENSION </span><span class="n">X</span><span class="p">(</span><span class="n">N</span><span class="p">),</span><span class="n">W</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
-<a name="ln-363"></a>    <span class="k">PARAMETER</span> <span class="p">(</span><span class="n">EPS</span><span class="o">=</span><span class="mf">3.D-14</span><span class="p">)</span>
-<a name="ln-364"></a>
-<a name="ln-365"></a>    <span class="n">M</span><span class="o">=</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
-<a name="ln-366"></a>    <span class="n">XM</span><span class="o">=</span><span class="mf">0.5D0</span><span class="o">*</span><span class="p">(</span><span class="n">X2</span><span class="o">+</span><span class="n">X1</span><span class="p">)</span>
-<a name="ln-367"></a>    <span class="n">XL</span><span class="o">=</span><span class="mf">0.5D0</span><span class="o">*</span><span class="p">(</span><span class="n">X2</span><span class="o">-</span><span class="n">X1</span><span class="p">)</span>
-<a name="ln-368"></a>    <span class="k">DO </span><span class="mi">12</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">M</span>
-<a name="ln-369"></a>      <span class="n">Z</span><span class="o">=</span><span class="nb">DCOS</span><span class="p">(</span><span class="mf">3.141592654D0</span><span class="o">*</span><span class="p">(</span><span class="n">I</span><span class="o">-</span><span class="p">.</span><span class="mi">25</span><span class="n">D0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="p">.</span><span class="mi">5</span><span class="n">D0</span><span class="p">))</span>
-<a name="ln-370"></a><span class="mi">1</span>     <span class="k">CONTINUE</span>
-<a name="ln-371"></a><span class="k">      </span><span class="n">P1</span><span class="o">=</span><span class="mf">1.D0</span>
-<a name="ln-372"></a>      <span class="n">P2</span><span class="o">=</span><span class="mf">0.D0</span>
-<a name="ln-373"></a>      <span class="k">DO </span><span class="mi">11</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">N</span>
-<a name="ln-374"></a>        <span class="n">P3</span><span class="o">=</span><span class="n">P2</span>
-<a name="ln-375"></a>        <span class="n">P2</span><span class="o">=</span><span class="n">P1</span>
-<a name="ln-376"></a>        <span class="n">P1</span><span class="o">=</span><span class="p">((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="n">Z</span><span class="o">*</span><span class="n">P2</span><span class="o">-</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="n">P3</span><span class="p">)</span><span class="o">/</span><span class="n">J</span>
-<a name="ln-377"></a><span class="mi">11</span>    <span class="k">CONTINUE</span>
-<a name="ln-378"></a><span class="k">      </span><span class="n">PP</span><span class="o">=</span><span class="n">N</span><span class="o">*</span><span class="p">(</span><span class="n">Z</span><span class="o">*</span><span class="n">P1</span><span class="o">-</span><span class="n">P2</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">Z</span><span class="o">*</span><span class="n">Z</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span>
-<a name="ln-379"></a>      <span class="n">Z1</span><span class="o">=</span><span class="n">Z</span>
-<a name="ln-380"></a>      <span class="n">Z</span><span class="o">=</span><span class="n">Z1</span><span class="o">-</span><span class="n">P1</span><span class="o">/</span><span class="n">PP</span>
-<a name="ln-381"></a>      <span class="k">IF</span> <span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="n">Z</span><span class="o">-</span><span class="n">Z1</span><span class="p">)</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">EPS</span><span class="p">)</span><span class="n">GO</span> <span class="n">TO</span> <span class="mi">1</span>
-<a name="ln-382"></a>      <span class="n">X</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">XM</span><span class="o">-</span><span class="n">XL</span><span class="o">*</span><span class="n">Z</span>
-<a name="ln-383"></a>      <span class="n">X</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">XM</span><span class="o">+</span><span class="n">XL</span><span class="o">*</span><span class="n">Z</span>
-<a name="ln-384"></a>      <span class="n">W</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">XL</span><span class="o">/</span><span class="p">((</span><span class="mf">1.D0</span><span class="o">-</span><span class="n">Z</span><span class="o">*</span><span class="n">Z</span><span class="p">)</span><span class="o">*</span><span class="n">PP</span><span class="o">*</span><span class="n">PP</span><span class="p">)</span>
-<a name="ln-385"></a>      <span class="n">W</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">W</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
-<a name="ln-386"></a><span class="mi">12</span>  <span class="k">CONTINUE</span>
-<a name="ln-387"></a>
-<a name="ln-388"></a><span class="k">    RETURN</span>
-<a name="ln-389"></a>
-<a name="ln-390"></a><span class="k">  END SUBROUTINE </span><span class="n">GAULEG</span>
-<a name="ln-391"></a>
+<a name="ln-303"></a><span class="c">!! Calculate the Fourier coefficients CXM</span>
+<a name="ln-304"></a>
+<a name="ln-305"></a>    <span class="k">IMPLICIT NONE</span>
+<a name="ln-306"></a>
+<a name="ln-307"></a><span class="k">    </span><span class="kt">INTEGER </span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAUF</span><span class="p">,</span><span class="n">LL</span><span class="p">,</span><span class="n">LLP</span><span class="p">,</span><span class="n">I</span><span class="p">,</span><span class="n">J</span>
+<a name="ln-308"></a>    <span class="kt">REAL </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-309"></a>    <span class="kt">REAL </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>
+<a name="ln-310"></a>    <span class="kt">REAL </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-311"></a>    <span class="kt">REAL </span><span class="n">CI</span><span class="p">,</span><span class="n">CR</span>
+<a name="ln-312"></a>
+<a name="ln-313"></a>    <span class="n">LL</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-314"></a>    <span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-315"></a>    <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-316"></a>      <span class="n">CR</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-317"></a>      <span class="n">CI</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-318"></a>      <span class="k">DO </span><span class="mi">2</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span>
+<a name="ln-319"></a>        <span class="n">CR</span><span class="o">=</span><span class="n">CR</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="p">)</span>
+<a name="ln-320"></a>        <span class="n">CI</span><span class="o">=</span><span class="n">CI</span><span class="o">+</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="p">)</span><span class="o">*</span><span class="n">CXMN</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-321"></a>        <span class="n">LL</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-322"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-323"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
+<a name="ln-324"></a><span class="k">      </span><span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-325"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">CR</span>
+<a name="ln-326"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="n">CI</span>
+<a name="ln-327"></a><span class="mi">1</span>   <span class="k">CONTINUE</span>
+<a name="ln-328"></a><span class="k">    RETURN</span>
+<a name="ln-329"></a><span class="k">    </span>
+<a name="ln-330"></a><span class="k">  END SUBROUTINE </span><span class="n">LEGTR</span>
+<a name="ln-331"></a>
+<a name="ln-332"></a>  <span class="k">SUBROUTINE </span><span class="n">RFOURTR</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="nb">ISIGN</span><span class="p">)</span>
+<a name="ln-333"></a>
+<a name="ln-334"></a><span class="c">!!  Calculates the Fourier sum with an FFT algorithm</span>
+<a name="ln-335"></a>
+<a name="ln-336"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-337"></a>
+<a name="ln-338"></a>    <span class="k">DIMENSION </span><span class="n">CXM</span><span class="p">(</span><span class="mi">0</span><span class="p">:</span><span class="n">MAXAUF</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-339"></a>    <span class="kt">REAL</span> <span class="kd">::</span> <span class="n">WSAVE</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">),</span><span class="n">TRIGS</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">MAXL</span><span class="p">)</span>
+<a name="ln-340"></a>    <span class="kt">INTEGER </span><span class="n">IFAX</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
+<a name="ln-341"></a>
+<a name="ln-342"></a>    <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-343"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="mf">0.0</span>
+<a name="ln-344"></a>      <span class="n">CXM</span><span class="p">(</span><span class="mi">2</span><span class="o">*</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="mf">0.0</span>
+<a name="ln-345"></a>    <span class="k">END DO</span>
+<a name="ln-346"></a>
+<a name="ln-347"></a><span class="k">    CALL </span><span class="n">FFT99</span><span class="p">(</span><span class="n">CXM</span><span class="p">,</span><span class="n">WSAVE</span><span class="p">,</span><span class="n">TRIGS</span><span class="p">,</span><span class="n">IFAX</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="n">MAXL</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-348"></a>
+<a name="ln-349"></a>    <span class="k">DO </span><span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MAXL</span><span class="o">-</span><span class="mi">1</span>
+<a name="ln-350"></a>      <span class="n">CXM</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">CXM</span><span class="p">(</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-351"></a>    <span class="k">END DO</span>
+<a name="ln-352"></a>
+<a name="ln-353"></a><span class="k">    RETURN</span>
+<a name="ln-354"></a>
+<a name="ln-355"></a><span class="k">  END SUBROUTINE </span><span class="n">RFOURTR</span>
+<a name="ln-356"></a>
+<a name="ln-357"></a>  <span class="k">SUBROUTINE </span><span class="n">GAULEG</span><span class="p">(</span><span class="n">X1</span><span class="p">,</span><span class="n">X2</span><span class="p">,</span><span class="n">X</span><span class="p">,</span><span class="n">W</span><span class="p">,</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-358"></a>
+<a name="ln-359"></a><span class="c">!! Calculates the Gaussian latitudes</span>
+<a name="ln-360"></a>
+<a name="ln-361"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-362"></a>
+<a name="ln-363"></a>    <span class="k">DIMENSION </span><span class="n">X</span><span class="p">(</span><span class="n">N</span><span class="p">),</span><span class="n">W</span><span class="p">(</span><span class="n">N</span><span class="p">)</span>
+<a name="ln-364"></a>    <span class="k">PARAMETER</span> <span class="p">(</span><span class="n">EPS</span><span class="o">=</span><span class="mf">3.D-14</span><span class="p">)</span>
+<a name="ln-365"></a>
+<a name="ln-366"></a>    <span class="n">M</span><span class="o">=</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span>
+<a name="ln-367"></a>    <span class="n">XM</span><span class="o">=</span><span class="mf">0.5D0</span><span class="o">*</span><span class="p">(</span><span class="n">X2</span><span class="o">+</span><span class="n">X1</span><span class="p">)</span>
+<a name="ln-368"></a>    <span class="n">XL</span><span class="o">=</span><span class="mf">0.5D0</span><span class="o">*</span><span class="p">(</span><span class="n">X2</span><span class="o">-</span><span class="n">X1</span><span class="p">)</span>
+<a name="ln-369"></a>    <span class="k">DO </span><span class="mi">12</span> <span class="n">I</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">M</span>
+<a name="ln-370"></a>      <span class="n">Z</span><span class="o">=</span><span class="nb">DCOS</span><span class="p">(</span><span class="mf">3.141592654D0</span><span class="o">*</span><span class="p">(</span><span class="n">I</span><span class="o">-</span><span class="p">.</span><span class="mi">25</span><span class="n">D0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="p">.</span><span class="mi">5</span><span class="n">D0</span><span class="p">))</span>
+<a name="ln-371"></a><span class="mi">1</span>     <span class="k">CONTINUE</span>
+<a name="ln-372"></a><span class="k">      </span><span class="n">P1</span><span class="o">=</span><span class="mf">1.D0</span>
+<a name="ln-373"></a>      <span class="n">P2</span><span class="o">=</span><span class="mf">0.D0</span>
+<a name="ln-374"></a>      <span class="k">DO </span><span class="mi">11</span> <span class="n">J</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">N</span>
+<a name="ln-375"></a>        <span class="n">P3</span><span class="o">=</span><span class="n">P2</span>
+<a name="ln-376"></a>        <span class="n">P2</span><span class="o">=</span><span class="n">P1</span>
+<a name="ln-377"></a>        <span class="n">P1</span><span class="o">=</span><span class="p">((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="n">Z</span><span class="o">*</span><span class="n">P2</span><span class="o">-</span><span class="p">(</span><span class="n">J</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="n">P3</span><span class="p">)</span><span class="o">/</span><span class="n">J</span>
+<a name="ln-378"></a><span class="mi">11</span>    <span class="k">CONTINUE</span>
+<a name="ln-379"></a><span class="k">      </span><span class="n">PP</span><span class="o">=</span><span class="n">N</span><span class="o">*</span><span class="p">(</span><span class="n">Z</span><span class="o">*</span><span class="n">P1</span><span class="o">-</span><span class="n">P2</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">Z</span><span class="o">*</span><span class="n">Z</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span>
+<a name="ln-380"></a>      <span class="n">Z1</span><span class="o">=</span><span class="n">Z</span>
+<a name="ln-381"></a>      <span class="n">Z</span><span class="o">=</span><span class="n">Z1</span><span class="o">-</span><span class="n">P1</span><span class="o">/</span><span class="n">PP</span>
+<a name="ln-382"></a>      <span class="k">IF</span> <span class="p">(</span><span class="nb">ABS</span><span class="p">(</span><span class="n">Z</span><span class="o">-</span><span class="n">Z1</span><span class="p">)</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="n">EPS</span><span class="p">)</span><span class="n">GO</span> <span class="n">TO</span> <span class="mi">1</span>
+<a name="ln-383"></a>      <span class="n">X</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">XM</span><span class="o">-</span><span class="n">XL</span><span class="o">*</span><span class="n">Z</span>
+<a name="ln-384"></a>      <span class="n">X</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">XM</span><span class="o">+</span><span class="n">XL</span><span class="o">*</span><span class="n">Z</span>
+<a name="ln-385"></a>      <span class="n">W</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">XL</span><span class="o">/</span><span class="p">((</span><span class="mf">1.D0</span><span class="o">-</span><span class="n">Z</span><span class="o">*</span><span class="n">Z</span><span class="p">)</span><span class="o">*</span><span class="n">PP</span><span class="o">*</span><span class="n">PP</span><span class="p">)</span>
+<a name="ln-386"></a>      <span class="n">W</span><span class="p">(</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="o">-</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">W</span><span class="p">(</span><span class="n">I</span><span class="p">)</span>
+<a name="ln-387"></a><span class="mi">12</span>  <span class="k">CONTINUE</span>
+<a name="ln-388"></a>
+<a name="ln-389"></a><span class="k">    RETURN</span>
+<a name="ln-390"></a>
+<a name="ln-391"></a><span class="k">  END SUBROUTINE </span><span class="n">GAULEG</span>
 <a name="ln-392"></a>
-<a name="ln-393"></a>  <span class="k">SUBROUTINE </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">LL</span><span class="p">,</span><span class="n">X</span><span class="p">,</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-394"></a>
-<a name="ln-395"></a><span class="c">!! PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN</span>
-<a name="ln-396"></a><span class="c">!! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)</span>
-<a name="ln-397"></a><span class="c">!! UND SCHREIBT SIE IN DAS FELD Z</span>
-<a name="ln-398"></a><span class="c">! Die Polynome sind wie im ECMWF indiziert, d.h.</span>
-<a name="ln-399"></a><span class="c">! P00,P10,P11,P20,P21,P22,...</span>
-<a name="ln-400"></a><span class="c">! Ansonsten ist die Routine analog zu PLGNDN</span>
-<a name="ln-401"></a><span class="c">! X IST DER COSINUS DES ZENITWINKELS ODER</span>
-<a name="ln-402"></a><span class="c">!       DER SINUS DER GEOGRAFISCHEN BREITE</span>
-<a name="ln-403"></a>
-<a name="ln-404"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-405"></a>
-<a name="ln-406"></a>    <span class="k">DIMENSION </span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">:((</span><span class="n">LL</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">LL</span><span class="o">+</span><span class="mi">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-407"></a>
-<a name="ln-408"></a>    <span class="n">L</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
-<a name="ln-409"></a>    <span class="n">I</span><span class="o">=</span><span class="mi">1</span>
-<a name="ln-410"></a>    <span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">=</span><span class="mf">1.D0</span>
-<a name="ln-411"></a>    <span class="n">FACT</span><span class="o">=</span><span class="mf">1.D0</span>
-<a name="ln-412"></a>    <span class="n">POT</span><span class="o">=</span><span class="mf">1.D0</span>
-<a name="ln-413"></a>    <span class="n">SOMX2</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">(</span><span class="mf">1.D0</span><span class="o">-</span><span class="n">X</span><span class="o">*</span><span class="n">X</span><span class="p">)</span>
-<a name="ln-414"></a>    <span class="k">DO </span><span class="mi">14</span> <span class="n">J</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">L</span>
-<a name="ln-415"></a>      <span class="n">DJ</span><span class="o">=</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span>
-<a name="ln-416"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">J</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-417"></a><span class="k">        </span><span class="n">FACT</span><span class="o">=</span><span class="n">FACT</span><span class="o">*</span><span class="p">(</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="p">)</span>
-<a name="ln-418"></a>        <span class="n">POT</span><span class="o">=</span><span class="n">POT</span><span class="o">*</span><span class="n">SOMX2</span>
-<a name="ln-419"></a>        <span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="n">FACT</span><span class="p">)</span><span class="o">*</span><span class="n">POT</span>
-<a name="ln-420"></a>        <span class="n">I</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-421"></a>      <span class="k">END IF</span>
-<a name="ln-422"></a><span class="k">      IF</span> <span class="p">(</span><span class="n">J</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">L</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-423"></a><span class="k">        </span><span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">X</span><span class="o">*</span><span class="nb">DSQRT</span><span class="p">((</span><span class="mf">4.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">8.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">3.D0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">1.D0</span><span class="p">))</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-424"></a>        <span class="n">I</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-425"></a>      <span class="k">END IF</span>
-<a name="ln-426"></a><span class="k">      </span><span class="n">DK</span><span class="o">=</span><span class="n">DJ</span><span class="o">+</span><span class="mf">2.D0</span>
-<a name="ln-427"></a>      <span class="k">DO </span><span class="mi">14</span> <span class="n">K</span><span class="o">=</span><span class="n">J</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span><span class="n">L</span>
-<a name="ln-428"></a>        <span class="n">DDK</span><span class="o">=</span><span class="p">(</span><span class="n">DK</span><span class="o">*</span><span class="n">DK</span><span class="o">-</span><span class="n">DJ</span><span class="o">*</span><span class="n">DJ</span><span class="p">)</span>
-<a name="ln-429"></a>        <span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">X</span><span class="o">*</span><span class="nb">DSQRT</span><span class="p">((</span><span class="mf">4.D0</span><span class="o">*</span><span class="n">DK</span><span class="o">*</span><span class="n">DK</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">/</span><span class="n">DDK</span><span class="p">)</span><span class="o">*</span><span class="n">Z</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">&amp;</span>
-<a name="ln-430"></a>          <span class="nb">DSQRT</span><span class="p">(((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DK</span><span class="o">+</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">DK</span><span class="o">-</span><span class="n">DJ</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">DK</span><span class="o">+</span><span class="n">DJ</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">))</span><span class="o">/</span> <span class="p">&amp;</span>
-<a name="ln-431"></a>          <span class="p">((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DK</span><span class="o">-</span><span class="mf">3.D0</span><span class="p">)</span><span class="o">*</span><span class="n">DDK</span><span class="p">))</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-432"></a>        <span class="n">DK</span><span class="o">=</span><span class="n">DK</span><span class="o">+</span><span class="mf">1.D0</span>
-<a name="ln-433"></a>        <span class="n">I</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-434"></a><span class="mi">14</span>  <span class="k">CONTINUE</span>
-<a name="ln-435"></a>
-<a name="ln-436"></a><span class="k">    RETURN</span>
-<a name="ln-437"></a>
-<a name="ln-438"></a><span class="k">  END SUBROUTINE </span><span class="n">PLGNFA</span>
-<a name="ln-439"></a>
-<a name="ln-440"></a>  <span class="k">SUBROUTINE </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">DZ</span><span class="p">)</span>
-<a name="ln-441"></a>
-<a name="ln-442"></a><span class="c">!! DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN</span>
-<a name="ln-443"></a><span class="c">!! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)</span>
-<a name="ln-444"></a><span class="c">!! UND SCHREIBT SIE IN DAS FELD DZ</span>
-<a name="ln-445"></a><span class="c">! DIE REIHENFOLGE IST</span>
-<a name="ln-446"></a><span class="c">! P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)</span>
-<a name="ln-447"></a>
-<a name="ln-448"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
-<a name="ln-449"></a>
-<a name="ln-450"></a>    <span class="k">DIMENSION </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-451"></a>    <span class="k">DIMENSION </span><span class="n">DZ</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">2</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">3</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
-<a name="ln-452"></a>
-<a name="ln-453"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">.</span><span class="n">NE</span><span class="p">.</span> <span class="mf">1.D0</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-454"></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;DPLGND: Z(0) must be 1.0&#39;</span>
-<a name="ln-455"></a>      <span class="k">STOP</span>
-<a name="ln-456"></a><span class="k">    END IF</span>
-<a name="ln-457"></a>
-<a name="ln-458"></a><span class="k">    </span><span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-459"></a>    <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-460"></a>    <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-461"></a>      <span class="k">DO </span><span class="mi">2</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-462"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">I</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">J</span><span class="p">)</span> <span class="k">THEN</span>
-<a name="ln-463"></a><span class="k">          </span><span class="n">WURZELA</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">(</span><span class="nb">DBLE</span><span class="p">((</span><span class="n">J</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">J</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">I</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">J</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">J</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>
-<a name="ln-464"></a>          <span class="n">DZ</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span><span class="o">=</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">WURZELA</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-465"></a>        <span class="k">ELSE</span>
-<a name="ln-466"></a><span class="k">          </span><span class="n">WURZELB</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">(</span><span class="nb">DBLE</span><span class="p">((</span><span class="n">J</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">J</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">I</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">J</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">J</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>
-<a name="ln-467"></a>          <span class="n">DZ</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span><span class="o">=</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">WURZELB</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">WURZELA</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="ln-468"></a>          <span class="n">WURZELA</span><span class="o">=</span><span class="n">WURZELB</span>
-<a name="ln-469"></a>        <span class="k">END IF</span>
-<a name="ln-470"></a><span class="k">        </span><span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-471"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-472"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
-<a name="ln-473"></a><span class="k">      </span><span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-474"></a><span class="mi">1</span>   <span class="k">CONTINUE</span>
-<a name="ln-475"></a>
-<a name="ln-476"></a><span class="k">    RETURN</span>
-<a name="ln-477"></a>
-<a name="ln-478"></a><span class="k">  END SUBROUTINE </span><span class="n">DPLGND</span>
+<a name="ln-393"></a>
+<a name="ln-394"></a>  <span class="k">SUBROUTINE </span><span class="n">PLGNFA</span><span class="p">(</span><span class="n">LL</span><span class="p">,</span><span class="n">X</span><span class="p">,</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-395"></a>
+<a name="ln-396"></a><span class="c">!! Calculates all normalised associated Legendre functions from </span>
+<a name="ln-397"></a><span class="c">!! P00(X) to PLL(X) and writes them into the field Z.</span>
+<a name="ln-398"></a><span class="c">!! The polynomials have indices as with ECMWF, i.e.</span>
+<a name="ln-399"></a><span class="c">!! P00,P10,P11,P20,P21,P22,...</span>
+<a name="ln-400"></a><span class="c">!! Otherwise, this subroutine is analogous to PLGNDN</span>
+<a name="ln-401"></a>
+<a name="ln-402"></a><span class="c">! X IST DER COSINUS DES ZENITWINKELS ODER</span>
+<a name="ln-403"></a><span class="c">!       DER SINUS DER GEOGRAFISCHEN BREITE</span>
+<a name="ln-404"></a>
+<a name="ln-405"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-406"></a>
+<a name="ln-407"></a>    <span class="k">DIMENSION </span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">:((</span><span class="n">LL</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">LL</span><span class="o">+</span><span class="mi">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-408"></a>
+<a name="ln-409"></a>    <span class="n">L</span><span class="o">=</span><span class="n">LL</span><span class="o">+</span><span class="mi">2</span>
+<a name="ln-410"></a>    <span class="n">I</span><span class="o">=</span><span class="mi">1</span>
+<a name="ln-411"></a>    <span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">=</span><span class="mf">1.D0</span>
+<a name="ln-412"></a>    <span class="n">FACT</span><span class="o">=</span><span class="mf">1.D0</span>
+<a name="ln-413"></a>    <span class="n">POT</span><span class="o">=</span><span class="mf">1.D0</span>
+<a name="ln-414"></a>    <span class="n">SOMX2</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">(</span><span class="mf">1.D0</span><span class="o">-</span><span class="n">X</span><span class="o">*</span><span class="n">X</span><span class="p">)</span>
+<a name="ln-415"></a>    <span class="k">DO </span><span class="mi">14</span> <span class="n">J</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">L</span>
+<a name="ln-416"></a>      <span class="n">DJ</span><span class="o">=</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span>
+<a name="ln-417"></a>      <span class="k">IF</span> <span class="p">(</span><span class="n">J</span> <span class="p">.</span><span class="n">GT</span><span class="p">.</span> <span class="mi">0</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-418"></a><span class="k">        </span><span class="n">FACT</span><span class="o">=</span><span class="n">FACT</span><span class="o">*</span><span class="p">(</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="p">)</span>
+<a name="ln-419"></a>        <span class="n">POT</span><span class="o">=</span><span class="n">POT</span><span class="o">*</span><span class="n">SOMX2</span>
+<a name="ln-420"></a>        <span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="n">FACT</span><span class="p">)</span><span class="o">*</span><span class="n">POT</span>
+<a name="ln-421"></a>        <span class="n">I</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-422"></a>      <span class="k">END IF</span>
+<a name="ln-423"></a><span class="k">      IF</span> <span class="p">(</span><span class="n">J</span> <span class="p">.</span><span class="n">LT</span><span class="p">.</span> <span class="n">L</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-424"></a><span class="k">        </span><span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">X</span><span class="o">*</span><span class="nb">DSQRT</span><span class="p">((</span><span class="mf">4.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">8.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">3.D0</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DJ</span><span class="o">+</span><span class="mf">1.D0</span><span class="p">))</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-425"></a>        <span class="n">I</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-426"></a>      <span class="k">END IF</span>
+<a name="ln-427"></a><span class="k">      </span><span class="n">DK</span><span class="o">=</span><span class="n">DJ</span><span class="o">+</span><span class="mf">2.D0</span>
+<a name="ln-428"></a>      <span class="k">DO </span><span class="mi">14</span> <span class="n">K</span><span class="o">=</span><span class="n">J</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span><span class="n">L</span>
+<a name="ln-429"></a>        <span class="n">DDK</span><span class="o">=</span><span class="p">(</span><span class="n">DK</span><span class="o">*</span><span class="n">DK</span><span class="o">-</span><span class="n">DJ</span><span class="o">*</span><span class="n">DJ</span><span class="p">)</span>
+<a name="ln-430"></a>        <span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="p">)</span><span class="o">=</span><span class="n">X</span><span class="o">*</span><span class="nb">DSQRT</span><span class="p">((</span><span class="mf">4.D0</span><span class="o">*</span><span class="n">DK</span><span class="o">*</span><span class="n">DK</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">/</span><span class="n">DDK</span><span class="p">)</span><span class="o">*</span><span class="n">Z</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">&amp;</span>
+<a name="ln-431"></a>          <span class="nb">DSQRT</span><span class="p">(((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DK</span><span class="o">+</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">DK</span><span class="o">-</span><span class="n">DJ</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">DK</span><span class="o">+</span><span class="n">DJ</span><span class="o">-</span><span class="mf">1.D0</span><span class="p">))</span><span class="o">/</span> <span class="p">&amp;</span>
+<a name="ln-432"></a>          <span class="p">((</span><span class="mf">2.D0</span><span class="o">*</span><span class="n">DK</span><span class="o">-</span><span class="mf">3.D0</span><span class="p">)</span><span class="o">*</span><span class="n">DDK</span><span class="p">))</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">I</span><span class="o">-</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-433"></a>        <span class="n">DK</span><span class="o">=</span><span class="n">DK</span><span class="o">+</span><span class="mf">1.D0</span>
+<a name="ln-434"></a>        <span class="n">I</span><span class="o">=</span><span class="n">I</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-435"></a><span class="mi">14</span>  <span class="k">CONTINUE</span>
+<a name="ln-436"></a>
+<a name="ln-437"></a><span class="k">    RETURN</span>
+<a name="ln-438"></a>
+<a name="ln-439"></a><span class="k">  END SUBROUTINE </span><span class="n">PLGNFA</span>
+<a name="ln-440"></a>
+<a name="ln-441"></a>  <span class="k">SUBROUTINE </span><span class="n">DPLGND</span><span class="p">(</span><span class="n">MNAUF</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="n">DZ</span><span class="p">)</span>
+<a name="ln-442"></a>
+<a name="ln-443"></a><span class="c">!! Calculates the derivatives of the normalised associated Legendre function </span>
+<a name="ln-444"></a><span class="c">!! from P00(X) to PLL(X) and writes them into the field DZ.</span>
+<a name="ln-445"></a><span class="c">!! Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)</span>
+<a name="ln-446"></a>
+<a name="ln-447"></a>    <span class="k">IMPLICIT </span><span class="kt">REAL</span> <span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">H</span><span class="p">,</span><span class="n">O</span><span class="o">-</span><span class="n">Z</span><span class="p">)</span>
+<a name="ln-448"></a>
+<a name="ln-449"></a>    <span class="k">DIMENSION </span><span class="n">Z</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">3</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">4</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-450"></a>    <span class="k">DIMENSION </span><span class="n">DZ</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">2</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">3</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span>
+<a name="ln-451"></a>
+<a name="ln-452"></a>    <span class="k">IF</span> <span class="p">(</span><span class="n">Z</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="p">.</span><span class="n">NE</span><span class="p">.</span> <span class="mf">1.D0</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-453"></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;DPLGND: Z(0) must be 1.0&#39;</span>
+<a name="ln-454"></a>      <span class="k">STOP</span>
+<a name="ln-455"></a><span class="k">    END IF</span>
+<a name="ln-456"></a>
+<a name="ln-457"></a><span class="k">    </span><span class="n">LLP</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-458"></a>    <span class="n">LLH</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-459"></a>    <span class="k">DO </span><span class="mi">1</span> <span class="n">I</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-460"></a>      <span class="k">DO </span><span class="mi">2</span> <span class="n">J</span><span class="o">=</span><span class="n">I</span><span class="p">,</span><span class="n">MNAUF</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-461"></a>        <span class="k">IF</span> <span class="p">(</span><span class="n">I</span> <span class="p">.</span><span class="n">EQ</span><span class="p">.</span> <span class="n">J</span><span class="p">)</span> <span class="k">THEN</span>
+<a name="ln-462"></a><span class="k">          </span><span class="n">WURZELA</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">(</span><span class="nb">DBLE</span><span class="p">((</span><span class="n">J</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">J</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">I</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">J</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">J</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>
+<a name="ln-463"></a>          <span class="n">DZ</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span><span class="o">=</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">WURZELA</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-464"></a>        <span class="k">ELSE</span>
+<a name="ln-465"></a><span class="k">          </span><span class="n">WURZELB</span><span class="o">=</span><span class="nb">DSQRT</span><span class="p">(</span><span class="nb">DBLE</span><span class="p">((</span><span class="n">J</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">J</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">I</span><span class="o">*</span><span class="n">I</span><span class="p">)</span><span class="o">/</span><span class="nb">DBLE</span><span class="p">(</span><span class="mi">4</span><span class="o">*</span><span class="p">(</span><span class="n">J</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">J</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>
+<a name="ln-466"></a>          <span class="n">DZ</span><span class="p">(</span><span class="n">LLH</span><span class="p">)</span><span class="o">=</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="p">)</span><span class="o">*</span><span class="n">WURZELB</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="nb">DBLE</span><span class="p">(</span><span class="n">J</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="n">WURZELA</span><span class="o">*</span><span class="n">Z</span><span class="p">(</span><span class="n">LLP</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="ln-467"></a>          <span class="n">WURZELA</span><span class="o">=</span><span class="n">WURZELB</span>
+<a name="ln-468"></a>        <span class="k">END IF</span>
+<a name="ln-469"></a><span class="k">        </span><span class="n">LLH</span><span class="o">=</span><span class="n">LLH</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-470"></a>        <span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-471"></a><span class="mi">2</span>     <span class="k">CONTINUE</span>
+<a name="ln-472"></a><span class="k">      </span><span class="n">LLP</span><span class="o">=</span><span class="n">LLP</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-473"></a><span class="mi">1</span>   <span class="k">CONTINUE</span>
+<a name="ln-474"></a>
+<a name="ln-475"></a><span class="k">    RETURN</span>
+<a name="ln-476"></a>
+<a name="ln-477"></a><span class="k">  END SUBROUTINE </span><span class="n">DPLGND</span>
+<a name="ln-478"></a>
 <a name="ln-479"></a>
-<a name="ln-480"></a>
-<a name="ln-481"></a>  <span class="k">SUBROUTINE </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">FELDMN</span><span class="p">,</span><span class="n">MM</span><span class="p">,</span><span class="n">MMAX</span><span class="p">)</span>
-<a name="ln-482"></a>
-<a name="ln-483"></a><span class="c">!! Spectral Filter of Sardeshmukh and Hoskins (1984, MWR)</span>
+<a name="ln-480"></a>  <span class="k">SUBROUTINE </span><span class="n">SPFILTER</span><span class="p">(</span><span class="n">FELDMN</span><span class="p">,</span><span class="n">MM</span><span class="p">,</span><span class="n">MMAX</span><span class="p">)</span>
+<a name="ln-481"></a>
+<a name="ln-482"></a><span class="c">!! Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984)</span>
+<a name="ln-483"></a>
 <a name="ln-484"></a><span class="c">! MM=Spectral truncation of field</span>
 <a name="ln-485"></a><span class="c">! MMAX= Spectral truncation of filter</span>
 <a name="ln-486"></a>
@@ -896,8 +896,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/sourcefile/posnam.f90.html b/Documentation/html/Documentation/Api/Fortran/sourcefile/posnam.f90.html
index b34a50af03abd7bf08b4026dc2818c7fa5f39c49..7fe1b6149f4635b02fb310d61051072a6f9fa775 100644
--- a/Documentation/html/Documentation/Api/Fortran/sourcefile/posnam.f90.html
+++ b/Documentation/html/Documentation/Api/Fortran/sourcefile/posnam.f90.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -263,8 +263,8 @@
       <h2><span class="anchor" id="src"></span>Source Code</h2>
     <div class="hl"><pre><span></span><a name="ln-1"></a>  <span class="k">SUBROUTINE </span><span class="n">POSNAM</span><span class="p">(</span><span class="n">KULNAM</span><span class="p">,</span><span class="n">CDNAML</span><span class="p">)</span>
 <a name="ln-2"></a>
-<a name="ln-3"></a> <span class="c">!! position in namelist file.</span>
-<a name="ln-4"></a> <span class="c">! author:  Mats Hamrud, ECMWF</span>
+<a name="ln-3"></a> <span class="c">!! Position in namelist file.</span>
+<a name="ln-4"></a> <span class="c">!! Author:  Mats Hamrud, ECMWF</span>
 <a name="ln-5"></a>
 <a name="ln-6"></a>    <span class="kt">INTEGER</span><span class="p">,</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span>       <span class="kd">::</span> <span class="n">KULNAM</span>
 <a name="ln-7"></a>    <span class="kt">CHARACTER</span><span class="o">*</span><span class="p">(</span><span class="o">*</span><span class="p">),</span> <span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">CDNAML</span>
@@ -298,8 +298,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/sourcefile/rwgrib2.f90.html b/Documentation/html/Documentation/Api/Fortran/sourcefile/rwgrib2.f90.html
index 45fca03ecc1df6517722bda0d74ec0e8632aafd9..ff832901da353e59527aa6cb067606cb29b18252 100644
--- a/Documentation/html/Documentation/Api/Fortran/sourcefile/rwgrib2.f90.html
+++ b/Documentation/html/Documentation/Api/Fortran/sourcefile/rwgrib2.f90.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
    
-   <meta name="description" content="Calculation of vertical velocity for FLEXPART">
+   <meta name="description" content="flex_extract calculates the vertical velocity for FLEXPART">
     
     <meta name="author" content="Leopold Haimberger<sup>1</sup>" >
     <link rel="icon" href="../favicon.png">
@@ -44,7 +44,7 @@
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
           </button>
-          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1</small></a>
+          <a class="navbar-brand" href="../index.html">Flex_extract: Calculation of etadot <small>7.1.2</small></a>
         </div>
         <div id="navbar" class="navbar-collapse collapse">
           <ul class="nav navbar-nav">
@@ -126,7 +126,7 @@
      <li><i class="fa fa-list-ol"></i>
        <a data-toggle="tooltip"
     data-placement="bottom" data-html="true"
-    title="11.5% of total for source files.">162 statements</a>
+    title="11.6% of total for source files.">162 statements</a>
      </li> 
      
      
@@ -334,269 +334,272 @@
       <h2><span class="anchor" id="src"></span>Source Code</h2>
     <div class="hl"><pre><span></span><a name="ln-1"></a> <span class="k">MODULE </span><span class="n">RWGRIB2</span>
 <a name="ln-2"></a>
-<a name="ln-3"></a> <span class="k">CONTAINS</span>
-<a name="ln-4"></a>
-<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>
-<a name="ln-6"></a>
-<a name="ln-7"></a><span class="c">!! Read a field from GRIB file on lat-lon grid</span>
-<a name="ln-8"></a>
-<a name="ln-9"></a> <span class="k">USE </span><span class="n">GRIB_API</span>
-<a name="ln-10"></a>
-<a name="ln-11"></a> <span class="k">IMPLICIT NONE</span>
-<a name="ln-12"></a>
-<a name="ln-13"></a><span class="k">   </span><span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">ifile</span>
-<a name="ln-14"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">iret</span>
-<a name="ln-15"></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>
-<a name="ln-16"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">i</span><span class="p">,</span><span class="n">k</span>
-<a name="ln-17"></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>
-<a name="ln-18"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfPointsAlongAParallel</span>
-<a name="ln-19"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfPointsAlongAMeridian</span>
-<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="k">allocatable</span>    <span class="kd">::</span>  <span class="n">values</span>
-<a name="ln-21"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfValues</span>
-<a name="ln-22"></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>  
-<a name="ln-23"></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>
-<a name="ln-24"></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>
-<a name="ln-25"></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>   
-<a name="ln-26"></a>   
-<a name="ln-27"></a>   <span class="n">feld</span><span class="o">=</span><span class="mf">0.</span>                          
-<a name="ln-28"></a>
-<a name="ln-29"></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>
-<a name="ln-30"></a> 
-<a name="ln-31"></a>   <span class="c">! count the messages in the file</span>
-<a name="ln-32"></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>
-<a name="ln-33"></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>
-<a name="ln-34"></a>   <span class="n">igrib</span><span class="o">=-</span><span class="mi">1</span>
-<a name="ln-35"></a> 
-<a name="ln-36"></a>   <span class="c">! Load the messages from the file.</span>
-<a name="ln-37"></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>
-<a name="ln-38"></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>
-<a name="ln-39"></a>   <span class="k">END DO</span>
-<a name="ln-40"></a> 
-<a name="ln-41"></a>   <span class="c">! we can close the file</span>
-<a name="ln-42"></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>
+<a name="ln-3"></a><span class="c">!! Read or write a field variable on a lat/lon grid from/to GRIB file, or </span>
+<a name="ln-4"></a><span class="c">!! read a field in spectral representation from GRIB file</span>
+<a name="ln-5"></a>
+<a name="ln-6"></a> <span class="k">CONTAINS</span>
+<a name="ln-7"></a>
+<a name="ln-8"></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>
+<a name="ln-9"></a>
+<a name="ln-10"></a><span class="c">!! Read a field from GRIB file on lat-lon grid</span>
+<a name="ln-11"></a>
+<a name="ln-12"></a> <span class="k">USE </span><span class="n">GRIB_API</span>
+<a name="ln-13"></a>
+<a name="ln-14"></a> <span class="k">IMPLICIT NONE</span>
+<a name="ln-15"></a>
+<a name="ln-16"></a><span class="k">   </span><span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">ifile</span>
+<a name="ln-17"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">iret</span>
+<a name="ln-18"></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>
+<a name="ln-19"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">i</span><span class="p">,</span><span class="n">k</span>
+<a name="ln-20"></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>
+<a name="ln-21"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfPointsAlongAParallel</span>
+<a name="ln-22"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfPointsAlongAMeridian</span>
+<a name="ln-23"></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>
+<a name="ln-24"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfValues</span>
+<a name="ln-25"></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>  
+<a name="ln-26"></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>
+<a name="ln-27"></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>
+<a name="ln-28"></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>   
+<a name="ln-29"></a>   
+<a name="ln-30"></a>   <span class="n">feld</span><span class="o">=</span><span class="mf">0.</span>                          
+<a name="ln-31"></a>
+<a name="ln-32"></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>
+<a name="ln-33"></a> 
+<a name="ln-34"></a>   <span class="c">! count the messages in the file</span>
+<a name="ln-35"></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>
+<a name="ln-36"></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>
+<a name="ln-37"></a>   <span class="n">igrib</span><span class="o">=-</span><span class="mi">1</span>
+<a name="ln-38"></a> 
+<a name="ln-39"></a>   <span class="c">! Load the messages from the file.</span>
+<a name="ln-40"></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>
+<a name="ln-41"></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>
+<a name="ln-42"></a>   <span class="k">END DO</span>
 <a name="ln-43"></a> 
-<a name="ln-44"></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>
-<a name="ln-45"></a>      <span class="n">div</span><span class="o">=</span><span class="n">mlevel</span><span class="o">/</span><span class="n">nm</span>
-<a name="ln-46"></a>      <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-47"></a>      
-<a name="ln-48"></a>   <span class="c">! Loop on all the messages in memory</span>
-<a name="ln-49"></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>
-<a name="ln-50"></a><span class="c">!      write(*,*) &#39;processing message number &#39;,i</span>
-<a name="ln-51"></a>      <span class="c">!     get as a integer</span>
-<a name="ln-52"></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>
-<a name="ln-53"></a>           <span class="n">numberOfPointsAlongAParallel</span><span class="p">)</span>
-<a name="ln-54"></a> 
-<a name="ln-55"></a>      <span class="c">!     get as a integer</span>
-<a name="ln-56"></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>
-<a name="ln-57"></a>           <span class="n">numberOfPointsAlongAMeridian</span><span class="p">)</span>
-<a name="ln-58"></a>
-<a name="ln-59"></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>
-<a name="ln-60"></a>
-<a name="ln-61"></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>
-<a name="ln-62"></a><span class="c">!      write(*,*) &#39;numberOfValues=&#39;,numberOfValues</span>
-<a name="ln-63"></a> 
-<a name="ln-64"></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>
-<a name="ln-65"></a>      <span class="c">!     get data values</span>
-<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;values&#39;</span><span class="p">,</span><span class="n">values</span><span class="p">)</span>
-<a name="ln-67"></a>
-<a name="ln-68"></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>
-<a name="ln-69"></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>
+<a name="ln-44"></a>   <span class="c">! we can close the file</span>
+<a name="ln-45"></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>
+<a name="ln-46"></a> 
+<a name="ln-47"></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>
+<a name="ln-48"></a>      <span class="n">div</span><span class="o">=</span><span class="n">mlevel</span><span class="o">/</span><span class="n">nm</span>
+<a name="ln-49"></a>      <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-50"></a>      
+<a name="ln-51"></a>   <span class="c">! Loop on all the messages in memory</span>
+<a name="ln-52"></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>
+<a name="ln-53"></a><span class="c">!      write(*,*) &#39;processing message number &#39;,i</span>
+<a name="ln-54"></a>      <span class="c">!     get as a integer</span>
+<a name="ln-55"></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>
+<a name="ln-56"></a>           <span class="n">numberOfPointsAlongAParallel</span><span class="p">)</span>
+<a name="ln-57"></a> 
+<a name="ln-58"></a>      <span class="c">!     get as a integer</span>
+<a name="ln-59"></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>
+<a name="ln-60"></a>           <span class="n">numberOfPointsAlongAMeridian</span><span class="p">)</span>
+<a name="ln-61"></a>
+<a name="ln-62"></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>
+<a name="ln-63"></a>
+<a name="ln-64"></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>
+<a name="ln-65"></a><span class="c">!      write(*,*) &#39;numberOfValues=&#39;,numberOfValues</span>
+<a name="ln-66"></a> 
+<a name="ln-67"></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>
+<a name="ln-68"></a>      <span class="c">!     get data values</span>
+<a name="ln-69"></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>
 <a name="ln-70"></a>
-<a name="ln-71"></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>
-<a name="ln-72"></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>
-<a name="ln-73"></a><span class="c">!         l(k)=l(k)+1</span>
-<a name="ln-74"></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>
-<a name="ln-75"></a><span class="c">!         print*,(k-1)*div+l(k),parid</span>
-<a name="ln-76"></a>         <span class="k">exit </span><span class="n">kloop</span>
-<a name="ln-77"></a>        <span class="k">end if</span>
-<a name="ln-78"></a><span class="k">      end do </span><span class="n">kloop</span>
-<a name="ln-79"></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>
-<a name="ln-80"></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>
-<a name="ln-81"></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>
-<a name="ln-82"></a>        <span class="k">stop</span>
-<a name="ln-83"></a><span class="k">      end if</span>
-<a name="ln-84"></a>
-<a name="ln-85"></a><span class="c">!      print*,i</span>
-<a name="ln-86"></a>   <span class="k">END DO </span><span class="n">iloop</span>
-<a name="ln-87"></a><span class="c">!!   write(*,*) &#39;readlatlon: &#39;,i-1,&#39; records read&#39;</span>
-<a name="ln-88"></a> 
-<a name="ln-89"></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>
-<a name="ln-90"></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>
-<a name="ln-91"></a>   <span class="k">END DO</span>
-<a name="ln-92"></a><span class="k"> </span>
-<a name="ln-93"></a><span class="k">   if</span> <span class="p">(</span><span class="nb">allocated</span><span class="p">(</span><span class="n">values</span><span class="p">))</span> <span class="k">deallocate</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
-<a name="ln-94"></a>   <span class="k">deallocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">)</span>
-<a name="ln-95"></a>
-<a name="ln-96"></a>   <span class="k">END SUBROUTINE </span><span class="n">READLATLON</span>
-<a name="ln-97"></a>
-<a name="ln-98"></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>
-<a name="ln-99"></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>
+<a name="ln-71"></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>
+<a name="ln-72"></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>
+<a name="ln-73"></a>
+<a name="ln-74"></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>
+<a name="ln-75"></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>
+<a name="ln-76"></a><span class="c">!         l(k)=l(k)+1</span>
+<a name="ln-77"></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>
+<a name="ln-78"></a><span class="c">!         print*,(k-1)*div+l(k),parid</span>
+<a name="ln-79"></a>         <span class="k">exit </span><span class="n">kloop</span>
+<a name="ln-80"></a>        <span class="k">end if</span>
+<a name="ln-81"></a><span class="k">      end do </span><span class="n">kloop</span>
+<a name="ln-82"></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>
+<a name="ln-83"></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>
+<a name="ln-84"></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>
+<a name="ln-85"></a>        <span class="k">stop</span>
+<a name="ln-86"></a><span class="k">      end if</span>
+<a name="ln-87"></a>
+<a name="ln-88"></a><span class="c">!      print*,i</span>
+<a name="ln-89"></a>   <span class="k">END DO </span><span class="n">iloop</span>
+<a name="ln-90"></a><span class="c">! !   write(*,*) &#39;readlatlon: &#39;,i-1,&#39; records read&#39;</span>
+<a name="ln-91"></a> 
+<a name="ln-92"></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>
+<a name="ln-93"></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>
+<a name="ln-94"></a>   <span class="k">END DO</span>
+<a name="ln-95"></a><span class="k"> </span>
+<a name="ln-96"></a><span class="k">   if</span> <span class="p">(</span><span class="nb">allocated</span><span class="p">(</span><span class="n">values</span><span class="p">))</span> <span class="k">deallocate</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
+<a name="ln-97"></a>   <span class="k">deallocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">)</span>
+<a name="ln-98"></a>
+<a name="ln-99"></a>   <span class="k">END SUBROUTINE </span><span class="n">READLATLON</span>
 <a name="ln-100"></a>
-<a name="ln-101"></a><span class="c">!! write a field on lat-lon grid to GRIB file</span>
-<a name="ln-102"></a>
-<a name="ln-103"></a>   <span class="k">USE </span><span class="n">GRIB_API</span>
-<a name="ln-104"></a>
-<a name="ln-105"></a>   <span class="k">IMPLICIT NONE</span>
-<a name="ln-106"></a>
-<a name="ln-107"></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>
-<a name="ln-108"></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>
-<a name="ln-109"></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>
-<a name="ln-110"></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>
-<a name="ln-111"></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>
-<a name="ln-112"></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>
-<a name="ln-113"></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>
-<a name="ln-114"></a>
-<a name="ln-115"></a> <span class="c">! parse MLEVELIST</span>
-<a name="ln-116"></a>
-<a name="ln-117"></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>
-<a name="ln-118"></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>
-<a name="ln-119"></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>
-<a name="ln-120"></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>
-<a name="ln-121"></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>
-<a name="ln-122"></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>
-<a name="ln-123"></a>     <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-124"></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>
-<a name="ln-125"></a>       <span class="n">l</span><span class="o">=</span><span class="n">l</span><span class="o">+</span><span class="mi">1</span>
-<a name="ln-126"></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>
-<a name="ln-127"></a>     <span class="k">end do</span>
-<a name="ln-128"></a><span class="k">   else</span>
-<a name="ln-129"></a><span class="k">     </span><span class="n">l</span><span class="o">=</span><span class="mi">1</span>
-<a name="ln-130"></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>
-<a name="ln-131"></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>
-<a name="ln-132"></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>
-<a name="ln-133"></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>
-<a name="ln-134"></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>
-<a name="ln-135"></a>       <span class="k">end if</span>
-<a name="ln-136"></a><span class="k">     end do</span>
-<a name="ln-137"></a><span class="k">     </span><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>
-<a name="ln-138"></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>
-<a name="ln-139"></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>
-<a name="ln-140"></a>     <span class="k">end do</span>
-<a name="ln-141"></a><span class="k">   end if </span>
-<a name="ln-142"></a>
-<a name="ln-143"></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>
-<a name="ln-144"></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>
-<a name="ln-145"></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>
-<a name="ln-146"></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>
-<a name="ln-147"></a><span class="c">!         if (MPAR(j) .eq. 87) then</span>
-<a name="ln-148"></a><span class="c">!           call grib_set(igrib,&quot;shortName&quot;,&quot;etadot&quot;)</span>
-<a name="ln-149"></a><span class="c">!           call grib_set(igrib,&quot;units&quot;,&quot;Pa,s**-1&quot;)</span>
-<a name="ln-150"></a><span class="c">!         end if</span>
-<a name="ln-151"></a><span class="c">!         if (MPAR(j) .eq. 77) then</span>
-<a name="ln-152"></a><span class="c">!           call grib_set(igrib,&quot;shortName&quot;,&quot;etadot&quot;)</span>
-<a name="ln-153"></a><span class="c">!           call grib_set(igrib,&quot;units&quot;,&quot;s**-1&quot;)</span>
-<a name="ln-154"></a><span class="c">!         end if</span>
-<a name="ln-155"></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>
-<a name="ln-156"></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>
-<a name="ln-157"></a>       <span class="k">else</span>
-<a name="ln-158"></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>
-<a name="ln-159"></a>       <span class="k">end if</span>
-<a name="ln-160"></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>
-<a name="ln-161"></a>
-<a name="ln-162"></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>
-<a name="ln-163"></a>
-<a name="ln-164"></a>     <span class="k">END DO</span>
-<a name="ln-165"></a><span class="k">   END DO</span>
+<a name="ln-101"></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>
+<a name="ln-102"></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>
+<a name="ln-103"></a>
+<a name="ln-104"></a><span class="c">!! write a field on lat-lon grid to GRIB file</span>
+<a name="ln-105"></a>
+<a name="ln-106"></a>   <span class="k">USE </span><span class="n">GRIB_API</span>
+<a name="ln-107"></a>
+<a name="ln-108"></a>   <span class="k">IMPLICIT NONE</span>
+<a name="ln-109"></a>
+<a name="ln-110"></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>
+<a name="ln-111"></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>
+<a name="ln-112"></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>
+<a name="ln-113"></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>
+<a name="ln-114"></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>
+<a name="ln-115"></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>
+<a name="ln-116"></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>
+<a name="ln-117"></a>
+<a name="ln-118"></a> <span class="c">! parse MLEVELIST</span>
+<a name="ln-119"></a>
+<a name="ln-120"></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>
+<a name="ln-121"></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>
+<a name="ln-122"></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>
+<a name="ln-123"></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>
+<a name="ln-124"></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>
+<a name="ln-125"></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>
+<a name="ln-126"></a>     <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-127"></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>
+<a name="ln-128"></a>       <span class="n">l</span><span class="o">=</span><span class="n">l</span><span class="o">+</span><span class="mi">1</span>
+<a name="ln-129"></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>
+<a name="ln-130"></a>     <span class="k">end do</span>
+<a name="ln-131"></a><span class="k">   else</span>
+<a name="ln-132"></a><span class="k">     </span><span class="n">l</span><span class="o">=</span><span class="mi">1</span>
+<a name="ln-133"></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>
+<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">LLEN</span>
+<a name="ln-135"></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>
+<a name="ln-136"></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>
+<a name="ln-137"></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>
+<a name="ln-138"></a>       <span class="k">end if</span>
+<a name="ln-139"></a><span class="k">     end do</span>
+<a name="ln-140"></a><span class="k">     </span><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>
+<a name="ln-141"></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>
+<a name="ln-142"></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>
+<a name="ln-143"></a>     <span class="k">end do</span>
+<a name="ln-144"></a><span class="k">   end if </span>
+<a name="ln-145"></a>
+<a name="ln-146"></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>
+<a name="ln-147"></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>
+<a name="ln-148"></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>
+<a name="ln-149"></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>
+<a name="ln-150"></a><span class="c">!         if (MPAR(j) .eq. 87) then</span>
+<a name="ln-151"></a><span class="c">!           call grib_set(igrib,&quot;shortName&quot;,&quot;etadot&quot;)</span>
+<a name="ln-152"></a><span class="c">!           call grib_set(igrib,&quot;units&quot;,&quot;Pa,s**-1&quot;)</span>
+<a name="ln-153"></a><span class="c">!         end if</span>
+<a name="ln-154"></a><span class="c">!         if (MPAR(j) .eq. 77) then</span>
+<a name="ln-155"></a><span class="c">!           call grib_set(igrib,&quot;shortName&quot;,&quot;etadot&quot;)</span>
+<a name="ln-156"></a><span class="c">!           call grib_set(igrib,&quot;units&quot;,&quot;s**-1&quot;)</span>
+<a name="ln-157"></a><span class="c">!         end if</span>
+<a name="ln-158"></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>
+<a name="ln-159"></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>
+<a name="ln-160"></a>       <span class="k">else</span>
+<a name="ln-161"></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>
+<a name="ln-162"></a>       <span class="k">end if</span>
+<a name="ln-163"></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>
+<a name="ln-164"></a>
+<a name="ln-165"></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>
 <a name="ln-166"></a>
-<a name="ln-167"></a><span class="k">   END SUBROUTINE </span><span class="n">WRITELATLON</span>
-<a name="ln-168"></a>
-<a name="ln-169"></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">,</span><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>
-<a name="ln-170"></a>
-<a name="ln-171"></a><span class="c">!!  read a GRIB file in spherical harmonics</span>
-<a name="ln-172"></a>
-<a name="ln-173"></a>   <span class="k">USE </span><span class="n">GRIB_API</span>
-<a name="ln-174"></a>
-<a name="ln-175"></a>   <span class="k">IMPLICIT NONE</span>
-<a name="ln-176"></a>
-<a name="ln-177"></a><span class="k">   </span><span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">ifile</span>
-<a name="ln-178"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">iret</span>
-<a name="ln-179"></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>
-<a name="ln-180"></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>
-<a name="ln-181"></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>
-<a name="ln-182"></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>
-<a name="ln-183"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfValues</span><span class="p">,</span><span class="n">maxlev</span>
-<a name="ln-184"></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>
-<a name="ln-185"></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>
-<a name="ln-186"></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>
-<a name="ln-187"></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>                             
-<a name="ln-188"></a> 
-<a name="ln-189"></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>
-<a name="ln-190"></a> 
-<a name="ln-191"></a>   <span class="c">! count the messages in the file</span>
-<a name="ln-192"></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>
-<a name="ln-193"></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>
-<a name="ln-194"></a>   <span class="n">igrib</span><span class="o">=-</span><span class="mi">1</span>
-<a name="ln-195"></a> 
-<a name="ln-196"></a>   <span class="c">! Load the messages from the file.</span>
-<a name="ln-197"></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>
-<a name="ln-198"></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>
-<a name="ln-199"></a>   <span class="k">END DO</span>
-<a name="ln-200"></a> 
-<a name="ln-201"></a>   <span class="c">! we can close the file</span>
-<a name="ln-202"></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>
+<a name="ln-167"></a>     <span class="k">END DO</span>
+<a name="ln-168"></a><span class="k">   END DO</span>
+<a name="ln-169"></a>
+<a name="ln-170"></a><span class="k">   END SUBROUTINE </span><span class="n">WRITELATLON</span>
+<a name="ln-171"></a>
+<a name="ln-172"></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">,</span><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>
+<a name="ln-173"></a>
+<a name="ln-174"></a><span class="c">!!  Read a GRIB file in spherical harmonics</span>
+<a name="ln-175"></a>
+<a name="ln-176"></a>   <span class="k">USE </span><span class="n">GRIB_API</span>
+<a name="ln-177"></a>
+<a name="ln-178"></a>   <span class="k">IMPLICIT NONE</span>
+<a name="ln-179"></a>
+<a name="ln-180"></a><span class="k">   </span><span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">ifile</span>
+<a name="ln-181"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">iret</span>
+<a name="ln-182"></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>
+<a name="ln-183"></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>
+<a name="ln-184"></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>
+<a name="ln-185"></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>
+<a name="ln-186"></a>   <span class="kt">integer</span>                            <span class="kd">::</span>  <span class="n">numberOfValues</span><span class="p">,</span><span class="n">maxlev</span>
+<a name="ln-187"></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>
+<a name="ln-188"></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>
+<a name="ln-189"></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>
+<a name="ln-190"></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>                             
+<a name="ln-191"></a> 
+<a name="ln-192"></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>
+<a name="ln-193"></a> 
+<a name="ln-194"></a>   <span class="c">! count the messages in the file</span>
+<a name="ln-195"></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>
+<a name="ln-196"></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>
+<a name="ln-197"></a>   <span class="n">igrib</span><span class="o">=-</span><span class="mi">1</span>
+<a name="ln-198"></a> 
+<a name="ln-199"></a>   <span class="c">! Load the messages from the file.</span>
+<a name="ln-200"></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>
+<a name="ln-201"></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>
+<a name="ln-202"></a>   <span class="k">END DO</span>
 <a name="ln-203"></a> 
-<a name="ln-204"></a>    <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
-<a name="ln-205"></a>   <span class="c">! Loop on all the messages in memory</span>
-<a name="ln-206"></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>
-<a name="ln-207"></a>   <span class="c">! write(*,*) &#39;processing message number &#39;,i</span>
-<a name="ln-208"></a>      <span class="c">!     get as a integer</span>
-<a name="ln-209"></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>
-<a name="ln-210"></a>
-<a name="ln-211"></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>
-<a name="ln-212"></a>   <span class="c">!   write(*,*) &#39;numberOfValues=&#39;,numberOfValues</span>
-<a name="ln-213"></a> 
-<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;numberOfVerticalCoordinateValues&#39;</span><span class="p">,</span><span class="n">mk</span><span class="p">)</span>
-<a name="ln-215"></a>
-<a name="ln-216"></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>
-<a name="ln-217"></a>
-<a name="ln-218"></a>      
-<a name="ln-219"></a>
-<a name="ln-220"></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>
-<a name="ln-221"></a>
-<a name="ln-222"></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>
-<a name="ln-223"></a>      <span class="c">!     get data values</span>
-<a name="ln-224"></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>
-<a name="ln-225"></a>
-<a name="ln-226"></a><span class="c">!      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1)</span>
-<a name="ln-227"></a><span class="c">!           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2))</span>
+<a name="ln-204"></a>   <span class="c">! we can close the file</span>
+<a name="ln-205"></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>
+<a name="ln-206"></a> 
+<a name="ln-207"></a>    <span class="n">l</span><span class="o">=</span><span class="mi">0</span>
+<a name="ln-208"></a>   <span class="c">! Loop on all the messages in memory</span>
+<a name="ln-209"></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>
+<a name="ln-210"></a>   <span class="c">! write(*,*) &#39;processing message number &#39;,i</span>
+<a name="ln-211"></a>      <span class="c">!     get as a integer</span>
+<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;pentagonalResolutionParameterJ&#39;</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
+<a name="ln-213"></a>
+<a name="ln-214"></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>
+<a name="ln-215"></a>   <span class="c">!   write(*,*) &#39;numberOfValues=&#39;,numberOfValues</span>
+<a name="ln-216"></a> 
+<a name="ln-217"></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>
+<a name="ln-218"></a>
+<a name="ln-219"></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>
+<a name="ln-220"></a>
+<a name="ln-221"></a>      
+<a name="ln-222"></a>
+<a name="ln-223"></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>
+<a name="ln-224"></a>
+<a name="ln-225"></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>
+<a name="ln-226"></a>      <span class="c">!     get data values</span>
+<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;values&#39;</span><span class="p">,</span><span class="n">values</span><span class="p">)</span>
 <a name="ln-228"></a>
-<a name="ln-229"></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>
-<a name="ln-230"></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>
-<a name="ln-231"></a>      <span class="n">div</span><span class="o">=</span><span class="n">mlevel</span><span class="o">/</span><span class="n">nm</span>
-<a name="ln-232"></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>
-<a name="ln-233"></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>
-<a name="ln-234"></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>
-<a name="ln-235"></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>
-<a name="ln-236"></a><span class="c">!         print*,(k-1)*div+l(k),parid</span>
-<a name="ln-237"></a>         <span class="k">exit </span><span class="n">kloop</span>
-<a name="ln-238"></a>        <span class="k">end if</span>
-<a name="ln-239"></a><span class="k">        </span>
-<a name="ln-240"></a><span class="k">      end do </span><span class="n">kloop</span>
-<a name="ln-241"></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>
-<a name="ln-242"></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>
-<a name="ln-243"></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>
-<a name="ln-244"></a>        <span class="k">stop</span>
-<a name="ln-245"></a><span class="k">      end if</span>
-<a name="ln-246"></a>
-<a name="ln-247"></a><span class="c">!      print*,i</span>
-<a name="ln-248"></a>
-<a name="ln-249"></a>   <span class="k">END DO </span><span class="n">iloop</span>
-<a name="ln-250"></a>
-<a name="ln-251"></a><span class="c">!!   write(*,*) &#39;readspectral: &#39;,i-1,&#39; records read&#39;</span>
-<a name="ln-252"></a> 
-<a name="ln-253"></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>
-<a name="ln-254"></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>
-<a name="ln-255"></a>   <span class="k">END DO</span>
-<a name="ln-256"></a><span class="k"> </span>
-<a name="ln-257"></a><span class="k">   deallocate</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
-<a name="ln-258"></a>   <span class="k">deallocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">)</span>
-<a name="ln-259"></a>
-<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>
-<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>
+<a name="ln-229"></a><span class="c">!      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1)</span>
+<a name="ln-230"></a><span class="c">!           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2))</span>
+<a name="ln-231"></a>
+<a name="ln-232"></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>
+<a name="ln-233"></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>
+<a name="ln-234"></a>      <span class="n">div</span><span class="o">=</span><span class="n">mlevel</span><span class="o">/</span><span class="n">nm</span>
+<a name="ln-235"></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>
+<a name="ln-236"></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>
+<a name="ln-237"></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>
+<a name="ln-238"></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>
+<a name="ln-239"></a><span class="c">!         print*,(k-1)*div+l(k),parid</span>
+<a name="ln-240"></a>         <span class="k">exit </span><span class="n">kloop</span>
+<a name="ln-241"></a>        <span class="k">end if</span>
+<a name="ln-242"></a><span class="k">        </span>
+<a name="ln-243"></a><span class="k">      end do </span><span class="n">kloop</span>
+<a name="ln-244"></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>
+<a name="ln-245"></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>
+<a name="ln-246"></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>
+<a name="ln-247"></a>        <span class="k">stop</span>
+<a name="ln-248"></a><span class="k">      end if</span>
+<a name="ln-249"></a>
+<a name="ln-250"></a><span class="c">!      print*,i</span>
+<a name="ln-251"></a>
+<a name="ln-252"></a>   <span class="k">END DO </span><span class="n">iloop</span>
+<a name="ln-253"></a>
+<a name="ln-254"></a><span class="c">! !   write(*,*) &#39;readspectral: &#39;,i-1,&#39; records read&#39;</span>
+<a name="ln-255"></a> 
+<a name="ln-256"></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>
+<a name="ln-257"></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>
+<a name="ln-258"></a>   <span class="k">END DO</span>
+<a name="ln-259"></a><span class="k"> </span>
+<a name="ln-260"></a><span class="k">   deallocate</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
+<a name="ln-261"></a>   <span class="k">deallocate</span><span class="p">(</span><span class="n">igrib</span><span class="p">)</span>
 <a name="ln-262"></a>
-<a name="ln-263"></a>   <span class="k">END SUBROUTINE </span><span class="n">READSPECTRAL</span>
-<a name="ln-264"></a>
-<a name="ln-265"></a><span class="k">END MODULE </span><span class="n">RWGRIB2</span>
+<a name="ln-263"></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>
+<a name="ln-264"></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>
+<a name="ln-265"></a>
+<a name="ln-266"></a>   <span class="k">END SUBROUTINE </span><span class="n">READSPECTRAL</span>
+<a name="ln-267"></a>
+<a name="ln-268"></a><span class="k">END MODULE </span><span class="n">RWGRIB2</span>
 </pre></div>
 
     </section>
@@ -609,8 +612,8 @@
     <footer>
       <div class="container">
       <div class="row">
-        <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="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
-                                          <br /><small>dfa7dbd</small></p></div>
+        <div class="col-xs-6 col-md-4"><p>&copy; 2020 <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a>
+                                          </p></div>
         <div class="col-xs-6 col-md-4 col-md-push-4">
           <p class="text-right">
             Documentation generated by 
diff --git a/Documentation/html/Documentation/Api/Fortran/src/calc_etadot.f90 b/Documentation/html/Documentation/Api/Fortran/src/calc_etadot.f90
index 542997d20f47c0e4b7dec9968d30dacf70fd72f7..cccdb08293f461409b5bb9e11d4397fd678ee811 100644
--- a/Documentation/html/Documentation/Api/Fortran/src/calc_etadot.f90
+++ b/Documentation/html/Documentation/Api/Fortran/src/calc_etadot.f90
@@ -35,21 +35,23 @@ PROGRAM calc_etadot
 !           handle GRIB edition 2 fields and T1279 resolution data     
 ! - 04-06/2019: Petra Seibert, 
 !            beautify code and add FORD documentation
+! - 06/2020: Petra Seibert, translate some comments into English
+!            comment out writing of VERTICAL.EC
 !                                                                
 !-----------------------------------------------------------------
-!  #                                                              
+!                                                                
 !## Input required:
 !                                                                
 !     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION            
 !                                                                    
-!     11    fort.11   T,U,V           regular lambda phi grid
-!     12    fort.12   D               regular lambda phi grid   
+!     11    fort.11   T,U,V           regular lat-lon grid
+!     12    fort.12   D               regular lat-lon grid   
 !     13    fort.13   LNSP            spherical harmonics
 !     14    fort.14   SD,MSL,TCC,10U,                                
-!                     10V,2T,2D       regular lambda phi grid     
+!                     10V,2T,2D       regular lat-lon grid     
 !     16    fort.16   LSP,CP,SSHF,         
-!                     SSR,EWSS,NSSS   regular lambda phi grid
-!     17    fort.17   Q               regular lambda phi grid
+!                     SSR,EWSS,NSSS   regular lat-lon grid
+!     17    fort.17   Q               regular lat-lon grid
 !                                                                
 !------------------------------------------------------------------
 !                                                                
@@ -59,12 +61,15 @@ PROGRAM calc_etadot
 !                                                                   
 !    15    fort.15   `U,V,ETA,T,PS,                                  
 !                    `Q,SD,MSL,TCC,`                                  
-!                    `10U,10V,2T,2D,`  regular lambda phi grid         
+!                    `10U,10V,2T,2D,`  regular lat-lon grid         
 !                    `LSP,CP,SSHF,`                                   
 !                    `SSR,EWSS,NSSS`                                  
 !                                                                
 !------------------------------------------------------------------
 
+! Original version: 
+! Prepares input data for POP model meteorological preprocessor
+
   USE PHTOGR
   USE GRTOPH
   USE FTRAFO
@@ -209,7 +214,7 @@ PROGRAM calc_etadot
     ALLOCATE (XMN(0:(MNAUF+1)*(MNAUF+2)-1, 2*MLEVEL))
     ALLOCATE (DG(NGI,MLEVEL),ETAG(NGI,MLEVEL))
 
-!! Initialisieren  Legendretransformation auf das LaT/LON Gitter  
+!! Initialise  Legendre transformation on the lat-lon grid
 
     PI=ACOS(-1.D0)
 
@@ -271,7 +276,7 @@ PROGRAM calc_etadot
 !!  read u,v in SH
     CALL READSPECTRAL(FILENAME,XMN,MNAUF,2*MLEVEL,MLEVEL,(/131,132/),AK,BK)
 
-!!  Transformieren des Windes auf das Gaussgitter  
+!!  Transforming the wind to the Gaussian grid
     CALL PHGR213(XMN,UGVG,GWSAVE,GIFAX,P,MLAT,MNAUF,NGI,NGJ,2*MLEVEL)
     DO K=1,MLEVEL
 ! North Pole
@@ -291,15 +296,16 @@ PROGRAM calc_etadot
 112 FILENAME='fort.13'
 !!  read DIV in SH
     CALL READSPECTRAL(FILENAME,XMN,MNAUF,MLEVEL,MLEVEL,(/155/),AK,BK)
-!! Transformieren der horizontalen Divergenz auf das Gaussgitter  
+    
+!! Transform horizontal divergence to the Gaussian grid
     CALL PHGR213(XMN,DG,GWSAVE,GIFAX,P,MLAT,MNAUF,NGI,NGJ,MLEVEL)
     CALL STATIS(MAXL,MAXB,1,DG,RMS,MW,SIG)
     WRITE(*,'(A,T20,3p,3F12.4)') 'STATISTICS DG-PS: ',RMS,MW,SIG
 
-!! Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter  
+!! Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid  
     CALL PHGRAD(LNPMN,DPSDL,DPSDM,GWSAVE,GIFAX,P,H,MLAT,MNAUF,NGI,NGJ,1)
 
-!! Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter  
+!! Calculation of the vertical velocity on the Gaussian grid  
     CALL CONTGL(HILF,DPSDL,DPSDM,DG,UGVG(:,1),UGVG(:,MLEVEL+1), &
       GBREITE,ETAG,MLAT,AK,BK,NGI,NGJ,MLEVEL)
 ! note that HILF is ps on input and  dpsdt*ps on output
@@ -328,7 +334,7 @@ PROGRAM calc_etadot
     WRITE(*,'(A,T20,3F12.4)') 'STATISTICS DPSDT: ',RMS,MW,SIG
 
     IF (MOMEGADIFF .ne. 0) THEN
-!! Berechnung von Omega auf dem Gaussgitter  
+!! Calculation of omega on the Gaussian grid  
 
       CALL OMEGA(PSG,DPSDL,DPSDM,DG,UGVG(:,1),UGVG(:,MLEVEL+1), &
         GBREITE,ETAG,MLAT,AK,BK,NGI ,NGJ,MLEVEL)
@@ -451,10 +457,12 @@ PROGRAM calc_etadot
 !  \[\frac{\mathrm{d}\eta}{\mathrm{d}t}\frac{\partial p}{\partial \eta}\]
 !------------------------------------------------------------------
 
-!* Initialisieren  Legendretransformation auf das LaT/LON Gitter
-!! Without Gaussian grid calculation Legendre Polynomials are calculated
-!! only for one latitude to save space
 
+!------------------------------------------------------------------
+
+!* Initialise Legendre transformation on the lat-lon grid.
+!! Without Gaussian grid calculation, 
+!! Legendre polynomials are calculated only for one latitude, to save space
 
 
     DO J=1,MAXB
@@ -485,24 +493,25 @@ PROGRAM calc_etadot
 
   END IF ! MGAUSS
 
-!! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL  
-
-  OPEN(21,FILE='VERTICAL.EC')
-  WRITE(21,'(A)')
-  WRITE(21,'(A)') 'VERTICAL DISCRETIZATION OF POP MODEL'
-  WRITE(21,'(A)')
-  write(21,'(i3,a)') MLEVEL,'   number of layers'
-  WRITE(21,'(A)')
-  WRITE(21,'(A)') '* A(NLEV+1)'
-  WRITE(21,'(A)')
-  DO 205 I=1,MLEVEL+1
-205 WRITE(21,'(F18.12)') AK(I)
-  WRITE(21,'(A)')
-  WRITE(21,'(A)') '* B(NLEV+1)'
-  WRITE(21,'(A)')
-  DO 210 I=1,MLEVEL+1
-210 WRITE(21,'(F18.12)') BK(I)
-  CLOSE(21)
+! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL  
+! 2020-06-25 Commented out by PS - not needed anymore
+
+!  OPEN(21,FILE='VERTICAL.EC')
+!  WRITE(21,'(A)')
+!  WRITE(21,'(A)') 'VERTICAL DISCRETIZATION OF POP MODEL'
+!  WRITE(21,'(A)')
+!  write(21,'(i3,a)') MLEVEL,'   number of layers'
+!  WRITE(21,'(A)')
+!  WRITE(21,'(A)') '* A(NLEV+1)'
+!  WRITE(21,'(A)')
+!  DO 205 I=1,MLEVEL+1
+!205 WRITE(21,'(F18.12)') AK(I)
+!  WRITE(21,'(A)')
+!  WRITE(21,'(A)') '* B(NLEV+1)'
+!  WRITE(21,'(A)')
+!  DO 210 I=1,MLEVEL+1
+!210 WRITE(21,'(F18.12)') BK(I)
+!  CLOSE(21)
 
 !------------------------------------------------------------------
 ! READING OF OMEGA                           
@@ -602,8 +611,8 @@ PROGRAM calc_etadot
 !! WRITE MODEL LEVEL DATA TO fort.15           
 !------------------------------------------------------------------
 
-!!     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)
-!!     Now we are transforming back to the usual winds.
+!     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)
+!     Now we are transforming back to the usual winds.
 
   DO K=1,MLEVEL
     DO J=2,MAXB-1
diff --git a/Documentation/html/Documentation/Api/Fortran/src/ftrafo.f90 b/Documentation/html/Documentation/Api/Fortran/src/ftrafo.f90
index 7995967ac40b0002d0858dd22494cb9b9fadd4ae..99051bfe781bbb8c4e10e6f17fa79ead2b98c2a4 100644
--- a/Documentation/html/Documentation/Api/Fortran/src/ftrafo.f90
+++ b/Documentation/html/Documentation/Api/Fortran/src/ftrafo.f90
@@ -1,20 +1,17 @@
 MODULE FTRAFO
 
-!! Implementation of the spectral transformation using reduced the Gaussian grid
+!! Implementation of the spectral transformation using the reduced Gaussian grid
 
 CONTAINS
 
-! Implementierung der spektralen Transformationsmethode unter Verwendung
-! des reduzierten Gauss'schen Gitters
-
-
   SUBROUTINE VDTOUV(XMN,XLAM,XPHI,GWSAVE,IFAX,P,MLAT,MNAUF,NI,NJ,NK)
 
-!! Berechnung der scale winds aus Vorticity und Divergenz
-!! uebergibt man in XMN die Divergenz, so wird der divergente Anteil des
-!! Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so
-!! erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).
-!! Summiert man beide, erhaelt man den gesamten Scale wind
+!! Calculates scale winds from vorticity and divergence.
+!! If in XMN the divergence is passed, then the divergent part of the wind
+!! (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the 
+!! rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.
+!! Summing both, one obtains the whole scale wind.
+
 ! GWSAVE ist ein Hilfsfeld fuer die FFT
 ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung
 ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis
@@ -154,9 +151,10 @@ CONTAINS
 
   SUBROUTINE PHGRAD(XMN,XLAM,XPHI,GWSAVE,IFAX,P,H,MLAT,MNAUF,NI,NJ,NK)
 
-!! Berechnung des Gradienten eines Skalars aus dem Feld des
-!! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
-!! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.
+!! Calculates the gradient of a scalar from the field of the scalar XMN
+!! in phase space. Returns fields of the componentens of the horizontal
+!! gradients XLAM,XPHI on the Gaussian grid.
+
 ! GWSAVE ist ein Hilfsfeld fuer die FFT
 ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung
 ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis
@@ -266,9 +264,10 @@ CONTAINS
 
   SUBROUTINE PHGRACUT(XMN,XLAM,XPHI,GWSAVE,IFAX,P,H,MAUF,MNAUF,NI,NJ,MANF,NK)
 
-!! Berechnung des Gradienten eines Skalars aus dem Feld des
-!! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der
-!! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.
+!! Calculated the gradient of a scalar from the field of the scalar XMN 
+!! in phase space. Returns the fields of the components of the horizontal
+!! gradient XLAM,XPHI on the Gaussian grid
+
 ! GWSAVE ist ein Hilfsfeld fuer die FFT
 ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung
 ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis
@@ -380,9 +379,10 @@ CONTAINS
 
   SUBROUTINE CONTGL(PS,DPSDL,DPSDM,DIV,U,V,BREITE,ETA,MLAT,A,B,NI,NJ,NK)
 
-!! Berechnung der Divergenz aus dem Windfeld (U,V)
-!! im Phasenraum. Zurueckgegeben werden die Felder der
-!! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter.
+!! Calculation of divergence from the wind field (U,V)
+!! in phase space. Returns fields of the componentens of the 
+!! horizontal gradients XLAM,XPHI on the Gaussian grid
+
 ! GWSAVE ist ein Hilfsfeld fuer die FFT
 ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung
 ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis
@@ -438,7 +438,7 @@ CONTAINS
 
   SUBROUTINE OMEGA(PS,DPSDL,DPSDM,DIV,U,V,BREITE,E,MLAT,A,B,NGI,NGJ,MKK)
 
-!! calculates $\omega$ in the hybrid ($\eta$-) coordinate system
+!! Calculates \(\omega\) in the hybrid (\(\eta\)-)coordinate system
 
 ! OMEGA berechnet omega im Hybridkoordinatensystem
 ! PS ist der Bodendruck,
diff --git a/Documentation/html/Documentation/Api/Fortran/src/grphreal.f90 b/Documentation/html/Documentation/Api/Fortran/src/grphreal.f90
index b9e61f20736dfffe4c8db64bb65b74581c59f9f7..15da49b57d187a5388fccd1b584fec9e764673b4 100644
--- a/Documentation/html/Documentation/Api/Fortran/src/grphreal.f90
+++ b/Documentation/html/Documentation/Api/Fortran/src/grphreal.f90
@@ -1,14 +1,16 @@
 MODULE GRTOPH
 
+!! Module for transformation from phase space into physical space
+
   USE PHTOGR
 
 CONTAINS
 
   SUBROUTINE GRPH213(CXMN,FELD,WSAVE,IFAX,Z,W,MLAT,MNAUF,MAXL,MAXB,MLEVEL)
 
-!! WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
-!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
-!! RAUM AUF KUGELKOORDINATEN DURCH
+! WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
+! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
+! RAUM AUF KUGELKOORDINATEN DURCH
 
 ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE
 !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF
@@ -55,10 +57,9 @@ CONTAINS
 
   SUBROUTINE GRPHSUB(L,IND,CXMN,FELD,WSAVE,IFAX,Z,W,MLAT,MNAUF,MAXL,MAXB,MLEVEL)
 
-!! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
-!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
-!! RAUM AUF KUGELKOORDINATEN DURCH
-!
+!! Carries out the transformation from the phase space into the physical
+!! space on spherical coordinates
+
 ! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE
 !         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF
 ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld
@@ -115,7 +116,7 @@ CONTAINS
 !
   SUBROUTINE LGTR213(CXMN,CXM,Z,W,MLAT,MNAUF,MAXB)
 
-!!     DIESE ROUTINE BERECHNET DIE KFFKs CXMN
+!! Calculates the KFFKs (Fourier coefficients) CXMN
 
     IMPLICIT REAL (A-H,O-Z)
     INTEGER MLAT(MAXB)
@@ -163,8 +164,8 @@ CONTAINS
   END SUBROUTINE LGTR213
 
   SUBROUTINE RFOUFTR(CXM,TRIGS,IFAX,MNAUF,MAXL,ISIGN)
-!
-! BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS
+
+!! Calculates the Fourier sum with an FFT algorithm
 
     IMPLICIT REAL (A-H,O-Z)
     DIMENSION CXM(0:2*MAXL-1)
diff --git a/Documentation/html/Documentation/Api/Fortran/src/phgrreal.f90 b/Documentation/html/Documentation/Api/Fortran/src/phgrreal.f90
index 64a7d308d9177a3b4282e08915c12e60e814b20c..cc54df5296bd074e295ecb195382ffc286403966 100644
--- a/Documentation/html/Documentation/Api/Fortran/src/phgrreal.f90
+++ b/Documentation/html/Documentation/Api/Fortran/src/phgrreal.f90
@@ -1,14 +1,17 @@
 MODULE PHTOGR
 
+!! Module for transformation of a field variable from the phase space
+!! into the physical space onto the reduced Gaussian grid
+
   INTEGER, PARAMETER :: MAXAUF=36000
 
 CONTAINS
 
   SUBROUTINE PHGR213(CXMN,FELD,WSAVE,IFAX,Z,MLAT,MNAUF,MAXL,MAXB,MLEVEL)
 
-!! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
-!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
-!! RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH
+! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER
+! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
+! RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH
 !
 ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE
 !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF
@@ -120,10 +123,9 @@ CONTAINS
   SUBROUTINE PHGCUT(CXMN,FELD,WSAVE,IFAX,Z, &
     MNAUF,MMAX,MAUF,MANF,MAXL,MAXB,MLEVEL)
 
-!! DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER
-!! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN
-!! RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt
-!! Der Erde angegeben werden. Diese Routine ist langsamer als phgrph
+!! Carries out the transformation of a field variable from the phase space
+!! into the physical space on spherical coordinates. It is possible to 
+!! specify a section of the Earth. This subroutine is slower thatn PHGRPH.
 
 ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE
 !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF
@@ -169,7 +171,7 @@ CONTAINS
         IF (ABS(ABS(Z(100,J))-ABS(Z(100,MAXB+1-J))) .GT. 1E-11) SYM=.FALSE.
 !       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J))
 11    CONTINUE
-!!      WRITE(*,*) 'Symmetrisch: ',SYM
+! !      WRITE(*,*) 'Symmetrisch: ',SYM
     ELSE
       SYM=.FALSE.
     END IF
@@ -298,8 +300,7 @@ CONTAINS
 
   SUBROUTINE LEGTR(CXMN,CXM,Z,MNAUF,MAUF)
 
-!!   DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM
-
+!! Calculate the Fourier coefficients CXM
 
     IMPLICIT NONE
 
@@ -330,7 +331,7 @@ CONTAINS
 
   SUBROUTINE RFOURTR(CXM,TRIGS,IFAX,MNAUF,MAXL,ISIGN)
 
-!!     BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS
+!!  Calculates the Fourier sum with an FFT algorithm
 
     IMPLICIT REAL (A-H,O-Z)
 
@@ -355,7 +356,7 @@ CONTAINS
 
   SUBROUTINE GAULEG(X1,X2,X,W,N)
 
-!! BERECHNET DIE GAUSS+SCHEN BREITEN
+!! Calculates the Gaussian latitudes
 
     IMPLICIT REAL (A-H,O-Z)
 
@@ -392,12 +393,12 @@ CONTAINS
 
   SUBROUTINE PLGNFA(LL,X,Z)
 
-!! PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN
-!! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
-!! UND SCHREIBT SIE IN DAS FELD Z
-! Die Polynome sind wie im ECMWF indiziert, d.h.
-! P00,P10,P11,P20,P21,P22,...
-! Ansonsten ist die Routine analog zu PLGNDN
+!! Calculates all normalised associated Legendre functions from 
+!! P00(X) to PLL(X) and writes them into the field Z.
+!! The polynomials have indices as with ECMWF, i.e.
+!! P00,P10,P11,P20,P21,P22,...
+!! Otherwise, this subroutine is analogous to PLGNDN
+
 ! X IST DER COSINUS DES ZENITWINKELS ODER
 !       DER SINUS DER GEOGRAFISCHEN BREITE
 
@@ -439,11 +440,9 @@ CONTAINS
 
   SUBROUTINE DPLGND(MNAUF,Z,DZ)
 
-!! DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN
-!! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)
-!! UND SCHREIBT SIE IN DAS FELD DZ
-! DIE REIHENFOLGE IST
-! P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)
+!! Calculates the derivatives of the normalised associated Legendre function 
+!! from P00(X) to PLL(X) and writes them into the field DZ.
+!! Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X)
 
     IMPLICIT REAL (A-H,O-Z)
 
@@ -480,7 +479,8 @@ CONTAINS
 
   SUBROUTINE SPFILTER(FELDMN,MM,MMAX)
 
-!! Spectral Filter of Sardeshmukh and Hoskins (1984, MWR)
+!! Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984)
+
 ! MM=Spectral truncation of field
 ! MMAX= Spectral truncation of filter
 
diff --git a/Documentation/html/Documentation/Api/Fortran/src/posnam.f90 b/Documentation/html/Documentation/Api/Fortran/src/posnam.f90
index 614bf7f843c6be4c6ae599d8e14a0b5d630174cd..1762ca8542075beb637ce87dd9725bae93ad8284 100644
--- a/Documentation/html/Documentation/Api/Fortran/src/posnam.f90
+++ b/Documentation/html/Documentation/Api/Fortran/src/posnam.f90
@@ -1,7 +1,7 @@
   SUBROUTINE POSNAM(KULNAM,CDNAML)
 
- !! position in namelist file.
- ! author:  Mats Hamrud, ECMWF
+ !! Position in namelist file.
+ !! Author:  Mats Hamrud, ECMWF
 
     INTEGER, INTENT(IN)       :: KULNAM
     CHARACTER*(*), INTENT(IN) :: CDNAML
diff --git a/Documentation/html/Documentation/Api/Fortran/src/rwgrib2.f90 b/Documentation/html/Documentation/Api/Fortran/src/rwgrib2.f90
index b90d94b575c1fd94a2a095639baaee40c2951ffe..e35b7e355dbc5de2a6ef955e6054503fed862672 100644
--- a/Documentation/html/Documentation/Api/Fortran/src/rwgrib2.f90
+++ b/Documentation/html/Documentation/Api/Fortran/src/rwgrib2.f90
@@ -1,5 +1,8 @@
  MODULE RWGRIB2
 
+!! Read or write a field variable on a lat/lon grid from/to GRIB file, or 
+!! read a field in spectral representation from GRIB file
+
  CONTAINS
 
  SUBROUTINE READLATLON(FILENAME,FELD,MAXL,MAXB,MLEVEL,MPAR)
@@ -84,7 +87,7 @@
 
 !      print*,i
    END DO iloop
-!!   write(*,*) 'readlatlon: ',i-1,' records read'
+! !   write(*,*) 'readlatlon: ',i-1,' records read'
  
    DO i=1,n
      call grib_release(igrib(i))
@@ -168,7 +171,7 @@
 
    SUBROUTINE READSPECTRAL(FILENAME,CXMN,MNAUF,MLEVEL,MAXLEV,MPAR,A,B)
 
-!!  read a GRIB file in spherical harmonics
+!!  Read a GRIB file in spherical harmonics
 
    USE GRIB_API
 
@@ -248,7 +251,7 @@
 
    END DO iloop
 
-!!   write(*,*) 'readspectral: ',i-1,' records read'
+! !   write(*,*) 'readspectral: ',i-1,' records read'
  
    DO i=1,n
      call grib_release(igrib(i))
diff --git a/Documentation/html/Documentation/Api/Fortran/tipuesearch/tipuesearch_content.js b/Documentation/html/Documentation/Api/Fortran/tipuesearch/tipuesearch_content.js
index db1f3534ffa2746682897995953b4028afe1c0e9..88640d52abab64f83affdc1e19461ee708195cfa 100644
--- a/Documentation/html/Documentation/Api/Fortran/tipuesearch/tipuesearch_content.js
+++ b/Documentation/html/Documentation/Api/Fortran/tipuesearch/tipuesearch_content.js
@@ -1 +1 @@
-var tipuesearch = {"pages":[{"text":"Flex_extract: Calculation of etadot Note for this version:\nAll code transferred to free form.\nSome code cosmetics, should not have any effects\nRename some source files Developer Info Leopold Haimberger 1 1 Univ. of Vienna, Dept. of Meteorology & Geophysics","tags":"home","loc":"index.html","title":" Flex_extract: Calculation of etadot "},{"text":"This file depends on sourcefile~~calc_etadot.f90~~EfferentGraph sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Programs calc_etadot Functions IA Subroutines STATIS Source Code calc_etadot.f90 Source Code PROGRAM calc_etadot !! Prepare input data for FLEXPART, esp. vertical velocity as !! etadot or etadot * dp/deta !*---------------------------------------------------------------- ! author: L. Haimberger ! date:   03/2010 ! version: V4.0 ! !## Program calc_etadot ! ! **Prepares input data for POP model meteorological preprocessor** ! !----------------------------------------------------------------- ! ! Calculation of etapoint on a regular \\lambda-\\phi grid and writing ! `U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, ! EWSS,NSSS` ! to an output file (input and output in GRIB 1 or 2 format). !  etapoint is defined as the total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} ! !### Version history and authors: ! - 04/1994: Leopold Haimberger, Gerhard Wotawa ! ! - 2003-05-11: Alexander Beck ! ! - 12/2006: L. Haimberger V2.0, !           handle arbitrary regular grids and T799 resolution data ! ! - 03/2010: L. Haimberger V4.0, !           handle GRIB edition 2 fields and T1279 resolution data ! - 04-06/2019: Petra Seibert, !            beautify code and add FORD documentation ! !----------------------------------------------------------------- !  # !## Input required: ! !     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION ! !     11    fort.11   T,U,V           regular lambda phi grid !     12    fort.12   D               regular lambda phi grid !     13    fort.13   LNSP            spherical harmonics !     14    fort.14   SD,MSL,TCC,10U, !                     10V,2T,2D       regular lambda phi grid !     16    fort.16   LSP,CP,SSHF, !                     SSR,EWSS,NSSS   regular lambda phi grid !     17    fort.17   Q               regular lambda phi grid ! !------------------------------------------------------------------ ! !### Output produced: ! !    UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION ! !    15    fort.15   `U,V,ETA,T,PS, !                    `Q,SD,MSL,TCC,` !                    `10U,10V,2T,2D,`  regular lambda phi grid !                    `LSP,CP,SSHF,` !                    `SSR,EWSS,NSSS` ! !------------------------------------------------------------------ USE PHTOGR USE GRTOPH USE FTRAFO USE RWGRIB2 USE GRIB_API IMPLICIT NONE REAL , ALLOCATABLE , DIMENSION (:,:) :: LNPS REAL , ALLOCATABLE , DIMENSION (:,:) :: Z REAL , ALLOCATABLE , DIMENSION (:,:,:) :: T , UV , UV2 REAL , ALLOCATABLE , DIMENSION (:,:,:) :: QA , OM , OMR REAL , ALLOCATABLE , DIMENSION (:,:,:) :: DIV , ETA , ETAR REAL , ALLOCATABLE , DIMENSION (:,:) :: DPSDL , DPSDM REAL , ALLOCATABLE , DIMENSION (:,:,:) :: PS , DPSDT REAL , ALLOCATABLE , DIMENSION (:,:,:) :: SURF , FLUX , OROLSM REAL , ALLOCATABLE , DIMENSION (:) :: WSAVE , H , SINL , COSL , WSAVE2 REAL , ALLOCATABLE , DIMENSION (:) :: BREITE , GBREITE , AK , BK , pv ! Arrays for Gaussian grid calculations REAL :: X1 , X2 , RMS , MW , SIG , LAM REAL , ALLOCATABLE :: CUA (:,:,:), CVA (:,:,:) REAL , ALLOCATABLE , DIMENSION (:,:) :: P , PP , P2 REAL , ALLOCATABLE , DIMENSION (:,:) :: XMN , HILFUV REAL , ALLOCATABLE , DIMENSION (:) :: LNPMN , LNPMN2 , LNPMN3 REAL , ALLOCATABLE , DIMENSION (:) :: WEIGHT REAL , ALLOCATABLE , DIMENSION (:,:) :: UGVG REAL , ALLOCATABLE , DIMENSION (:,:) :: DG , ETAG REAL , ALLOCATABLE , DIMENSION (:,:) :: GWSAVE REAL , ALLOCATABLE , DIMENSION (:) :: PSG , HILF ! end arrays for Gaussian grid calculations INTEGER , ALLOCATABLE , DIMENSION (:) :: MLAT , MPSURF , MPFLUX , MPORO , MPAR INTEGER , ALLOCATABLE :: GIFAX (:,:) REAL PI , COSB , DAK , DBK , P00 REAL URLAR8 , JMIN1 , LLLAR8 , MAXBMIN1 , PIR8 , DCOSB INTEGER I , J , K , L , IERR , M , LTEST , MK , NGI , NGJ INTEGER MFLUX , MSURF , MORO INTEGER LUNIT , LUNIT2 INTEGER MAXL , MAXB , MLEVEL , LEVOUT , LEVMIN , LEVMAX INTEGER MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , MNAUF , META , METADIFF INTEGER MDPDETA , METAPAR REAL RLO0 , RLO1 , RLA0 , RLA1 CHARACTER * 300 MLEVELIST INTEGER MAUF , MANF , IFAX ( 10 ) INTEGER IGRIB ( 1 ), iret , ogrib CHARACTER * 80 FILENAME NAMELIST / NAMGEN / & MAXL , MAXB , & MLEVEL , MLEVELIST , MNAUF , METAPAR , & RLO0 , RLO1 , RLA0 , RLA1 , & MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , META , METADIFF ,& MDPDETA LTEST = 1 CALL POSNAM ( 4 , 'NAMGEN' ) READ ( 4 , NAMGEN ) MAUF = INT ( 36 0. * ( REAL ( MAXL ) - 1. ) / ( RLO1 - RLO0 ) + 0.0001 ) !      PRINT*, MAUF MANF = INT ( REAL ( MAUF ) / 36 0. * ( 36 0. + RLO0 ) + 1.0001 ) IF ( MANF . gt . MAUF ) MANF = MANF - MAUF !------------------------------------------------------------------ !! ALLOCATE VARIABLES !------------------------------------------------------------------ ALLOCATE ( LNPS ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 1 )) ALLOCATE ( H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 )) ALLOCATE ( OM ( MAXL , MAXB , MLEVEL )) ALLOCATE ( ETA ( MAXL , MAXB , MLEVEL )) ALLOCATE ( PS ( MAXL , MAXB , 1 ), DPSDT ( MAXL , MAXB , 1 )) ALLOCATE ( WSAVE ( 4 * MAUF + 15 ), WSAVE2 ( 4 * MAUF + 15 )) ALLOCATE ( BREITE ( MAXB ), AK ( MLEVEL + 1 ), BK ( MLEVEL + 1 ), PV ( 2 * MLEVEL + 2 )) ALLOCATE ( MPAR ( 2 )) ALLOCATE ( COSL ( MAXL ), SINL ( MAXL )) ALLOCATE ( CUA ( 2 , 4 , MLEVEL ), CVA ( 2 , 4 , MLEVEL )) !------------------------------------------------------------------ ! GAUSS STUFF !------------------------------------------------------------------ IF ( MGAUSS . EQ . 1 ) THEN LUNIT = 0 FILENAME = 'fort.18' CALL GRIB_OPEN_FILE ( LUNIT , TRIM ( FILENAME ), 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT , IGRIB ( 1 ), IRET ) ! we can close the file CALL GRIB_CLOSE_FILE ( LUNIT ) !      call grib_get(igrib(1),'gridType', j) NGJ = MNAUF + 1 ALLOCATE ( GWSAVE ( 8 * NGJ + 15 , NGJ / 2 )) ALLOCATE ( GIFAX ( 10 , NGJ )) ALLOCATE ( GBREITE ( NGJ ), WEIGHT ( NGJ )) ALLOCATE ( MLAT ( NGJ )) ALLOCATE ( P ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , NGJ / 2 )) ALLOCATE ( PP ( NGJ / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 )) ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB )) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfPointsAlongAMeridian' , NGJ ) !   get as a integer call grib_get ( igrib ( 1 ), 'pl' , MLAT ) NGI = SUM ( MLAT ) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfVerticalCoordinateValues' , MK ) IF ( MK / 2 - 1 . NE . MLEVEL ) THEN WRITE ( * , * ) 'FATAL: Number of model levels' , mk , & ' does not agree with' , MLEVEL , ' in namelist' STOP END IF call grib_get ( igrib ( 1 ), 'pv' , pv ) AK = PV ( 1 : 1 + MLEVEL ) BK = PV ( 2 + MLEVEL : 2 * MLEVEL + 2 ) ALLOCATE ( LNPMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( LNPMN2 ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( UGVG ( NGI , 2 * MLEVEL ), HILFUV ( 2 * MAXL , 2 )) ALLOCATE ( DPSDL ( NGI , 1 ), DPSDM ( NGI , 1 )) ALLOCATE ( PSG ( NGI ), HILF ( NGI )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL )) !      ALLOCATE (UV2(MAXL, MAXB, 2*MLEVEL)) ALLOCATE ( XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 2 * MLEVEL )) ALLOCATE ( DG ( NGI , MLEVEL ), ETAG ( NGI , MLEVEL )) !! Initialisieren  Legendretransformation auf das LaT/LON Gitter PI = ACOS ( - 1.D0 ) !$OMP PARALLEL DO DO 20 J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , J )) 20 CONTINUE !$OMP END PARALLEL DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) !* Initialisation of fields for FFT and Legendre transformation ! to Gaussian grid and back to phase space X1 =- 1.D0 X2 = 1.D0 CALL GAULEG ( X1 , X2 , GBREITE , WEIGHT , NGJ ) !$OMP PARALLEL DO PRIVATE(M) DO J = 1 , NGJ / 2 CALL PLGNFA ( MNAUF , GBREITE ( J ), P (:, J )) DO M = 0 ,( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 PP ( J , M ) = P ( M , J ) END DO END DO !$OMP END PARALLEL DO !       MPAR(1)=152 FILENAME = 'fort.12' !!  read LNSP in SH CALL READSPECTRAL ( FILENAME , LNPMN , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) CALL SET99 ( WSAVE , IFAX , mauf ) CALL PHGCUT ( LNPMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , EXP ( PS ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG DO J = 1 , NGJ / 2 CALL SET99 ( GWSAVE ( 1 , J ), GIFAX ( 1 , J ), MLAT ( J )) END DO CALL PHGR213 ( LNPMN , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) PSG = HILF CALL GRPH213 ( LNPMN2 , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL PHGR213 ( LNPMN2 , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) HILF = exp ( PSG ) - exp ( HILF ) CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS ratio of PS: ' , RMS , MW , SIG PSG = EXP ( PSG ) HILF = PSG CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG: ' , RMS , MW , SIG 111 FILENAME = 'fort.10' !!  read u,v in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , 2 * MLEVEL , MLEVEL ,( / 131 , 132 / ), AK , BK ) !!  Transformieren des Windes auf das Gaussgitter CALL PHGR213 ( XMN , UGVG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 2 * MLEVEL ) DO K = 1 , MLEVEL ! North Pole CALL JSPPOLE ( XMN (:, K ), 1 , MNAUF ,. TRUE ., CUA (:,:, K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), 1 , MNAUF ,. TRUE ., CVA (:,:, K )) ! South Pole CALL JSPPOLE ( XMN (:, K ), - 1 , MNAUF ,. TRUE ., CUA (:, 3 : 4 , K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), - 1 , MNAUF ,. TRUE ., CVA (:, 3 : 4 , K )) END DO DO K = 1 , 2 * MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , UV , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 2 * MLEVEL ) 112 FILENAME = 'fort.13' !!  read DIV in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , MLEVEL , MLEVEL ,( / 155 / ), AK , BK ) !! Transformieren der horizontalen Divergenz auf das Gaussgitter CALL PHGR213 ( XMN , DG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , DG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS DG-PS: ' , RMS , MW , SIG !! Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter CALL PHGRAD ( LNPMN , DPSDL , DPSDM , GWSAVE , GIFAX , P , H , MLAT , MNAUF , NGI , NGJ , 1 ) !! Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter CALL CONTGL ( HILF , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) ! note that HILF is ps on input and  dpsdt*ps on output CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , ETA , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETA , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETA-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , HILF , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS HILF-PS: ' , RMS , MW , SIG IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, 1 ), MNAUF , MSMOOTH ) CALL PHGCUT ( XMN , DPSDT , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , DPSDT , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS DPSDT: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN !! Berechnung von Omega auf dem Gaussgitter CALL OMEGA ( PSG , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , OM , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END IF ! MOMEGA CALL GRPH213 ( XMN , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PSG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG-PS: ' , RMS , MW , SIG CALL PHGCUT ( XMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PS , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG 114 DEALLOCATE ( HILF , PSG , DPSDL , DPSDM , ETAG , DG , LNPMN ) !      ALLOCATE (UV(MAXL, MAXB, 2*MLEVEL)) ! CALL GRPH213(XMN,UGVG,GWSAVE,GIFAX,PP,WEIGHT,MLAT, !     *MNAUF,NGI,NGJ,2*MLEVEL) !        DO K=1,2*MLEVEL !          IF (MSMOOTH .ne. 0) CALL SPFILTER(XMN(:,K),MNAUF,MSMOOTH) !        END DO !        CALL PHGCUT(XMN,UV,WSAVE,IFAX,Z, !     *MNAUF,MNAUF,MAUF,MANF,MAXL,MAXB,2*MLEVEL) DEALLOCATE ( PP , P , UGVG , MLAT , GBREITE , WEIGHT , GWSAVE , XMN ) !        CALL ETAGAUSS(Z,WSAVE !     *,BREITE,UV,ETA,OM,PS, !     *MAUF,MAXB,MAXL,MANF,MNAUF,MLEVEL,MSMOOTH) ELSE !----------------------------------------------------------------- !     READING OF PREPARED METEOROLOGICAL FIELDS ! !     THE FOLLOWING FIELDS ARE EXPECTED: ! !     UNIT 11: T,U,V        (REGULAR GRID) !     UNIT 17: Q            (REGULAR GRID) !     UNIT 13: D            (REGULAR GRID) !     UNIT 12: LNSP         (SPHERICAL HARMONICS) !     UNIT 14: SURFACE DATA (REGULAR GRID) !     UNIT 16: FLUX DATA    (REGULAR GRID) !------------------------------------------------------------------ ALLOCATE ( MLAT ( MAXB )) MLAT = MAXL ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , 1 )) ALLOCATE ( DPSDL ( MAXL , MAXB ), DPSDM ( MAXL , MAXB )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL ), DIV ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF SURFACE PRESSURE !------------------------------------------------------------------ FILENAME = 'fort.12' CALL READSPECTRAL ( FILENAME , LNPS , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) !------------------------------------------------------------------ !! READING OF U,V !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.10' CALL READLATLON ( FILENAME , UV , MAXL , MAXB , 2 * MLEVEL ,( / 131 , 132 / )) PI = ACOS ( - 1.D0 ) DO J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) END DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) DO K = 1 , 2 * MLEVEL DO J = 1 , MAXB COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) / 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) * COSB END IF END DO END DO !------------------------------------------------------------------ !! READING OF LNSP on grid !------------------------------------------------------------------ ! For debugging only !      FILENAME='LNSPG_G.20060330.600' !      INQUIRE(FILE=FILENAME,EXIST=EX) !      CALL READLATLON(FILENAME,QA, !     *MAXL,MAXB,1,1,(/152/)) !------------------------------------------------------------------ !! READING OF DIVERGENCE !------------------------------------------------------------------ IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN FILENAME = 'fort.13' CALL READLATLON ( FILENAME , DIV , MAXL , MAXB , MLEVEL ,( / 155 / )) END IF !------------------------------------------------------------------ ! !  Calculation of etapoint --> total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} !------------------------------------------------------------------ !* Initialisieren  Legendretransformation auf das LaT/LON Gitter !! Without Gaussian grid calculation Legendre Polynomials are calculated !! only for one latitude to save space DO J = 1 , MAXB CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , 1 )) CALL PHGCUT ( LNPS , PS (:, J , 1 ), WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , 1 , 1 ) IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN CALL PHGRACUT ( LNPS , DPSDL (:, J ), DPSDM (:, J ), WSAVE , IFAX , Z , H , MAUF , & MNAUF , MAXL , 1 , MANF , 1 ) END IF END DO PS = EXP ( PS ) ! For debugging only CALL STATIS ( MAXL , MAXB , 1 , PS (:,:, 1 ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN CALL OMEGA ( PS , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , OM , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF IF ( META . EQ . 0 . OR . METADIFF . ne . 0 ) THEN DPSDT = PS CALL CONTGL ( DPSDT , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , ETA , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF END IF ! MGAUSS !! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL OPEN ( 21 , FILE = 'VERTICAL.EC' ) WRITE ( 21 , '(A)' ) WRITE ( 21 , '(A)' ) 'VERTICAL DISCRETIZATION OF POP MODEL' WRITE ( 21 , '(A)' ) write ( 21 , '(i3,a)' ) MLEVEL , '   number of layers' WRITE ( 21 , '(A)' ) WRITE ( 21 , '(A)' ) '* A(NLEV+1)' WRITE ( 21 , '(A)' ) DO 205 I = 1 , MLEVEL + 1 205 WRITE ( 21 , '(F18.12)' ) AK ( I ) WRITE ( 21 , '(A)' ) WRITE ( 21 , '(A)' ) '* B(NLEV+1)' WRITE ( 21 , '(A)' ) DO 210 I = 1 , MLEVEL + 1 210 WRITE ( 21 , '(F18.12)' ) BK ( I ) CLOSE ( 21 ) !------------------------------------------------------------------ ! READING OF OMEGA !------------------------------------------------------------------ IF ( MOMEGA . NE . 0 ) THEN ALLOCATE ( OMR ( MAXL , MAXB , MLEVEL )) FILENAME = 'fort.19' CALL READLATLON ( FILENAME , OMR , MAXL , MAXB , MLEVEL ,( / 135 / )) IF ( MOMEGADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     OMEGA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OM (:,:, K ) - OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'OMEGA DIFF: ' , K , RMS , MW , SIG END DO END IF END IF !------------------------------------------------------------------ ! READING OF ETA !------------------------------------------------------------------ IF ( META . NE . 0 ) THEN ALLOCATE ( ETAR ( MAXL , MAXB , MLEVEL )) P00 = 10132 5. FILENAME = 'fort.21' CALL READLATLON ( FILENAME , ETAR , MAXL , MAXB , MLEVEL ,( / 77 / )) IF ( MDPDETA . EQ . 1 ) THEN DO K = 1 , MLEVEL DAK = AK ( K + 1 ) - AK ( K ) DBK = BK ( K + 1 ) - BK ( K ) DO J = 1 , MAXB DO I = 1 , MAXL ETAR ( I , J , K ) = 2 * ETAR ( I , J , K ) * PS ( I , J , 1 ) * ( DAK / PS ( I , J , 1 ) + DBK ) / & ( DAK / P00 + DBK ) IF ( K . GT . 1 ) ETAR ( I , J , K ) = ETAR ( I , J , K ) - ETAR ( I , J , K - 1 ) END DO END DO END DO END IF IF ( METADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     ETAR: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ) - ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'ETA DIFF: ' , K , RMS , MW , SIG END DO DO K = 1 , MLEVEL WRITE ( * , '(I3,2F12.4)' ) K , ETA ( 1 , MAXB / 2 , K ), ETAR ( 1 , MAXB / 2 , K ) END DO ELSE ETA = ETAR END IF END IF ALLOCATE ( T ( MAXL , MAXB , MLEVEL )) ALLOCATE ( QA ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF T !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.11' CALL READLATLON ( FILENAME , T , MAXL , MAXB , MLEVEL ,( / 130 / )) !------------------------------------------------------------------ !! READING OF SPECIFIC HUMIDITY !------------------------------------------------------------------ FILENAME = 'fort.17' CALL READLATLON ( FILENAME , QA , MAXL , MAXB , MLEVEL ,( / 133 / )) !------------------------------------------------------------------ !                     TEST READING OF UV from MARS (debug only) !------------------------------------------------------------------ !      FILENAME='fort.22' !      CALL READLATLON(FILENAME,UV2,MAXL,MAXB,2*MLEVEL,2,(/131,132/)) !------------------------------------------------------------------ !! WRITE MODEL LEVEL DATA TO fort.15 !------------------------------------------------------------------ !!     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi) !!     Now we are transforming back to the usual winds. DO K = 1 , MLEVEL DO J = 2 , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END DO ! special treatment for poles, if necessary. DO J = 1 , MAXB , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( 1.0 - BREITE ( J ) * BREITE ( J ) . GT . 0 . OR . MGAUSS . NE . 1 ) THEN IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) * 1.D6 UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) * 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END IF ELSE HILFUV ( 5 : MAXL ,:) = 0. HILFUV ( 1 : 2 ,:) = 0. IF ( J . EQ . MAXB ) THEN ! Suedpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 4 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 4 , K ) ELSE ! Nordpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 2 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 2 , K ) END IF CALL RFOURTR ( HILFUV (:, 1 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , K ) = HILFUV ( MANF + I , 1 ) ELSE UV ( I + 1 , J , K ) = HILFUV ( MANF - MAXL + I , 1 ) END IF END DO CALL RFOURTR ( HILFUV (:, 2 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF + I , 2 ) ELSE UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF - MAXL + I , 2 ) END IF END DO end if END DO END DO ! open output file call grib_open_file ( LUNIT , 'fort.15' , 'w' ) ! we use temperature on lat/lon on model levels as template for model level data LUNIT2 = 0 CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.11' , 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT2 , IGRIB ( 1 ), IRET ) CALL GRIB_CLOSE_FILE ( LUNIT2 ) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 131 / )) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, MLEVEL + 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 132 / )) IF ( MDPDETA . ne . 1 . AND . MGAUSS . EQ . 0 . and . META . eq . 1 ) THEN CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 77 / )) ELSE CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / METAPAR / )) END IF CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , T , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 130 / )) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , PS , MAXL , MAXB , 1 , '1' , 1 ,( / 134 / )) CALL GRIB_SET ( IGRIB ( 1 ), \"levelType\" , \"ml\" ) CALL GRIB_SET ( IGRIB ( 1 ), \"typeOfLevel\" , \"hybrid\" ) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , QA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 133 / )) IF ( MOMEGA . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.25' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OMR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) IF ( MOMEGADIFF . EQ . 1 ) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = OM - OMR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) END IF END IF IF ( META . EQ . 1 . AND . METADIFF . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.26' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , ETAR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) !        IF (MOMEGADIFF .EQ. 1) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = ETA - ETAR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) !        END IF END IF CALL GRIB_CLOSE_FILE ( LUNIT ) 2000 STOP 'SUCCESSFULLY FINISHED calc_etadot: CONGRATULATIONS' 3000 STOP 'ROUTINE calc_etadot: ERROR' 9999 stop 'ROUTINE calc_etadot: ERROR' END !------------------------------------------------------------------ INTEGER FUNCTION IA ( FIELD1 , NI , NJ , NK , G ) !------------------------------------------------------------------ !! Calculate something that is roughly log10( maxval(field1)/g ) [PS] !------------------------------------------------------------------ IMPLICIT NONE INTEGER :: I , J , K INTEGER , INTENT ( IN ) :: NI , NJ , NK REAL , INTENT ( IN ) :: FIELD1 ( NI , NJ , NK ) REAL , INTENT ( IN ) :: G REAL :: RMIN , RMAX , XMAX , A , A1 , A2 RMAX = FIELD1 ( 1 , 1 , 1 ) RMIN = FIELD1 ( 1 , 1 , 1 ) DO 100 K = 1 , NK DO 100 J = 1 , NJ DO 100 I = 1 , NI IF ( FIELD1 ( I , J , K ) . GT . RMAX ) RMAX = FIELD1 ( I , J , K ) IF ( FIELD1 ( I , J , K ) . LT . RMIN ) RMIN = FIELD1 ( I , J , K ) 100 CONTINUE IF ( ABS ( RMIN ) . GT . RMAX . OR . ABS ( RMIN ) . EQ . RMAX ) THEN XMAX = ABS ( RMIN ) ELSE XMAX = RMAX END IF IF ( XMAX . EQ . 0 ) THEN IA = 0 RETURN END IF A1 = LOG10 ( ( G / 1 0.d0 ) / XMAX ) A2 = LOG10 ( G / XMAX ) IF ( A1 . gt . A2 ) THEN A = A2 ELSE A = A1 END IF IF ( A . GT . 0 ) IA = INT ( A ) IF ( A . LT . 0 ) IA = INT ( A - 1.0 ) RETURN END SUBROUTINE STATIS ( NI , NJ , NK , PHI , RMS , MW , SIG ) !------------------------------------------------------------------ !! calculate mean, rms, stdev !------------------------------------------------------------------ IMPLICIT REAL ( A - H , O - Z ) REAL PHI ( NI , NJ , NK ), SIG , MW , RMS , P N = NI * NJ * NK RMS = 0. MW = 0. ! 10.86 sinstead of 11.04 sec DO 10 K = 1 , NK DO 10 J = 1 , NJ DO 10 I = 1 , NI P = PHI ( I , J , K ) RMS = RMS + P * P MW = MW + P 10 CONTINUE RMS = SQRT ( RMS / N ) MW = MW / N IF ( RMS * RMS - MW * MW . LT . 0. ) THEN SIG = 0.0 ELSE SIG = SQRT ( RMS * RMS - MW * MW ) END IF RETURN END","tags":"","loc":"sourcefile/calc_etadot.f90.html","title":"calc_etadot.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~rwgrib2.f90~~AfferentGraph sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules RWGRIB2 Source Code rwgrib2.f90 Source Code MODULE RWGRIB2 CONTAINS SUBROUTINE READLATLON ( FILENAME , FELD , MAXL , MAXB , MLEVEL , MPAR ) !! Read a field from GRIB file on lat-lon grid USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , parid , nm integer :: i , k integer , dimension (:), allocatable :: igrib integer :: numberOfPointsAlongAParallel integer :: numberOfPointsAlongAMeridian real , dimension (:), allocatable :: values integer :: numberOfValues real , dimension ( maxl , maxb , mlevel ) :: feld integer :: maxl , maxb , mlevel , mstride , mpar (:), irest , div , level integer :: l ( size ( mpar )) character * ( * ) :: filename feld = 0. call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) nm = size ( mpar ) div = mlevel / nm l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n !      write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAParallel' , & numberOfPointsAlongAParallel ) !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAMeridian' , & numberOfPointsAlongAMeridian ) call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !      write(*,*) 'numberOfValues=',numberOfValues allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) call grib_get ( igrib ( i ), 'paramId' , parid ) call grib_get ( igrib ( i ), 'level' , level ) kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then !         l(k)=l(k)+1 feld (:,:,( k - 1 ) * div + level ) = reshape ( values ,( / maxl , maxb / )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readlatlon: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop !!   write(*,*) 'readlatlon: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO if ( allocated ( values )) deallocate ( values ) deallocate ( igrib ) END SUBROUTINE READLATLON SUBROUTINE WRITELATLON ( iunit , igrib , ogrib , FELD , MAXL , MAXB , MLEVEL ,& MLEVELIST , MSTRIDE , MPAR ) !! write a field on lat-lon grid to GRIB file USE GRIB_API IMPLICIT NONE INTEGER IFIELD , MLEVEL , MNAUF , I , J , K , L , MSTRIDE , IERR , JOUT INTEGER MPAR ( MSTRIDE ), MAXL , MAXB , LEVMIN , LEVMAX INTEGER IUNIT , igrib , ogrib REAL ZSEC4 ( MAXL * MAXB ) REAL FELD ( MAXL , MAXB , MLEVEL ) CHARACTER * ( * ) MLEVELIST INTEGER ILEVEL ( MLEVEL ), MLINDEX ( MLEVEL + 1 ), LLEN ! parse MLEVELIST LLEN = len ( trim ( MLEVELIST )) if ( index ( MLEVELIST , 'to' ) . ne . 0 . or . index ( MLEVELIST , 'TO' ) . ne . 0 ) THEN i = index ( MLEVELIST , '/' ) read ( MLEVELIST ( 1 : i - 1 ), * ) LEVMIN i = index ( MLEVELIST , '/' ,. true .) read ( MLEVELIST ( i + 1 : LLEN ), * ) LEVMAX l = 0 do i = LEVMIN , LEVMAX l = l + 1 ILEVEL ( l ) = i end do else l = 1 MLINDEX ( 1 ) = 0 do i = 1 , LLEN if ( MLEVELIST ( i : i ) . eq . '/' ) THEN l = l + 1 MLINDEX ( l ) = i end if end do MLINDEX ( l + 1 ) = LLEN + 1 do i = 1 , l read ( MLEVELIST ( MLINDEX ( i ) + 1 : MLINDEX ( i + 1 ) - 1 ), * ) ILEVEL ( i ) end do end if DO k = 1 , l call grib_set ( igrib , \"level\" , ILEVEL ( k )) DO j = 1 , MSTRIDE call grib_set ( igrib , \"paramId\" , MPAR ( j )) !         if (MPAR(j) .eq. 87) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"Pa,s**-1\") !         end if !         if (MPAR(j) .eq. 77) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"s**-1\") !         end if if ( l . ne . mlevel ) then zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, ILEVEL ( k )),( / maxl * maxb / )) else zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, k ),( / maxl * maxb / )) end if call grib_set ( igrib , \"values\" , zsec4 ) call grib_write ( igrib , iunit ) END DO END DO END SUBROUTINE WRITELATLON SUBROUTINE READSPECTRAL ( FILENAME , CXMN , MNAUF , MLEVEL , MAXLEV , MPAR , A , B ) !!  read a GRIB file in spherical harmonics USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , div , nm , k integer :: i , j , parid integer , dimension (:), allocatable :: igrib real , dimension (:), allocatable :: values integer :: numberOfValues , maxlev REAL :: A ( MAXLEV + 1 ), B ( MAXLEV + 1 ), pv ( 2 * MAXLEV + 2 ) REAL :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) integer :: maxl , maxb , mlevel , mstride , mpar (:), mnauf , ioffset , ipar , ilev , l ( size ( mpar )) character * ( * ) :: filename call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n ! write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'pentagonalResolutionParameterJ' , j ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !   write(*,*) 'numberOfValues=',numberOfValues call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get ( igrib ( i ), 'level' , ilev ) call grib_get ( igrib ( i ), 'pv' , pv ) allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) !      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1) !           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2)) call grib_get ( igrib ( i ), 'paramId' , parid ) nm = size ( mpar ) div = mlevel / nm kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then l ( k ) = l ( k ) + 1 cxmn (:,( k - 1 ) * div + l ( k )) = values ( 1 :( MNAUF + 1 ) * ( MNAUF + 2 )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readspectral: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop !!   write(*,*) 'readspectral: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO deallocate ( values ) deallocate ( igrib ) A = pv ( 1 : 1 + MAXLEV ) B = pv ( 2 + MAXLEV : 2 * MAXLEV + 2 ) END SUBROUTINE READSPECTRAL END MODULE RWGRIB2","tags":"","loc":"sourcefile/rwgrib2.f90.html","title":"rwgrib2.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~grphreal.f90~~EfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~grphreal.f90~~AfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules GRTOPH Source Code grphreal.f90 Source Code MODULE GRTOPH USE PHTOGR CONTAINS SUBROUTINE GRPH213 ( CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF KUGELKOORDINATEN DURCH ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z   = LEGENDREFUNKTIONSWERTE ! ! MNAUF    ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL     ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB     ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL   ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE , IFAX ( 10 , MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) DIMENSION WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) REAL W ( MAXB ) DIMENSION IND ( MAXB ) IND ( 1 ) = 0 DO 6 J = 2 , MAXB / 2 IND ( j ) = IND ( J - 1 ) + MLAT ( J - 1 ) 6 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 16 L = 1 , MLEVEL CALL GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 16 CONTINUE !$omp end parallel do RETURN END SUBROUTINE GRPH213 SUBROUTINE GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF KUGELKOORDINATEN DURCH ! ! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD  = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE = Working Array fuer Fouriertransformation ! Z     = LEGENDREFUNKTIONSWERTE ! ! MNAUF ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL  ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB  ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL CXMS ( 4 * ( MNAUF + 1 )) REAL CXMA ( 4 * ( MNAUF + 1 )) REAL , ALLOCATABLE :: CXM (:,:) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER IFAX ( 10 , MAXB ) REAL W ( MAXB ) INTEGER IND ( MAXB ) ALLOCATE ( CXM ( 4 * MAXB , MAXB )) DO 5 J = 1 , MAXB / 2 CXMS ( 1 : MLAT ( J )) = FELD ( IND ( J ) + 1 : IND ( J ) + MLAT ( J ), L ) CALL RFOUFTR ( CXMS , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) CXMA ( 1 : MLAT ( J )) = FELD ( MAXL - IND ( J ) - MLAT ( J ) + 1 : MAXL - IND ( J ), L ) CALL RFOUFTR ( CXMA , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) DO 4 I = 1 , 2 * ( MNAUF + 1 ) CXM ( I , J ) = CXMS ( I ) + CXMA ( I ) CXM ( I , MAXB + 1 - J ) = CXMS ( I ) - CXMA ( I ) 4 CONTINUE 5 CONTINUE CALL LGTR213 ( CXMN ( 0 , L ), CXM , Z , W , MLAT , MNAUF , MAXB ) DEALLOCATE ( CXM ) RETURN END SUBROUTINE GRPHSUB ! SUBROUTINE LGTR213 ( CXMN , CXM , Z , W , MLAT , MNAUF , MAXB ) !!     DIESE ROUTINE BERECHNET DIE KFFKs CXMN IMPLICIT REAL ( A - H , O - Z ) INTEGER MLAT ( MAXB ) DIMENSION CXM ( 0 : 4 * MAXB - 1 , MAXB ) DIMENSION CXMN ( 0 : 2 * ((( MNAUF + 1 ) * MNAUF ) / 2 + MNAUF ) + 1 ) REAL * 8 Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL * 8 W ( MAXB ), CR , CI , HILF LOGICAL EVEN LL = 0 LLP = 0 DO 1 I = 0 , MNAUF KM = 0 9 KM = KM + 1 IF ( MLAT ( KM ) . LE . 2 * I ) THEN GOTO 9 END IF DO 2 J = I , MNAUF CR = 0 CI = 0 EVEN = MOD ( I + J , 2 ) . EQ . 0 IF ( EVEN ) THEN DO 3 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , K ) * HILF CI = CI + CXM ( 2 * I + 1 , K ) * HILF 3 CONTINUE ELSE DO 4 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , MAXB + 1 - K ) * HILF CI = CI + CXM ( 2 * I + 1 , MAXB + 1 - K ) * HILF 4 CONTINUE END IF 5 CXMN ( 2 * LL ) = CR CXMN ( 2 * LL + 1 ) = CI LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 1 CONTINUE RETURN END SUBROUTINE LGTR213 SUBROUTINE RFOUFTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) ! ! BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : 2 * MAXL - 1 ) DIMENSION FELD ( MAXL ), TRIGS ( 2 * MAXL ) DIMENSION WSAVE ( MAXAUF ) INTEGER IFAX ( 10 ) ! NORMIERUNG... WSAVE ( 1 ) = CXM ( MAXL - 1 ) CXM ( 1 : MAXL ) = CXM ( 0 : MAXL - 1 ) / 2 CXM ( 0 ) = WSAVE ( 1 ) / 2 !    CALL CFFTF(MAXL,CXM,WSAVE) CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , - 1 ) RETURN END SUBROUTINE RFOUFTR END MODULE GRTOPH","tags":"","loc":"sourcefile/grphreal.f90.html","title":"grphreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~phgrreal.f90~~AfferentGraph sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules PHTOGR Source Code phgrreal.f90 Source Code MODULE PHTOGR INTEGER , PARAMETER :: MAXAUF = 36000 CONTAINS SUBROUTINE PHGR213 ( CXMN , FELD , WSAVE , IFAX , Z , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH ! ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z      = LEGENDREFUNKTIONSWERTE ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT NONE !   Anzahl der Gitterpunkte auf jedem Breitenkreis INTEGER MLAT ( MAXB / 2 ) INTEGER K , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER :: IFAX ( 10 , MAXB ) IND ( 1 ) = 0 DO 7 K = 2 , MAXB / 2 IND ( K ) = IND ( K - 1 ) + MLAT ( K - 1 ) 7 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 17 K = 1 , MAXB / 2 CALL PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 17 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE PHGR213 SUBROUTINE PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER MLAT ( MAXB / 2 ) INTEGER K , L , I , J , LLS , LLPS , LL , LLP , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) INTEGER :: IFAX ( 10 , MAXB ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXMS ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL ACR , ACI , SCR , SCI REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) DO 6 L = 1 , MLEVEL LL = 0 LLP = 0 DO 1 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP IF ( 2 * I + 1 . LT . MLAT ( K )) THEN !         Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 J = I , MNAUF , 2 SCR = SCR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 J = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE END IF LL = LLS + ( MNAUF - I + 1 ) LLP = LLPS + ( MNAUF - I + 3 ) CXMS ( 2 * I ) = SCR + ACR CXMS ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 1 CONTINUE !     CALL FOURTR(CXMS,FELD(IND(k)+1,L),WSAVE(:,K),MNAUF,*MLAT(K),1) !     CALL FOURTR(CXMA,FELD(MAXL-IND(k)-MLAT(K)+1,L),WSAVE(:,K),MNAUF,MLAT(K),1) CALL RFOURTR ( CXMS , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( IND ( k ) + 1 : IND ( K ) + MLAT ( K ), L ) = CXMS ( 0 : MLAT ( K ) - 1 ) CALL RFOURTR ( CXMA , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( MAXL - IND ( k ) - MLAT ( K ) + 1 : MAXL - IND ( k ), L ) = CXMA ( 0 : MLAT ( K ) - 1 ) !      WRITE(*,*) IND+1,FELD(IND+1,L) 6 CONTINUE END SUBROUTINE PHSYM SUBROUTINE PHGCUT ( CXMN , FELD , WSAVE , IFAX , Z , & MNAUF , MMAX , MAUF , MANF , MAXL , MAXB , MLEVEL ) !! DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER !! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN !! RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt !! Der Erde angegeben werden. Diese Routine ist langsamer als phgrph ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! BREITE = SINUS DER GEOGRAFISCHEN BREITEN ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAUF   ANZAHL DER LAENGEN UND DER FOURIERKOEFFIZIENTEN ! MANF   ANFANG DES LAENGENBEREICHS FUER DAS GITTER, !        AUF DAS INTERPOLIERT WERDEN SOLL ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MMAX + 3 ) * ( MMAX + 4 )) / 2 , MAXB ) DIMENSION CXMN ( 0 :( MMAX + 1 ) * ( MMAX + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) LOGICAL SYM !    write(*,*)mauf,mnauf,manf,maxl IF ( MAUF . LE . MNAUF ) WRITE ( * , * ) 'TOO COARSE LONGITUDE RESOLUTION' IF ( MANF . LT . 1 . OR . MAXL . LT . 1 . OR . & MANF . GT . MAUF . OR . MAXL . GT . MAUF ) THEN WRITE ( * , * ) 'WRONG LONGITUDE RANGE' , MANF , MAXL STOP END IF ! Pruefe, ob Ausgabegitter symmetrisch zum Aequator ist ! Wenn ja soll Symmetrie der Legendrepolynome ausgenutzt werden IF ( MAXB . GT . 4 ) THEN SYM = . TRUE . DO 11 J = 5 , 5 IF ( ABS ( ABS ( Z ( 100 , J )) - ABS ( Z ( 100 , MAXB + 1 - J ))) . GT . 1E-11 ) SYM = . FALSE . !       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J)) 11 CONTINUE !!      WRITE(*,*) 'Symmetrisch: ',SYM ELSE SYM = . FALSE . END IF IF ( SYM ) THEN !$OMP PARALLEL DO DO J = 1 ,( MAXB + 1 ) / 2 CALL PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) END DO !$OMP END PARALLEL DO ELSE !$OMP PARALLEL DO DO J = 1 , MAXB CALL PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END DO !$OMP END PARALLEL DO END IF RETURN END SUBROUTINE PHGCUT SUBROUTINE PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXM ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL SCR , SCI , ACR , ACI DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) DO 16 L = 1 , MLEVEL LL = 0 LLP = 0 DO 17 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP !       Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 K = I , MNAUF , 2 SCR = SCR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 K = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE LL = LLS + MNAUF - I + 1 LLP = LLPS + MNAUF - I + 3 CXM ( 2 * I ) = SCR + ACR CXM ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 17 CONTINUE CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 26 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF 26 CONTINUE CALL RFOURTR ( CXMA , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 36 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF + I - 1 ) ELSE FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF - MAUF + I - 1 ) END IF 36 CONTINUE 16 CONTINUE END SUBROUTINE PHSYMCUT SUBROUTINE PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER , INTENT ( IN ) :: MNAUF , MAUF , MANF , J , MAXL , MAXB , MLEVEL REAL :: CXM ( 0 : MAXAUF - 1 ) REAL , INTENT ( IN ) :: Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL , INTENT ( IN ) :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL , INTENT ( IN ) :: WSAVE ( 4 * MAUF + 15 ) REAL :: FELD ( MAXL , MAXB , MLEVEL ) INTEGER :: IFAX ( 10 ) INTEGER I , L DO L = 1 , MLEVEL CALL LEGTR ( CXMN (:, L ), CXM , Z (:, J ), MNAUF , MAUF ) CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF END DO END DO END SUBROUTINE PHGPNS SUBROUTINE LEGTR ( CXMN , CXM , Z , MNAUF , MAUF ) !!   DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM IMPLICIT NONE INTEGER MNAUF , MAUF , LL , LLP , I , J REAL CXM ( 0 : MAXAUF - 1 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 ) REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL CI , CR LL = 0 LLP = 0 DO 1 I = 0 , MNAUF CR = 0.D0 CI = 0.D0 DO 2 J = I , MNAUF CR = CR + Z ( LLP ) * CXMN ( 2 * LL ) CI = CI + Z ( LLP ) * CXMN ( 2 * LL + 1 ) LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 CXM ( 2 * I ) = CR CXM ( 2 * I + 1 ) = CI 1 CONTINUE RETURN END SUBROUTINE LEGTR SUBROUTINE RFOURTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) !!     BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : MAXAUF - 1 ) REAL :: WSAVE ( 2 * MAXL ), TRIGS ( 2 * MAXL ) INTEGER IFAX ( 10 ) DO I = MNAUF + 1 , MAXL - 1 CXM ( 2 * I ) = 0.0 CXM ( 2 * I + 1 ) = 0.0 END DO CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , 1 ) DO I = 0 , MAXL - 1 CXM ( I ) = CXM ( I + 1 ) END DO RETURN END SUBROUTINE RFOURTR SUBROUTINE GAULEG ( X1 , X2 , X , W , N ) !! BERECHNET DIE GAUSS+SCHEN BREITEN IMPLICIT REAL ( A - H , O - Z ) DIMENSION X ( N ), W ( N ) PARAMETER ( EPS = 3.D-14 ) M = ( N + 1 ) / 2 XM = 0.5D0 * ( X2 + X1 ) XL = 0.5D0 * ( X2 - X1 ) DO 12 I = 1 , M Z = DCOS ( 3.141592654D0 * ( I - . 25 D0 ) / ( N + . 5 D0 )) 1 CONTINUE P1 = 1.D0 P2 = 0.D0 DO 11 J = 1 , N P3 = P2 P2 = P1 P1 = (( 2.D0 * J - 1.D0 ) * Z * P2 - ( J - 1.D0 ) * P3 ) / J 11 CONTINUE PP = N * ( Z * P1 - P2 ) / ( Z * Z - 1.D0 ) Z1 = Z Z = Z1 - P1 / PP IF ( ABS ( Z - Z1 ) . GT . EPS ) GO TO 1 X ( I ) = XM - XL * Z X ( N + 1 - I ) = XM + XL * Z W ( I ) = 2.D0 * XL / (( 1.D0 - Z * Z ) * PP * PP ) W ( N + 1 - I ) = W ( I ) 12 CONTINUE RETURN END SUBROUTINE GAULEG SUBROUTINE PLGNFA ( LL , X , Z ) !! PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN !! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X) !! UND SCHREIBT SIE IN DAS FELD Z ! Die Polynome sind wie im ECMWF indiziert, d.h. ! P00,P10,P11,P20,P21,P22,... ! Ansonsten ist die Routine analog zu PLGNDN ! X IST DER COSINUS DES ZENITWINKELS ODER !       DER SINUS DER GEOGRAFISCHEN BREITE IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( LL + 3 ) * ( LL + 4 )) / 2 ) L = LL + 2 I = 1 Z ( 0 ) = 1.D0 FACT = 1.D0 POT = 1.D0 SOMX2 = DSQRT ( 1.D0 - X * X ) DO 14 J = 0 , L DJ = DBLE ( J ) IF ( J . GT . 0 ) THEN FACT = FACT * ( 2.D0 * DJ - 1.D0 ) / ( 2.D0 * DJ ) POT = POT * SOMX2 Z ( I ) = DSQRT (( 2.D0 * DJ + 1.D0 ) * FACT ) * POT I = I + 1 END IF IF ( J . LT . L ) THEN Z ( I ) = X * DSQRT (( 4.D0 * DJ * DJ + 8.D0 * DJ + 3.D0 ) / ( 2.D0 * DJ + 1.D0 )) * Z ( I - 1 ) I = I + 1 END IF DK = DJ + 2.D0 DO 14 K = J + 2 , L DDK = ( DK * DK - DJ * DJ ) Z ( I ) = X * DSQRT (( 4.D0 * DK * DK - 1.D0 ) / DDK ) * Z ( I - 1 ) - & DSQRT ((( 2.D0 * DK + 1.D0 ) * ( DK - DJ - 1.D0 ) * ( DK + DJ - 1.D0 )) / & (( 2.D0 * DK - 3.D0 ) * DDK )) * Z ( I - 2 ) DK = DK + 1.D0 I = I + 1 14 CONTINUE RETURN END SUBROUTINE PLGNFA SUBROUTINE DPLGND ( MNAUF , Z , DZ ) !! DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN !! LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X) !! UND SCHREIBT SIE IN DAS FELD DZ ! DIE REIHENFOLGE IST ! P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) DIMENSION DZ ( 0 :(( MNAUF + 2 ) * ( MNAUF + 3 )) / 2 ) IF ( Z ( 0 ) . NE . 1.D0 ) THEN WRITE ( * , * ) 'DPLGND: Z(0) must be 1.0' STOP END IF LLP = 0 LLH = 0 DO 1 I = 0 , MNAUF + 1 DO 2 J = I , MNAUF + 1 IF ( I . EQ . J ) THEN WURZELA = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELA * Z ( LLP + 1 ) ELSE WURZELB = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELB * Z ( LLP + 1 ) - DBLE ( J + 1 ) * WURZELA * Z ( LLP - 1 ) WURZELA = WURZELB END IF LLH = LLH + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 1 1 CONTINUE RETURN END SUBROUTINE DPLGND SUBROUTINE SPFILTER ( FELDMN , MM , MMAX ) !! Spectral Filter of Sardeshmukh and Hoskins (1984, MWR) ! MM=Spectral truncation of field ! MMAX= Spectral truncation of filter IMPLICIT NONE INTEGER MM , MMAX , I , J , K , L REAL FELDMN ( 0 :( MM + 1 ) * ( MM + 2 ) - 1 ) REAL KMAX , SMAX , FAK SMAX = 0.1 KMAX =- ALOG ( SMAX ) KMAX = KMAX / ( float ( MMAX ) * float ( MMAX + 1 )) ** 2 !    WRITE(*,*)'alogsmax',alog(smax),'KMAX:',KMAX L = 0 DO I = 0 , MM DO J = I , MM !        WRITE(*,*) I,J,FELD(K),FELD(K)*EXP(-KMAX*(J*(J+1))**2) IF ( J . LE . MMAX ) THEN !          FAK=EXP(-KMAX*(J*(J+1))**2) FAK = 1.0 FELDMN ( 2 * L ) = FELDMN ( 2 * L ) * FAK FELDMN ( 2 * L + 1 ) = FELDMN ( 2 * L + 1 ) * FAK ELSE FELDMN ( 2 * L ) = 0. FELDMN ( 2 * L + 1 ) = 0. END IF L = L + 1 END DO END DO END SUBROUTINE SPFILTER END MODULE PHTOGR","tags":"","loc":"sourcefile/phgrreal.f90.html","title":"phgrreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Contents Subroutines POSNAM Source Code posnam.f90 Source Code SUBROUTINE POSNAM ( KULNAM , CDNAML ) !! position in namelist file. ! author:  Mats Hamrud, ECMWF INTEGER , INTENT ( IN ) :: KULNAM CHARACTER * ( * ), INTENT ( IN ) :: CDNAML CHARACTER * 120 CLINE CHARACTER * 1 CLTEST REWIND ( KULNAM ) ILEN = LEN ( CDNAML ) 102 CONTINUE CLINE = ' ' READ ( KULNAM , '(A)' ) CLINE IND1 = INDEX ( CLINE , '&' // CDNAML ) IF ( IND1 . EQ . 0 ) GO TO 102 CLTEST = CLINE ( IND1 + ILEN + 1 : IND1 + ILEN + 1 ) IF ( LGE ( CLTEST , '0' ) . AND . LLE ( CLTEST , '9' ) . OR . & LGE ( CLTEST , 'A' ) . AND . LLE ( CLTEST , 'Z' )) GOTO 102 BACKSPACE ( KULNAM ) RETURN END SUBROUTINE POSNAM","tags":"","loc":"sourcefile/posnam.f90.html","title":"posnam.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~ftrafo.f90~~EfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~ftrafo.f90~~AfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules FTRAFO Source Code ftrafo.f90 Source Code MODULE FTRAFO !! Implementation of the spectral transformation using reduced the Gaussian grid CONTAINS ! Implementierung der spektralen Transformationsmethode unter Verwendung ! des reduzierten Gauss'schen Gitters SUBROUTINE VDTOUV ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , MLAT , MNAUF , NI , NJ , NK ) !! Berechnung der scale winds aus Vorticity und Divergenz !! uebergibt man in XMN die Divergenz, so wird der divergente Anteil des !! Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so !! erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot). !! Summiert man beide, erhaelt man den gesamten Scale wind ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte pro Flaeche ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , N , NI , NJ , NK , MNAUF , GGIND ( NJ / 2 ) INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL RT , IT GGIND ( 1 ) = 0 DO 4 J = 2 , NJ / 2 GGIND ( J ) = GGIND ( J - 1 ) + MLAT ( J - 1 ) 4 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 5 J = 1 , NJ / 2 CALL VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND ( J ), MLAT , MNAUF , NI , NJ , NK ) 5 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE VDTOUV SUBROUTINE VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND , MLAT , MNAUF , NI , NJ , NK ) USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD , SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL FAC ( 0 : MNAUF ), RT , IT ERAD = 636747 0.D0 FAC ( 0 ) = 0.D0 DO 12 N = 1 , MNAUF FAC ( N ) =- ERAD / DBLE ( N ) / DBLE ( N + 1 ) 12 CONTINUE CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) VFOUC ( 2 * M ) =- M * ( SCI + ACI ) VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE RETURN END SUBROUTINE VDUVSUB SUBROUTINE PHGRAD ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MLAT , MNAUF , NI , NJ , NK ) !! Berechnung des Gradienten eines Skalars aus dem Feld des !! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der !! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ / 2 CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE GGIND = GGIND + MLAT ( J ) 4 CONTINUE RETURN END SUBROUTINE PHGRAD SUBROUTINE PHGRACUT ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MAUF , MNAUF , NI , NJ , MANF , NK ) !! Berechnung des Gradienten eines Skalars aus dem Feld des !! Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der !! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MAUF , MANF , I , IFAX ( 10 ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NJ , NK ), XPHI ( NI , NJ , NK ) REAL HLAM ( MAXAUF , 2 ), HPHI ( MAXAUF , 2 ) REAL GWSAVE ( 4 * MAUF + 15 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MAUF ) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) CALL RFOURTR ( MVFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) DO 6 I = 0 , NI - 1 IF ( MANF + I . LE . MAUF ) THEN XLAM ( I + 1 , J , K ) = VFOUC ( MANF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF + I - 1 ) ELSE XLAM ( I + 1 , J , K ) = VFOUC ( MANF - MAUF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF - MAUF + I - 1 ) END IF 6 CONTINUE 3 CONTINUE GGIND = GGIND + MAUF 4 CONTINUE RETURN END SUBROUTINE PHGRACUT SUBROUTINE CONTGL ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , ETA , MLAT , A , B , NI , NJ , NK ) !! Berechnung der Divergenz aus dem Windfeld (U,V) !! im Phasenraum. Zurueckgegeben werden die Felder der !! Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus ! Beachte, dass das Windfeld eine um 1 erhoehte Aufloesung in mu-Richtung hat. IMPLICIT NONE INTEGER NI , NJ , NK , I , J , K , MLAT ( NJ ), L REAL A ( NK + 1 ), B ( NK + 1 ) REAL PS ( NI ), DPSDL ( NI ), DPSDM ( NI ) REAL DIV ( NI , NK ), U ( NI , NK ), V ( NI , NK ), ETA ( NI , NK ) REAL BREITE ( NJ ) REAL DIVT1 , DIVT2 , POB , PUN , DPSDT , COSB L = 0 DO 4 J = 1 , NJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DO 1 K = 1 , NK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DIVT1 = DIVT1 + DIV ( L , K ) * ( PUN - POB ) IF ( COSB . GT . 0. ) THEN DIVT2 = DIVT2 + ( B ( K + 1 ) - B ( K )) * PS ( L ) * & ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB END IF ETA ( L , K ) =- DIVT1 - DIVT2 1 CONTINUE DPSDT = ( - DIVT1 - DIVT2 ) / PS ( L ) DO 2 K = 1 , NK ETA ( L , K ) = ETA ( L , K ) - DPSDT * B ( K + 1 ) * PS ( L ) 2 CONTINUE PS ( L ) = DPSDT * PS ( L ) 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE CONTGL SUBROUTINE OMEGA ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , E , MLAT , A , B , NGI , NGJ , MKK ) !! calculates $\\omega$ in the hybrid ($\\eta$-) coordinate system ! OMEGA berechnet omega im Hybridkoordinatensystem ! PS ist der Bodendruck, ! DPSDL,DPSDM sind die Komponenten des Gradienten des Logarithmus des ! Bodendrucks ! DIV,U,V sind die horizontale Divergenz und das horizontale Windfeld ! BREITE ist das Feld der Gauss'schen Breiten ! E ist omega, IMPLICIT NONE INTEGER I , J , K , L , NGI , NGJ , MKK , MLAT ( NGJ ) REAL PS ( NGI ), DPSDL ( NGI ), DPSDM ( NGI ), A ( MKK + 1 ), B ( MKK + 1 ) REAL DIV ( NGI , MKK ), U ( NGI , MKK ), V ( NGI , MKK ), E ( NGI , MKK ) REAL BREITE ( NGJ ) REAL DIVT1 , DIVT2 , POB , PUN , DP , X , Y , COSB REAL DIVT3 ( MKK + 2 ) L = 0 DO 4 J = 1 , NGJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DIVT3 ( 1 ) = 0.0 DO 1 K = 1 , MKK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DP = PUN - POB Y = PS ( L ) * ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB IF ( K . LT . 3 ) THEN X = 0.0 ELSE X = ( B ( K + 1 ) - B ( K )) * Y END IF DIVT1 = DIVT1 + DIV ( L , K ) * DP DIVT2 = DIVT2 + X DIVT3 ( K + 1 ) =- DIVT1 - DIVT2 IF ( K . GT . 1 ) THEN E ( L , K ) = 0.5 * ( POB + PUN ) / & DP * Y * (( B ( K + 1 ) - B ( K )) + ( A ( K + 1 ) * B ( K ) - A ( K ) * B ( K + 1 )) / DP * LOG ( PUN / POB )) ELSE E ( L , K ) = 0.0 END IF E ( L , K ) = E ( L , K ) + 0.5 * ( DIVT3 ( K ) + DIVT3 ( K + 1 )) 1 CONTINUE 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE OMEGA END MODULE FTRAFO","tags":"","loc":"sourcefile/ftrafo.f90.html","title":"ftrafo.f90 – Flex_extract: Calculation of etadot"},{"text":"function IA(FIELD1, NI, NJ, NK, G) Calculate something that is roughly log10( maxval(field1)/g ) [PS] Arguments Type Intent Optional Attributes Name real, intent(in) :: FIELD1 (NI,NJ,NK) integer, intent(in) :: NI integer, intent(in) :: NJ integer, intent(in) :: NK real, intent(in) :: G Return Value integer Contents None","tags":"","loc":"proc/ia.html","title":"IA – Flex_extract: Calculation of etadot"},{"text":"subroutine STATIS(NI, NJ, NK, PHI, RMS, MW, SIG) calculate mean, rms, stdev Arguments Type Intent Optional Attributes Name integer :: NI integer :: NJ integer :: NK real :: PHI (NI,NJ,NK) real :: RMS real :: MW real :: SIG Called by proc~~statis~~CalledByGraph proc~statis STATIS program~calc_etadot calc_etadot program~calc_etadot->proc~statis Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/statis.html","title":"STATIS – Flex_extract: Calculation of etadot"},{"text":"subroutine POSNAM(KULNAM, CDNAML) position in namelist file. Arguments Type Intent Optional Attributes Name integer, intent(in) :: KULNAM character(len=*), intent(in) :: CDNAML Called by proc~~posnam~~CalledByGraph proc~posnam POSNAM program~calc_etadot calc_etadot program~calc_etadot->proc~posnam Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/posnam.html","title":"POSNAM – Flex_extract: Calculation of etadot"},{"text":"public subroutine READLATLON(filename, feld, maxl, maxb, mlevel, mpar) Uses GRIB_API proc~~readlatlon~~UsesGraph proc~readlatlon READLATLON GRIB_API GRIB_API proc~readlatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Read a field from GRIB file on lat-lon grid write( , ) 'readlatlon: ',i-1,' records read' Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) Calls proc~~readlatlon~~CallsGraph proc~readlatlon READLATLON grib_count_in_file grib_count_in_file proc~readlatlon->grib_count_in_file grib_close_file grib_close_file proc~readlatlon->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readlatlon~~CalledByGraph proc~readlatlon READLATLON program~calc_etadot calc_etadot program~calc_etadot->proc~readlatlon Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readlatlon.html","title":"READLATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine WRITELATLON(IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) Uses GRIB_API proc~~writelatlon~~UsesGraph proc~writelatlon WRITELATLON GRIB_API GRIB_API proc~writelatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) Calls proc~~writelatlon~~CallsGraph proc~writelatlon WRITELATLON grib_write grib_write proc~writelatlon->grib_write grib_set grib_set proc~writelatlon->grib_set Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/writelatlon.html","title":"WRITELATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine READSPECTRAL(filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) Uses GRIB_API proc~~readspectral~~UsesGraph proc~readspectral READSPECTRAL GRIB_API GRIB_API proc~readspectral->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. read a GRIB file in spherical harmonics write( , ) 'readspectral: ',i-1,' records read' Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1) Calls proc~~readspectral~~CallsGraph proc~readspectral READSPECTRAL grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file grib_close_file grib_close_file proc~readspectral->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readspectral~~CalledByGraph proc~readspectral READSPECTRAL program~calc_etadot calc_etadot program~calc_etadot->proc~readspectral Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readspectral.html","title":"READSPECTRAL – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPH213(CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~grph213~~CallsGraph proc~grph213 GRPH213 ind ind proc~grph213->ind proc~grphsub GRPHSUB proc~grph213->proc~grphsub Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~grph213~~CalledByGraph proc~grph213 GRPH213 program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grph213.html","title":"GRPH213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPHSUB(L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~grphsub~~CalledByGraph proc~grphsub GRPHSUB proc~grph213 GRPH213 proc~grph213->proc~grphsub program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grphsub.html","title":"GRPHSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine LGTR213(CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) DIESE ROUTINE BERECHNET DIE KFFKs CXMN Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB Contents None","tags":"","loc":"proc/lgtr213.html","title":"LGTR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOUFTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfouftr~~CallsGraph proc~rfouftr RFOUFTR wsave wsave proc~rfouftr->wsave fft99 fft99 proc~rfouftr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfouftr.html","title":"RFOUFTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGR213(CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgr213~~CallsGraph proc~phgr213 PHGR213 proc~phsym PHSYM proc~phgr213->proc~phsym Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgr213~~CalledByGraph proc~phgr213 PHGR213 program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgr213.html","title":"PHGR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYM(K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~phsym~~CalledByGraph proc~phsym PHSYM proc~phgr213 PHGR213 proc~phgr213->proc~phsym program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsym.html","title":"PHSYM – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGCUT(CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt\n Der Erde angegeben werden. Diese Routine ist langsamer als phgrph WRITE(*,*) 'Symmetrisch: ',SYM Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgcut~~CallsGraph proc~phgcut PHGCUT proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgcut~~CalledByGraph proc~phgcut PHGCUT program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgcut.html","title":"PHGCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYMCUT(J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF Calls proc~~phsymcut~~CallsGraph proc~phsymcut PHSYMCUT proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phsymcut~~CalledByGraph proc~phsymcut PHSYMCUT proc~phgcut PHGCUT proc~phgcut->proc~phsymcut program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsymcut.html","title":"PHSYMCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGPNS(CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL Calls proc~~phgpns~~CallsGraph proc~phgpns PHGPNS proc~rfourtr RFOURTR proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgpns~~CalledByGraph proc~phgpns PHGPNS proc~phgcut PHGCUT proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgpns.html","title":"PHGPNS – Flex_extract: Calculation of etadot"},{"text":"public subroutine LEGTR(CXMN, CXM, Z, MNAUF, MAUF) DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF Contents None","tags":"","loc":"proc/legtr.html","title":"LEGTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOURTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) BERECHNET DIE FOURIERSUMME MIT EINEM FFT-ALGORITHMUS Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfourtr~~CallsGraph proc~rfourtr RFOURTR fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~rfourtr~~CalledByGraph proc~rfourtr RFOURTR proc~phsymcut PHSYMCUT proc~phsymcut->proc~rfourtr proc~phgpns PHGPNS proc~phgpns->proc~rfourtr proc~phgracut PHGRACUT proc~phgracut->proc~rfourtr proc~phgcut PHGCUT proc~phgcut->proc~phsymcut proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfourtr.html","title":"RFOURTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine GAULEG(X1, X2, X, W, N) BERECHNET DIE GAUSS+SCHEN BREITEN Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N Calls proc~~gauleg~~CallsGraph proc~gauleg GAULEG dcos dcos proc~gauleg->dcos Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~gauleg~~CalledByGraph proc~gauleg GAULEG program~calc_etadot calc_etadot program~calc_etadot->proc~gauleg Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/gauleg.html","title":"GAULEG – Flex_extract: Calculation of etadot"},{"text":"public subroutine PLGNFA(LL, X, Z) PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD Z Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z Contents None","tags":"","loc":"proc/plgnfa.html","title":"PLGNFA – Flex_extract: Calculation of etadot"},{"text":"public subroutine DPLGND(MNAUF, Z, DZ) DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD DZ Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ Contents None","tags":"","loc":"proc/dplgnd.html","title":"DPLGND – Flex_extract: Calculation of etadot"},{"text":"public subroutine SPFILTER(FELDMN, MM, MMAX) Spectral Filter of Sardeshmukh and Hoskins (1984, MWR) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX Calls proc~~spfilter~~CallsGraph proc~spfilter SPFILTER float float proc~spfilter->float alog alog proc~spfilter->alog Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/spfilter.html","title":"SPFILTER – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDTOUV(XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vdtouv~~UsesGraph proc~vdtouv VDTOUV module~phtogr PHTOGR proc~vdtouv->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Berechnung der scale winds aus Vorticity und Divergenz\n uebergibt man in XMN die Divergenz, so wird der divergente Anteil des\n Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so\n erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).\n Summiert man beide, erhaelt man den gesamten Scale wind Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vdtouv.html","title":"VDTOUV – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDUVSUB(J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vduvsub~~UsesGraph proc~vduvsub VDUVSUB module~phtogr PHTOGR proc~vduvsub->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vduvsub.html","title":"VDUVSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRAD(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~phgrad~~UsesGraph proc~phgrad PHGRAD module~phtogr PHTOGR proc~phgrad->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Called by proc~~phgrad~~CalledByGraph proc~phgrad PHGRAD program~calc_etadot calc_etadot program~calc_etadot->proc~phgrad Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgrad.html","title":"PHGRAD – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRACUT(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Uses PHTOGR proc~~phgracut~~UsesGraph proc~phgracut PHGRACUT module~phtogr PHTOGR proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK Calls proc~~phgracut~~CallsGraph proc~phgracut PHGRACUT proc~rfourtr RFOURTR proc~phgracut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgracut.html","title":"PHGRACUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine CONTGL(PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Berechnung der Divergenz aus dem Windfeld (U,V)\n im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/contgl.html","title":"CONTGL – Flex_extract: Calculation of etadot"},{"text":"public subroutine OMEGA(PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) calculates $\\omega$ in the hybrid ($\\eta$-) coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK Contents None","tags":"","loc":"proc/omega.html","title":"OMEGA – Flex_extract: Calculation of etadot"},{"text":"Used by module~~rwgrib2~~UsedByGraph module~rwgrib2 RWGRIB2 program~calc_etadot calc_etadot program~calc_etadot->module~rwgrib2 Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines READLATLON WRITELATLON READSPECTRAL Subroutines public subroutine READLATLON (filename, feld, maxl, maxb, mlevel, mpar) Read a field from GRIB file on lat-lon grid Read more… Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) public subroutine WRITELATLON (IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) public subroutine READSPECTRAL (filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) read a GRIB file in spherical harmonics Read more… Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1)","tags":"","loc":"module/rwgrib2.html","title":"RWGRIB2 – Flex_extract: Calculation of etadot"},{"text":"Uses PHTOGR module~~grtoph~~UsesGraph module~grtoph GRTOPH module~phtogr PHTOGR module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Used by module~~grtoph~~UsedByGraph module~grtoph GRTOPH program~calc_etadot calc_etadot program~calc_etadot->module~grtoph Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines GRPH213 GRPHSUB LGTR213 RFOUFTR Subroutines public subroutine GRPH213 (CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine GRPHSUB (L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine LGTR213 (CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) Read more… Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB public subroutine RFOUFTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN","tags":"","loc":"module/grtoph.html","title":"GRTOPH – Flex_extract: Calculation of etadot"},{"text":"Used by module~~phtogr~~UsedByGraph module~phtogr PHTOGR proc~vduvsub VDUVSUB proc~vduvsub->module~phtogr program~calc_etadot calc_etadot program~calc_etadot->module~phtogr module~grtoph GRTOPH program~calc_etadot->module~grtoph proc~phgrad PHGRAD proc~phgrad->module~phtogr module~grtoph->module~phtogr proc~vdtouv VDTOUV proc~vdtouv->module~phtogr proc~phgracut PHGRACUT proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Variables MAXAUF Subroutines PHGR213 PHSYM PHGCUT PHSYMCUT PHGPNS LEGTR RFOURTR GAULEG PLGNFA DPLGND SPFILTER Variables Type Visibility Attributes Name Initial integer, public, parameter :: MAXAUF = 36000 Subroutines public subroutine PHGR213 (CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) DIE ROUTINE F]HRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYM (K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHGCUT (CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) DIE ROUTINE FUEHRT EINE TRANSFORMATION EINER\n FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN\n RAUM AUF KUGELKOORDINATEN DURCH. Es kann ein Teilausschnitt\n Der Erde angegeben werden. Diese Routine ist langsamer als phgrph Read more… Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYMCUT (J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF public subroutine PHGPNS (CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL public subroutine LEGTR (CXMN, CXM, Z, MNAUF, MAUF) DIESE ROUTINE BERECHNET DIE FOURIERKOEFFIZIENTEN CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF public subroutine RFOURTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Read more… Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN public subroutine GAULEG (X1, X2, X, W, N) BERECHNET DIE GAUSS+SCHEN BREITEN Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N public subroutine PLGNFA (LL, X, Z) PLGNDN BERECHNET ALLE NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD Z Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z public subroutine DPLGND (MNAUF, Z, DZ) DPLGND BERECHNET DIE ABLEITUNG DER NORMIERTEN ASSOZIIERTEN\n LEGENDREFUNKTIONEN VON P00(X) BIS PLL(X)\n UND SCHREIBT SIE IN DAS FELD DZ Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ public subroutine SPFILTER (FELDMN, MM, MMAX) Spectral Filter of Sardeshmukh and Hoskins (1984, MWR) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX","tags":"","loc":"module/phtogr.html","title":"PHTOGR – Flex_extract: Calculation of etadot"},{"text":"Implementation of the spectral transformation using reduced the Gaussian grid Used by module~~ftrafo~~UsedByGraph module~ftrafo FTRAFO program~calc_etadot calc_etadot program~calc_etadot->module~ftrafo Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines VDTOUV VDUVSUB PHGRAD PHGRACUT CONTGL OMEGA Subroutines public subroutine VDTOUV (XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Berechnung der scale winds aus Vorticity und Divergenz\n uebergibt man in XMN die Divergenz, so wird der divergente Anteil des\n Windes (XPHI=Ud,XPHI=Vd) zurueckgegeben, uebergibt man die Vorticity, so\n erhaelt man den rotationellen Wind (XLAM=Vrot,XPHI=-Urot).\n Summiert man beide, erhaelt man den gesamten Scale wind Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine VDUVSUB (J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRAD (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRACUT (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Berechnung des Gradienten eines Skalars aus dem Feld des\n Skalars XMN im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK public subroutine CONTGL (PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Berechnung der Divergenz aus dem Windfeld (U,V)\n im Phasenraum. Zurueckgegeben werden die Felder der\n Komponenten des horizontalen Gradienten XLAM,XPHI auf dem Gauss'schen Gitter. Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK public subroutine OMEGA (PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) calculates $\\omega$ in the hybrid ($\\eta$-) coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK","tags":"","loc":"module/ftrafo.html","title":"FTRAFO – Flex_extract: Calculation of etadot"},{"text":"Uses PHTOGR GRTOPH FTRAFO RWGRIB2 GRIB_API program~~calc_etadot~~UsesGraph program~calc_etadot calc_etadot module~phtogr PHTOGR program~calc_etadot->module~phtogr module~rwgrib2 RWGRIB2 program~calc_etadot->module~rwgrib2 module~ftrafo FTRAFO program~calc_etadot->module~ftrafo module~grtoph GRTOPH program~calc_etadot->module~grtoph GRIB_API GRIB_API program~calc_etadot->GRIB_API module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Prepare input data for FLEXPART, esp. vertical velocity as \n etadot or etadot * dp/deta author: L. Haimberger\n date:   03/2010\n version: V4.0 Program calc_etadot Prepares input data for POP model meteorological preprocessor Calculation of etapoint on a regular \\lambda-\\phi grid and writing U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, \n EWSS,NSSS to an output file (input and output in GRIB 1 or 2 format). etapoint is defined as the total time derivative of \n  ECMWF vertical coordinate eta multiplied by the derivative\n  of pressure with respect to eta: \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} Version history and authors: 04/1994: Leopold Haimberger, Gerhard Wotawa 2003-05-11: Alexander Beck 12/2006: L. Haimberger V2.0,\n           handle arbitrary regular grids and T799 resolution data 03/2010: L. Haimberger V4.0,\n           handle GRIB edition 2 fields and T1279 resolution data 04-06/2019: Petra Seibert, \n            beautify code and add FORD documentation # Input required: UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION\n\n 11    fort.11   T,U,V           regular lambda phi grid\n 12    fort.12   D               regular lambda phi grid   \n 13    fort.13   LNSP            spherical harmonics\n 14    fort.14   SD,MSL,TCC,10U,                                \n                 10V,2T,2D       regular lambda phi grid     \n 16    fort.16   LSP,CP,SSHF,         \n                 SSR,EWSS,NSSS   regular lambda phi grid\n 17    fort.17   Q               regular lambda phi grid Output produced: UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION\n\n15    fort.15   `U,V,ETA,T,PS,                                  \n                `Q,SD,MSL,TCC,`                                  \n                `10U,10V,2T,2D,`  regular lambda phi grid         \n                `LSP,CP,SSHF,`                                   \n                `SSR,EWSS,NSSS` ALLOCATE VARIABLES Initialisieren  Legendretransformation auf das LaT/LON Gitter Initialisation of fields for FFT and Legendre transformation\n to Gaussian grid and back to phase space\n  read LNSP in SH\n  read u,v in SH\n  Transformieren des Windes auf das Gaussgitter read DIV in SH\n Transformieren der horizontalen Divergenz auf das Gaussgitter Berechnung des Gradienten des Logarithmus des Bodendrucks auf dem Gaussgitter Berechnung der Vertikalgeschwindigkeit auf dem Gaussgitter Berechnung von Omega auf dem Gaussgitter READING OF SURFACE PRESSURE READING OF U,V READING OF LNSP on grid READING OF DIVERGENCE Initialisieren  Legendretransformation auf das LaT/LON Gitter\n Without Gaussian grid calculation Legendre Polynomials are calculated\n only for one latitude to save space CREATE FILE VERTICAL.EC NEEDED BY POP MODEL READING OF T READING OF SPECIFIC HUMIDITY WRITE MODEL LEVEL DATA TO fort.15 Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi)\n Now we are transforming back to the usual winds. Calls program~~calc_etadot~~CallsGraph program~calc_etadot calc_etadot proc~readspectral READSPECTRAL program~calc_etadot->proc~readspectral proc~phgcut PHGCUT program~calc_etadot->proc~phgcut proc~grph213 GRPH213 program~calc_etadot->proc~grph213 grib_close_file grib_close_file program~calc_etadot->grib_close_file proc~statis STATIS program~calc_etadot->proc~statis proc~phgr213 PHGR213 program~calc_etadot->proc~phgr213 proc~gauleg GAULEG program~calc_etadot->proc~gauleg grib_open_file grib_open_file program~calc_etadot->grib_open_file set99 set99 program~calc_etadot->set99 proc~posnam POSNAM program~calc_etadot->proc~posnam proc~readlatlon READLATLON program~calc_etadot->proc~readlatlon proc~phgrad PHGRAD program~calc_etadot->proc~phgrad proc~readspectral->grib_close_file grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~grphsub GRPHSUB proc~grph213->proc~grphsub ind ind proc~grph213->ind proc~phsym PHSYM proc~phgr213->proc~phsym dcos dcos proc~gauleg->dcos proc~readlatlon->grib_close_file proc~readlatlon->grib_count_in_file proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents Variables LNPS Z T UV UV2 QA OM OMR DIV ETA ETAR DPSDL DPSDM PS DPSDT SURF FLUX OROLSM WSAVE H SINL COSL WSAVE2 BREITE GBREITE AK BK pv X1 X2 RMS MW SIG LAM CUA CVA P PP P2 XMN HILFUV LNPMN LNPMN2 LNPMN3 WEIGHT UGVG DG ETAG GWSAVE PSG HILF MLAT MPSURF MPFLUX MPORO MPAR GIFAX PI COSB DAK DBK P00 URLAR8 JMIN1 LLLAR8 MAXBMIN1 PIR8 DCOSB I J K L IERR M LTEST MK NGI NGJ MFLUX MSURF MORO LUNIT LUNIT2 MAXL MAXB MLEVEL LEVOUT LEVMIN LEVMAX MOMEGA MOMEGADIFF MGAUSS MSMOOTH MNAUF META METADIFF MDPDETA METAPAR RLO0 RLO1 RLA0 RLA1 MLEVELIST MAUF MANF IFAX IGRIB iret ogrib FILENAME Variables Type Attributes Name Initial real, ALLOCATABLE, DIMENSION (:,:) :: LNPS real, ALLOCATABLE, DIMENSION (:,:) :: Z real, ALLOCATABLE, DIMENSION (:,:,:) :: T real, ALLOCATABLE, DIMENSION (:,:,:) :: UV real, ALLOCATABLE, DIMENSION (:,:,:) :: UV2 real, ALLOCATABLE, DIMENSION (:,:,:) :: QA real, ALLOCATABLE, DIMENSION (:,:,:) :: OM real, ALLOCATABLE, DIMENSION (:,:,:) :: OMR real, ALLOCATABLE, DIMENSION (:,:,:) :: DIV real, ALLOCATABLE, DIMENSION (:,:,:) :: ETA real, ALLOCATABLE, DIMENSION (:,:,:) :: ETAR real, ALLOCATABLE, DIMENSION (:,:) :: DPSDL real, ALLOCATABLE, DIMENSION (:,:) :: DPSDM real, ALLOCATABLE, DIMENSION (:,:,:) :: PS real, ALLOCATABLE, DIMENSION (:,:,:) :: DPSDT real, ALLOCATABLE, DIMENSION (:,:,:) :: SURF real, ALLOCATABLE, DIMENSION (:,:,:) :: FLUX real, ALLOCATABLE, DIMENSION (:,:,:) :: OROLSM real, ALLOCATABLE, DIMENSION (:) :: WSAVE real, ALLOCATABLE, DIMENSION (:) :: H real, ALLOCATABLE, DIMENSION (:) :: SINL real, ALLOCATABLE, DIMENSION (:) :: COSL real, ALLOCATABLE, DIMENSION (:) :: WSAVE2 real, ALLOCATABLE, DIMENSION (:) :: BREITE real, ALLOCATABLE, DIMENSION (:) :: GBREITE real, ALLOCATABLE, DIMENSION (:) :: AK real, ALLOCATABLE, DIMENSION (:) :: BK real, ALLOCATABLE, DIMENSION (:) :: pv real :: X1 real :: X2 real :: RMS real :: MW real :: SIG real :: LAM real, ALLOCATABLE :: CUA (:,:,:) real, ALLOCATABLE :: CVA (:,:,:) real, ALLOCATABLE, DIMENSION (:,:) :: P real, ALLOCATABLE, DIMENSION (:,:) :: PP real, ALLOCATABLE, DIMENSION (:,:) :: P2 real, ALLOCATABLE, DIMENSION (:,:) :: XMN real, ALLOCATABLE, DIMENSION (:,:) :: HILFUV real, ALLOCATABLE, DIMENSION (:) :: LNPMN real, ALLOCATABLE, DIMENSION (:) :: LNPMN2 real, ALLOCATABLE, DIMENSION (:) :: LNPMN3 real, ALLOCATABLE, DIMENSION (:) :: WEIGHT real, ALLOCATABLE, DIMENSION (:,:) :: UGVG real, ALLOCATABLE, DIMENSION (:,:) :: DG real, ALLOCATABLE, DIMENSION (:,:) :: ETAG real, ALLOCATABLE, DIMENSION (:,:) :: GWSAVE real, ALLOCATABLE, DIMENSION (:) :: PSG real, ALLOCATABLE, DIMENSION (:) :: HILF integer, ALLOCATABLE, DIMENSION (:) :: MLAT integer, ALLOCATABLE, DIMENSION (:) :: MPSURF integer, ALLOCATABLE, DIMENSION (:) :: MPFLUX integer, ALLOCATABLE, DIMENSION (:) :: MPORO integer, ALLOCATABLE, DIMENSION (:) :: MPAR integer, ALLOCATABLE :: GIFAX (:,:) real :: PI real :: COSB real :: DAK real :: DBK real :: P00 real :: URLAR8 real :: JMIN1 real :: LLLAR8 real :: MAXBMIN1 real :: PIR8 real :: DCOSB integer :: I integer :: J integer :: K integer :: L integer :: IERR integer :: M integer :: LTEST integer :: MK integer :: NGI integer :: NGJ integer :: MFLUX integer :: MSURF integer :: MORO integer :: LUNIT integer :: LUNIT2 integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: LEVOUT integer :: LEVMIN integer :: LEVMAX integer :: MOMEGA integer :: MOMEGADIFF integer :: MGAUSS integer :: MSMOOTH integer :: MNAUF integer :: META integer :: METADIFF integer :: MDPDETA integer :: METAPAR real :: RLO0 real :: RLO1 real :: RLA0 real :: RLA1 character(len=300) :: MLEVELIST integer :: MAUF integer :: MANF integer :: IFAX (10) integer :: IGRIB (1) integer :: iret integer :: ogrib character(len=80) :: FILENAME","tags":"","loc":"program/calc_etadot.html","title":"calc_etadot – Flex_extract: Calculation of etadot"}]}
\ No newline at end of file
+var tipuesearch = {"pages":[{"text":"Flex_extract: Calculation of etadot Developer Info Leopold Haimberger 1 1 Univ. of Vienna, Dept. of Meteorology & Geophysics","tags":"home","loc":"index.html","title":" Flex_extract: Calculation of etadot "},{"text":"This file depends on sourcefile~~calc_etadot.f90~~EfferentGraph sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Programs calc_etadot Functions IA Subroutines STATIS Source Code calc_etadot.f90 Source Code PROGRAM calc_etadot !! Prepare input data for FLEXPART, esp. vertical velocity as !! etadot or etadot * dp/deta !*---------------------------------------------------------------- ! author: L. Haimberger ! date:   03/2010 ! version: V4.0 ! !## Program calc_etadot ! ! **Prepares input data for POP model meteorological preprocessor** ! !----------------------------------------------------------------- ! ! Calculation of etapoint on a regular \\lambda-\\phi grid and writing ! `U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, ! EWSS,NSSS` ! to an output file (input and output in GRIB 1 or 2 format). !  etapoint is defined as the total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} ! !### Version history and authors: ! - 04/1994: Leopold Haimberger, Gerhard Wotawa ! ! - 2003-05-11: Alexander Beck ! ! - 12/2006: L. Haimberger V2.0, !           handle arbitrary regular grids and T799 resolution data ! ! - 03/2010: L. Haimberger V4.0, !           handle GRIB edition 2 fields and T1279 resolution data ! - 04-06/2019: Petra Seibert, !            beautify code and add FORD documentation ! - 06/2020: Petra Seibert, translate some comments into English !            comment out writing of VERTICAL.EC ! !----------------------------------------------------------------- ! !## Input required: ! !     UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION ! !     11    fort.11   T,U,V           regular lat-lon grid !     12    fort.12   D               regular lat-lon grid !     13    fort.13   LNSP            spherical harmonics !     14    fort.14   SD,MSL,TCC,10U, !                     10V,2T,2D       regular lat-lon grid !     16    fort.16   LSP,CP,SSHF, !                     SSR,EWSS,NSSS   regular lat-lon grid !     17    fort.17   Q               regular lat-lon grid ! !------------------------------------------------------------------ ! !### Output produced: ! !    UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION ! !    15    fort.15   `U,V,ETA,T,PS, !                    `Q,SD,MSL,TCC,` !                    `10U,10V,2T,2D,`  regular lat-lon grid !                    `LSP,CP,SSHF,` !                    `SSR,EWSS,NSSS` ! !------------------------------------------------------------------ ! Original version: ! Prepares input data for POP model meteorological preprocessor USE PHTOGR USE GRTOPH USE FTRAFO USE RWGRIB2 USE GRIB_API IMPLICIT NONE REAL , ALLOCATABLE , DIMENSION (:,:) :: LNPS REAL , ALLOCATABLE , DIMENSION (:,:) :: Z REAL , ALLOCATABLE , DIMENSION (:,:,:) :: T , UV , UV2 REAL , ALLOCATABLE , DIMENSION (:,:,:) :: QA , OM , OMR REAL , ALLOCATABLE , DIMENSION (:,:,:) :: DIV , ETA , ETAR REAL , ALLOCATABLE , DIMENSION (:,:) :: DPSDL , DPSDM REAL , ALLOCATABLE , DIMENSION (:,:,:) :: PS , DPSDT REAL , ALLOCATABLE , DIMENSION (:,:,:) :: SURF , FLUX , OROLSM REAL , ALLOCATABLE , DIMENSION (:) :: WSAVE , H , SINL , COSL , WSAVE2 REAL , ALLOCATABLE , DIMENSION (:) :: BREITE , GBREITE , AK , BK , pv ! Arrays for Gaussian grid calculations REAL :: X1 , X2 , RMS , MW , SIG , LAM REAL , ALLOCATABLE :: CUA (:,:,:), CVA (:,:,:) REAL , ALLOCATABLE , DIMENSION (:,:) :: P , PP , P2 REAL , ALLOCATABLE , DIMENSION (:,:) :: XMN , HILFUV REAL , ALLOCATABLE , DIMENSION (:) :: LNPMN , LNPMN2 , LNPMN3 REAL , ALLOCATABLE , DIMENSION (:) :: WEIGHT REAL , ALLOCATABLE , DIMENSION (:,:) :: UGVG REAL , ALLOCATABLE , DIMENSION (:,:) :: DG , ETAG REAL , ALLOCATABLE , DIMENSION (:,:) :: GWSAVE REAL , ALLOCATABLE , DIMENSION (:) :: PSG , HILF ! end arrays for Gaussian grid calculations INTEGER , ALLOCATABLE , DIMENSION (:) :: MLAT , MPSURF , MPFLUX , MPORO , MPAR INTEGER , ALLOCATABLE :: GIFAX (:,:) REAL PI , COSB , DAK , DBK , P00 REAL URLAR8 , JMIN1 , LLLAR8 , MAXBMIN1 , PIR8 , DCOSB INTEGER I , J , K , L , IERR , M , LTEST , MK , NGI , NGJ INTEGER MFLUX , MSURF , MORO INTEGER LUNIT , LUNIT2 INTEGER MAXL , MAXB , MLEVEL , LEVOUT , LEVMIN , LEVMAX INTEGER MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , MNAUF , META , METADIFF INTEGER MDPDETA , METAPAR REAL RLO0 , RLO1 , RLA0 , RLA1 CHARACTER * 300 MLEVELIST INTEGER MAUF , MANF , IFAX ( 10 ) INTEGER IGRIB ( 1 ), iret , ogrib CHARACTER * 80 FILENAME NAMELIST / NAMGEN / & MAXL , MAXB , & MLEVEL , MLEVELIST , MNAUF , METAPAR , & RLO0 , RLO1 , RLA0 , RLA1 , & MOMEGA , MOMEGADIFF , MGAUSS , MSMOOTH , META , METADIFF ,& MDPDETA LTEST = 1 CALL POSNAM ( 4 , 'NAMGEN' ) READ ( 4 , NAMGEN ) MAUF = INT ( 36 0. * ( REAL ( MAXL ) - 1. ) / ( RLO1 - RLO0 ) + 0.0001 ) !      PRINT*, MAUF MANF = INT ( REAL ( MAUF ) / 36 0. * ( 36 0. + RLO0 ) + 1.0001 ) IF ( MANF . gt . MAUF ) MANF = MANF - MAUF !------------------------------------------------------------------ !! ALLOCATE VARIABLES !------------------------------------------------------------------ ALLOCATE ( LNPS ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 1 )) ALLOCATE ( H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 )) ALLOCATE ( OM ( MAXL , MAXB , MLEVEL )) ALLOCATE ( ETA ( MAXL , MAXB , MLEVEL )) ALLOCATE ( PS ( MAXL , MAXB , 1 ), DPSDT ( MAXL , MAXB , 1 )) ALLOCATE ( WSAVE ( 4 * MAUF + 15 ), WSAVE2 ( 4 * MAUF + 15 )) ALLOCATE ( BREITE ( MAXB ), AK ( MLEVEL + 1 ), BK ( MLEVEL + 1 ), PV ( 2 * MLEVEL + 2 )) ALLOCATE ( MPAR ( 2 )) ALLOCATE ( COSL ( MAXL ), SINL ( MAXL )) ALLOCATE ( CUA ( 2 , 4 , MLEVEL ), CVA ( 2 , 4 , MLEVEL )) !------------------------------------------------------------------ ! GAUSS STUFF !------------------------------------------------------------------ IF ( MGAUSS . EQ . 1 ) THEN LUNIT = 0 FILENAME = 'fort.18' CALL GRIB_OPEN_FILE ( LUNIT , TRIM ( FILENAME ), 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT , IGRIB ( 1 ), IRET ) ! we can close the file CALL GRIB_CLOSE_FILE ( LUNIT ) !      call grib_get(igrib(1),'gridType', j) NGJ = MNAUF + 1 ALLOCATE ( GWSAVE ( 8 * NGJ + 15 , NGJ / 2 )) ALLOCATE ( GIFAX ( 10 , NGJ )) ALLOCATE ( GBREITE ( NGJ ), WEIGHT ( NGJ )) ALLOCATE ( MLAT ( NGJ )) ALLOCATE ( P ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , NGJ / 2 )) ALLOCATE ( PP ( NGJ / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 )) ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB )) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfPointsAlongAMeridian' , NGJ ) !   get as a integer call grib_get ( igrib ( 1 ), 'pl' , MLAT ) NGI = SUM ( MLAT ) CALL GRIB_GET ( IGRIB ( 1 ), 'numberOfVerticalCoordinateValues' , MK ) IF ( MK / 2 - 1 . NE . MLEVEL ) THEN WRITE ( * , * ) 'FATAL: Number of model levels' , mk , & ' does not agree with' , MLEVEL , ' in namelist' STOP END IF call grib_get ( igrib ( 1 ), 'pv' , pv ) AK = PV ( 1 : 1 + MLEVEL ) BK = PV ( 2 + MLEVEL : 2 * MLEVEL + 2 ) ALLOCATE ( LNPMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( LNPMN2 ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 )) ALLOCATE ( UGVG ( NGI , 2 * MLEVEL ), HILFUV ( 2 * MAXL , 2 )) ALLOCATE ( DPSDL ( NGI , 1 ), DPSDM ( NGI , 1 )) ALLOCATE ( PSG ( NGI ), HILF ( NGI )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL )) !      ALLOCATE (UV2(MAXL, MAXB, 2*MLEVEL)) ALLOCATE ( XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , 2 * MLEVEL )) ALLOCATE ( DG ( NGI , MLEVEL ), ETAG ( NGI , MLEVEL )) !! Initialise  Legendre transformation on the lat-lon grid PI = ACOS ( - 1.D0 ) !$OMP PARALLEL DO DO 20 J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , J )) 20 CONTINUE !$OMP END PARALLEL DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) !* Initialisation of fields for FFT and Legendre transformation ! to Gaussian grid and back to phase space X1 =- 1.D0 X2 = 1.D0 CALL GAULEG ( X1 , X2 , GBREITE , WEIGHT , NGJ ) !$OMP PARALLEL DO PRIVATE(M) DO J = 1 , NGJ / 2 CALL PLGNFA ( MNAUF , GBREITE ( J ), P (:, J )) DO M = 0 ,( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 PP ( J , M ) = P ( M , J ) END DO END DO !$OMP END PARALLEL DO !       MPAR(1)=152 FILENAME = 'fort.12' !!  read LNSP in SH CALL READSPECTRAL ( FILENAME , LNPMN , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) CALL SET99 ( WSAVE , IFAX , mauf ) CALL PHGCUT ( LNPMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , EXP ( PS ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG DO J = 1 , NGJ / 2 CALL SET99 ( GWSAVE ( 1 , J ), GIFAX ( 1 , J ), MLAT ( J )) END DO CALL PHGR213 ( LNPMN , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) PSG = HILF CALL GRPH213 ( LNPMN2 , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL PHGR213 ( LNPMN2 , HILF , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 1 ) HILF = exp ( PSG ) - exp ( HILF ) CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS ratio of PS: ' , RMS , MW , SIG PSG = EXP ( PSG ) HILF = PSG CALL STATIS ( NGI , 1 , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG: ' , RMS , MW , SIG 111 FILENAME = 'fort.10' !!  read u,v in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , 2 * MLEVEL , MLEVEL ,( / 131 , 132 / ), AK , BK ) !!  Transforming the wind to the Gaussian grid CALL PHGR213 ( XMN , UGVG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , 2 * MLEVEL ) DO K = 1 , MLEVEL ! North Pole CALL JSPPOLE ( XMN (:, K ), 1 , MNAUF ,. TRUE ., CUA (:,:, K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), 1 , MNAUF ,. TRUE ., CVA (:,:, K )) ! South Pole CALL JSPPOLE ( XMN (:, K ), - 1 , MNAUF ,. TRUE ., CUA (:, 3 : 4 , K )) CALL JSPPOLE ( XMN (:, MLEVEL + K ), - 1 , MNAUF ,. TRUE ., CVA (:, 3 : 4 , K )) END DO DO K = 1 , 2 * MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , UV , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 2 * MLEVEL ) 112 FILENAME = 'fort.13' !!  read DIV in SH CALL READSPECTRAL ( FILENAME , XMN , MNAUF , MLEVEL , MLEVEL ,( / 155 / ), AK , BK ) !! Transform horizontal divergence to the Gaussian grid CALL PHGR213 ( XMN , DG , GWSAVE , GIFAX , P , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , DG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS DG-PS: ' , RMS , MW , SIG !! Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid CALL PHGRAD ( LNPMN , DPSDL , DPSDM , GWSAVE , GIFAX , P , H , MLAT , MNAUF , NGI , NGJ , 1 ) !! Calculation of the vertical velocity on the Gaussian grid CALL CONTGL ( HILF , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) ! note that HILF is ps on input and  dpsdt*ps on output CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETAG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETAG-PS: ' , RMS , MW , SIG DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , ETA , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) CALL STATIS ( MAXL , MAXB , 1 , ETA , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS ETA-PS: ' , RMS , MW , SIG CALL GRPH213 ( XMN , HILF , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , HILF , RMS , MW , SIG ) WRITE ( * , '(A,T20,3p,3F12.4)' ) 'STATISTICS HILF-PS: ' , RMS , MW , SIG IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, 1 ), MNAUF , MSMOOTH ) CALL PHGCUT ( XMN , DPSDT , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , DPSDT , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS DPSDT: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN !! Calculation of omega on the Gaussian grid CALL OMEGA ( PSG , DPSDL , DPSDM , DG , UGVG (:, 1 ), UGVG (:, MLEVEL + 1 ), & GBREITE , ETAG , MLAT , AK , BK , NGI , NGJ , MLEVEL ) CALL GRPH213 ( XMN , ETAG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , MLEVEL ) DO K = 1 , MLEVEL IF ( MSMOOTH . ne . 0 ) CALL SPFILTER ( XMN (:, K ), MNAUF , MSMOOTH ) END DO CALL PHGCUT ( XMN , OM , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END IF ! MOMEGA CALL GRPH213 ( XMN , PSG , GWSAVE , GIFAX , PP , WEIGHT , MLAT , MNAUF , NGI , NGJ , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PSG , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PSG-PS: ' , RMS , MW , SIG CALL PHGCUT ( XMN , PS , WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , MAXB , 1 ) CALL STATIS ( MAXL , MAXB , 1 , PS , RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS PS: ' , RMS , MW , SIG 114 DEALLOCATE ( HILF , PSG , DPSDL , DPSDM , ETAG , DG , LNPMN ) !      ALLOCATE (UV(MAXL, MAXB, 2*MLEVEL)) ! CALL GRPH213(XMN,UGVG,GWSAVE,GIFAX,PP,WEIGHT,MLAT, !     *MNAUF,NGI,NGJ,2*MLEVEL) !        DO K=1,2*MLEVEL !          IF (MSMOOTH .ne. 0) CALL SPFILTER(XMN(:,K),MNAUF,MSMOOTH) !        END DO !        CALL PHGCUT(XMN,UV,WSAVE,IFAX,Z, !     *MNAUF,MNAUF,MAUF,MANF,MAXL,MAXB,2*MLEVEL) DEALLOCATE ( PP , P , UGVG , MLAT , GBREITE , WEIGHT , GWSAVE , XMN ) !        CALL ETAGAUSS(Z,WSAVE !     *,BREITE,UV,ETA,OM,PS, !     *MAUF,MAXB,MAXL,MANF,MNAUF,MLEVEL,MSMOOTH) ELSE !----------------------------------------------------------------- !     READING OF PREPARED METEOROLOGICAL FIELDS ! !     THE FOLLOWING FIELDS ARE EXPECTED: ! !     UNIT 11: T,U,V        (REGULAR GRID) !     UNIT 17: Q            (REGULAR GRID) !     UNIT 13: D            (REGULAR GRID) !     UNIT 12: LNSP         (SPHERICAL HARMONICS) !     UNIT 14: SURFACE DATA (REGULAR GRID) !     UNIT 16: FLUX DATA    (REGULAR GRID) !------------------------------------------------------------------ ALLOCATE ( MLAT ( MAXB )) MLAT = MAXL ALLOCATE ( Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , 1 )) ALLOCATE ( DPSDL ( MAXL , MAXB ), DPSDM ( MAXL , MAXB )) ALLOCATE ( UV ( MAXL , MAXB , 2 * MLEVEL ), DIV ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF SURFACE PRESSURE !------------------------------------------------------------------ FILENAME = 'fort.12' CALL READSPECTRAL ( FILENAME , LNPS , MNAUF , 1 , MLEVEL ,( / 152 / ), AK , BK ) !------------------------------------------------------------------ !! READING OF U,V !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.10' CALL READLATLON ( FILENAME , UV , MAXL , MAXB , 2 * MLEVEL ,( / 131 , 132 / )) PI = ACOS ( - 1.D0 ) DO J = 1 , MAXB BREITE ( J ) = SIN (( RLA1 - ( J - 1.D0 ) * ( RLA1 - RLA0 ) / ( MAXB - 1 )) * PI / 18 0.D0 ) END DO ! Avoid possible Pole problem !      IF (RLA0 .EQ. -90.0) BREITE(MAXB)=sin(-89.99*PI/180.d0) !      IF (RLA1 .EQ. 90.0)  BREITE(1)=sin(89.99*PI/180.d0) DO K = 1 , 2 * MLEVEL DO J = 1 , MAXB COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) / 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) * COSB END IF END DO END DO !------------------------------------------------------------------ !! READING OF LNSP on grid !------------------------------------------------------------------ ! For debugging only !      FILENAME='LNSPG_G.20060330.600' !      INQUIRE(FILE=FILENAME,EXIST=EX) !      CALL READLATLON(FILENAME,QA, !     *MAXL,MAXB,1,1,(/152/)) !------------------------------------------------------------------ !! READING OF DIVERGENCE !------------------------------------------------------------------ IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN FILENAME = 'fort.13' CALL READLATLON ( FILENAME , DIV , MAXL , MAXB , MLEVEL ,( / 155 / )) END IF !------------------------------------------------------------------ ! !  Calculation of etapoint --> total time derivative of !  ECMWF vertical coordinate eta multiplied by the derivative !  of pressure with respect to eta: !  \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} !------------------------------------------------------------------ !------------------------------------------------------------------ !* Initialise Legendre transformation on the lat-lon grid. !! Without Gaussian grid calculation, !! Legendre polynomials are calculated only for one latitude, to save space DO J = 1 , MAXB CALL PLGNFA ( MNAUF , BREITE ( J ), Z ( 0 , 1 )) CALL PHGCUT ( LNPS , PS (:, J , 1 ), WSAVE , IFAX , Z , MNAUF , MNAUF , MAUF , MANF , MAXL , 1 , 1 ) IF ( META . EQ . 0 . OR . METADIFF . EQ . 1 ) THEN CALL PHGRACUT ( LNPS , DPSDL (:, J ), DPSDM (:, J ), WSAVE , IFAX , Z , H , MAUF , & MNAUF , MAXL , 1 , MANF , 1 ) END IF END DO PS = EXP ( PS ) ! For debugging only CALL STATIS ( MAXL , MAXB , 1 , PS (:,:, 1 ), RMS , MW , SIG ) WRITE ( * , '(A,T20,3F12.4)' ) 'STATISTICS: ' , RMS , MW , SIG IF ( MOMEGADIFF . ne . 0 ) THEN CALL OMEGA ( PS , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , OM , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF IF ( META . EQ . 0 . OR . METADIFF . ne . 0 ) THEN DPSDT = PS CALL CONTGL ( DPSDT , DPSDL , DPSDM , DIV , UV (:,:, 1 ), UV (:,:, MLEVEL + 1 ), & BREITE , ETA , MLAT , AK , BK , MAXL * MAXB , MAXB , MLEVEL ) END IF END IF ! MGAUSS ! CREATE FILE VERTICAL.EC NEEDED BY POP MODEL ! 2020-06-25 Commented out by PS - not needed anymore !  OPEN(21,FILE='VERTICAL.EC') !  WRITE(21,'(A)') !  WRITE(21,'(A)') 'VERTICAL DISCRETIZATION OF POP MODEL' !  WRITE(21,'(A)') !  write(21,'(i3,a)') MLEVEL,'   number of layers' !  WRITE(21,'(A)') !  WRITE(21,'(A)') '* A(NLEV+1)' !  WRITE(21,'(A)') !  DO 205 I=1,MLEVEL+1 !205 WRITE(21,'(F18.12)') AK(I) !  WRITE(21,'(A)') !  WRITE(21,'(A)') '* B(NLEV+1)' !  WRITE(21,'(A)') !  DO 210 I=1,MLEVEL+1 !210 WRITE(21,'(F18.12)') BK(I) !  CLOSE(21) !------------------------------------------------------------------ ! READING OF OMEGA !------------------------------------------------------------------ IF ( MOMEGA . NE . 0 ) THEN ALLOCATE ( OMR ( MAXL , MAXB , MLEVEL )) FILENAME = 'fort.19' CALL READLATLON ( FILENAME , OMR , MAXL , MAXB , MLEVEL ,( / 135 / )) IF ( MOMEGADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     OMEGA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , OM (:,:, K ) - OMR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'OMEGA DIFF: ' , K , RMS , MW , SIG END DO END IF END IF !------------------------------------------------------------------ ! READING OF ETA !------------------------------------------------------------------ IF ( META . NE . 0 ) THEN ALLOCATE ( ETAR ( MAXL , MAXB , MLEVEL )) P00 = 10132 5. FILENAME = 'fort.21' CALL READLATLON ( FILENAME , ETAR , MAXL , MAXB , MLEVEL ,( / 77 / )) IF ( MDPDETA . EQ . 1 ) THEN DO K = 1 , MLEVEL DAK = AK ( K + 1 ) - AK ( K ) DBK = BK ( K + 1 ) - BK ( K ) DO J = 1 , MAXB DO I = 1 , MAXL ETAR ( I , J , K ) = 2 * ETAR ( I , J , K ) * PS ( I , J , 1 ) * ( DAK / PS ( I , J , 1 ) + DBK ) / & ( DAK / P00 + DBK ) IF ( K . GT . 1 ) ETAR ( I , J , K ) = ETAR ( I , J , K ) - ETAR ( I , J , K - 1 ) END DO END DO END DO END IF IF ( METADIFF . NE . 0 ) THEN DO K = 1 , MLEVEL CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '       ETA: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) '     ETAR: ' , K , RMS , MW , SIG CALL STATIS ( MAXL , MAXB , 1 , ETA (:,:, K ) - ETAR (:,:, K ), RMS , MW , SIG ) WRITE ( * , '(A12,I3,3F12.4)' ) 'ETA DIFF: ' , K , RMS , MW , SIG END DO DO K = 1 , MLEVEL WRITE ( * , '(I3,2F12.4)' ) K , ETA ( 1 , MAXB / 2 , K ), ETAR ( 1 , MAXB / 2 , K ) END DO ELSE ETA = ETAR END IF END IF ALLOCATE ( T ( MAXL , MAXB , MLEVEL )) ALLOCATE ( QA ( MAXL , MAXB , MLEVEL )) !------------------------------------------------------------------ !! READING OF T !------------------------------------------------------------------ ! OPENING OF UNBLOCKED GRIB FILE FILENAME = 'fort.11' CALL READLATLON ( FILENAME , T , MAXL , MAXB , MLEVEL ,( / 130 / )) !------------------------------------------------------------------ !! READING OF SPECIFIC HUMIDITY !------------------------------------------------------------------ FILENAME = 'fort.17' CALL READLATLON ( FILENAME , QA , MAXL , MAXB , MLEVEL ,( / 133 / )) !------------------------------------------------------------------ !                     TEST READING OF UV from MARS (debug only) !------------------------------------------------------------------ !      FILENAME='fort.22' !      CALL READLATLON(FILENAME,UV2,MAXL,MAXB,2*MLEVEL,2,(/131,132/)) !------------------------------------------------------------------ !! WRITE MODEL LEVEL DATA TO fort.15 !------------------------------------------------------------------ !     Calculation of etadot in CONTGL needed scaled winds (ucosphi,vcosphi) !     Now we are transforming back to the usual winds. DO K = 1 , MLEVEL DO J = 2 , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END DO ! special treatment for poles, if necessary. DO J = 1 , MAXB , MAXB - 1 COSB = SQRT ( 1.0 - ( BREITE ( J )) * ( BREITE ( J ))) IF ( 1.0 - BREITE ( J ) * BREITE ( J ) . GT . 0 . OR . MGAUSS . NE . 1 ) THEN IF ( RLA0 . EQ . - 9 0.0 . AND . J . EQ . MAXB . OR . & RLA1 . EQ . 9 0.0 . AND . J . EQ . 1 ) THEN UV (:, J , K ) = UV (:, J , K ) * 1.D6 UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) * 1.D6 ELSE UV (:, J , K ) = UV (:, J , K ) / COSB UV (:, J , MLEVEL + K ) = UV (:, J , MLEVEL + K ) / COSB END IF ELSE HILFUV ( 5 : MAXL ,:) = 0. HILFUV ( 1 : 2 ,:) = 0. IF ( J . EQ . MAXB ) THEN ! Suedpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 4 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 4 , K ) ELSE ! Nordpol HILFUV ( 3 : 4 , 1 ) = CUA (:, 2 , K ) HILFUV ( 3 : 4 , 2 ) = CVA (:, 2 , K ) END IF CALL RFOURTR ( HILFUV (:, 1 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , K ) = HILFUV ( MANF + I , 1 ) ELSE UV ( I + 1 , J , K ) = HILFUV ( MANF - MAXL + I , 1 ) END IF END DO CALL RFOURTR ( HILFUV (:, 2 ), WSAVE , IFAX , MAXL / 2 - 1 , MAXL , - 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAXL ) THEN UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF + I , 2 ) ELSE UV ( I + 1 , J , MLEVEL + K ) = HILFUV ( MANF - MAXL + I , 2 ) END IF END DO end if END DO END DO ! open output file call grib_open_file ( LUNIT , 'fort.15' , 'w' ) ! we use temperature on lat/lon on model levels as template for model level data LUNIT2 = 0 CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.11' , 'R' ) CALL GRIB_NEW_FROM_FILE ( LUNIT2 , IGRIB ( 1 ), IRET ) CALL GRIB_CLOSE_FILE ( LUNIT2 ) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 131 / )) CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , UV (:,:, MLEVEL + 1 ), MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 132 / )) IF ( MDPDETA . ne . 1 . AND . MGAUSS . EQ . 0 . and . META . eq . 1 ) THEN CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 77 / )) ELSE CALL WRITELATLON & ( LUNIT , IGRIB ( 1 ), OGRIB , ETA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / METAPAR / )) END IF CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , T , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 130 / )) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , PS , MAXL , MAXB , 1 , '1' , 1 ,( / 134 / )) CALL GRIB_SET ( IGRIB ( 1 ), \"levelType\" , \"ml\" ) CALL GRIB_SET ( IGRIB ( 1 ), \"typeOfLevel\" , \"hybrid\" ) CALL WRITELATLON ( LUNIT , IGRIB ( 1 ), OGRIB , QA , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 133 / )) IF ( MOMEGA . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.25' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OMR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) IF ( MOMEGADIFF . EQ . 1 ) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = OM - OMR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) END IF END IF IF ( META . EQ . 1 . AND . METADIFF . EQ . 1 ) THEN CALL GRIB_OPEN_FILE ( LUNIT2 , 'fort.26' , 'w' ) CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , ETAR , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 135 / )) !        IF (MOMEGADIFF .EQ. 1) THEN CALL WRITELATLON ( LUNIT2 , IGRIB ( 1 ), OGRIB , DPSDT , MAXL , MAXB , 1 , '1' , 1 ,( / 158 / )) OM = ETA - ETAR CALL WRITELATLON & ( LUNIT2 , IGRIB ( 1 ), OGRIB , OM , MAXL , MAXB , MLEVEL , MLEVELIST , 1 ,( / 001 / )) CALL GRIB_CLOSE_FILE ( LUNIT2 ) !        END IF END IF CALL GRIB_CLOSE_FILE ( LUNIT ) 2000 STOP 'SUCCESSFULLY FINISHED calc_etadot: CONGRATULATIONS' 3000 STOP 'ROUTINE calc_etadot: ERROR' 9999 stop 'ROUTINE calc_etadot: ERROR' END !------------------------------------------------------------------ INTEGER FUNCTION IA ( FIELD1 , NI , NJ , NK , G ) !------------------------------------------------------------------ !! Calculate something that is roughly log10( maxval(field1)/g ) [PS] !------------------------------------------------------------------ IMPLICIT NONE INTEGER :: I , J , K INTEGER , INTENT ( IN ) :: NI , NJ , NK REAL , INTENT ( IN ) :: FIELD1 ( NI , NJ , NK ) REAL , INTENT ( IN ) :: G REAL :: RMIN , RMAX , XMAX , A , A1 , A2 RMAX = FIELD1 ( 1 , 1 , 1 ) RMIN = FIELD1 ( 1 , 1 , 1 ) DO 100 K = 1 , NK DO 100 J = 1 , NJ DO 100 I = 1 , NI IF ( FIELD1 ( I , J , K ) . GT . RMAX ) RMAX = FIELD1 ( I , J , K ) IF ( FIELD1 ( I , J , K ) . LT . RMIN ) RMIN = FIELD1 ( I , J , K ) 100 CONTINUE IF ( ABS ( RMIN ) . GT . RMAX . OR . ABS ( RMIN ) . EQ . RMAX ) THEN XMAX = ABS ( RMIN ) ELSE XMAX = RMAX END IF IF ( XMAX . EQ . 0 ) THEN IA = 0 RETURN END IF A1 = LOG10 ( ( G / 1 0.d0 ) / XMAX ) A2 = LOG10 ( G / XMAX ) IF ( A1 . gt . A2 ) THEN A = A2 ELSE A = A1 END IF IF ( A . GT . 0 ) IA = INT ( A ) IF ( A . LT . 0 ) IA = INT ( A - 1.0 ) RETURN END SUBROUTINE STATIS ( NI , NJ , NK , PHI , RMS , MW , SIG ) !------------------------------------------------------------------ !! calculate mean, rms, stdev !------------------------------------------------------------------ IMPLICIT REAL ( A - H , O - Z ) REAL PHI ( NI , NJ , NK ), SIG , MW , RMS , P N = NI * NJ * NK RMS = 0. MW = 0. ! 10.86 sinstead of 11.04 sec DO 10 K = 1 , NK DO 10 J = 1 , NJ DO 10 I = 1 , NI P = PHI ( I , J , K ) RMS = RMS + P * P MW = MW + P 10 CONTINUE RMS = SQRT ( RMS / N ) MW = MW / N IF ( RMS * RMS - MW * MW . LT . 0. ) THEN SIG = 0.0 ELSE SIG = SQRT ( RMS * RMS - MW * MW ) END IF RETURN END","tags":"","loc":"sourcefile/calc_etadot.f90.html","title":"calc_etadot.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~rwgrib2.f90~~AfferentGraph sourcefile~rwgrib2.f90 rwgrib2.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~rwgrib2.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules RWGRIB2 Source Code rwgrib2.f90 Source Code MODULE RWGRIB2 !! Read or write a field variable on a lat/lon grid from/to GRIB file, or !! read a field in spectral representation from GRIB file CONTAINS SUBROUTINE READLATLON ( FILENAME , FELD , MAXL , MAXB , MLEVEL , MPAR ) !! Read a field from GRIB file on lat-lon grid USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , parid , nm integer :: i , k integer , dimension (:), allocatable :: igrib integer :: numberOfPointsAlongAParallel integer :: numberOfPointsAlongAMeridian real , dimension (:), allocatable :: values integer :: numberOfValues real , dimension ( maxl , maxb , mlevel ) :: feld integer :: maxl , maxb , mlevel , mstride , mpar (:), irest , div , level integer :: l ( size ( mpar )) character * ( * ) :: filename feld = 0. call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) nm = size ( mpar ) div = mlevel / nm l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n !      write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAParallel' , & numberOfPointsAlongAParallel ) !     get as a integer call grib_get ( igrib ( i ), 'numberOfPointsAlongAMeridian' , & numberOfPointsAlongAMeridian ) call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !      write(*,*) 'numberOfValues=',numberOfValues allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) call grib_get ( igrib ( i ), 'paramId' , parid ) call grib_get ( igrib ( i ), 'level' , level ) kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then !         l(k)=l(k)+1 feld (:,:,( k - 1 ) * div + level ) = reshape ( values ,( / maxl , maxb / )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readlatlon: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop ! !   write(*,*) 'readlatlon: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO if ( allocated ( values )) deallocate ( values ) deallocate ( igrib ) END SUBROUTINE READLATLON SUBROUTINE WRITELATLON ( iunit , igrib , ogrib , FELD , MAXL , MAXB , MLEVEL ,& MLEVELIST , MSTRIDE , MPAR ) !! write a field on lat-lon grid to GRIB file USE GRIB_API IMPLICIT NONE INTEGER IFIELD , MLEVEL , MNAUF , I , J , K , L , MSTRIDE , IERR , JOUT INTEGER MPAR ( MSTRIDE ), MAXL , MAXB , LEVMIN , LEVMAX INTEGER IUNIT , igrib , ogrib REAL ZSEC4 ( MAXL * MAXB ) REAL FELD ( MAXL , MAXB , MLEVEL ) CHARACTER * ( * ) MLEVELIST INTEGER ILEVEL ( MLEVEL ), MLINDEX ( MLEVEL + 1 ), LLEN ! parse MLEVELIST LLEN = len ( trim ( MLEVELIST )) if ( index ( MLEVELIST , 'to' ) . ne . 0 . or . index ( MLEVELIST , 'TO' ) . ne . 0 ) THEN i = index ( MLEVELIST , '/' ) read ( MLEVELIST ( 1 : i - 1 ), * ) LEVMIN i = index ( MLEVELIST , '/' ,. true .) read ( MLEVELIST ( i + 1 : LLEN ), * ) LEVMAX l = 0 do i = LEVMIN , LEVMAX l = l + 1 ILEVEL ( l ) = i end do else l = 1 MLINDEX ( 1 ) = 0 do i = 1 , LLEN if ( MLEVELIST ( i : i ) . eq . '/' ) THEN l = l + 1 MLINDEX ( l ) = i end if end do MLINDEX ( l + 1 ) = LLEN + 1 do i = 1 , l read ( MLEVELIST ( MLINDEX ( i ) + 1 : MLINDEX ( i + 1 ) - 1 ), * ) ILEVEL ( i ) end do end if DO k = 1 , l call grib_set ( igrib , \"level\" , ILEVEL ( k )) DO j = 1 , MSTRIDE call grib_set ( igrib , \"paramId\" , MPAR ( j )) !         if (MPAR(j) .eq. 87) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"Pa,s**-1\") !         end if !         if (MPAR(j) .eq. 77) then !           call grib_set(igrib,\"shortName\",\"etadot\") !           call grib_set(igrib,\"units\",\"s**-1\") !         end if if ( l . ne . mlevel ) then zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, ILEVEL ( k )),( / maxl * maxb / )) else zsec4 ( 1 : maxl * maxb ) = RESHAPE ( FELD (:,:, k ),( / maxl * maxb / )) end if call grib_set ( igrib , \"values\" , zsec4 ) call grib_write ( igrib , iunit ) END DO END DO END SUBROUTINE WRITELATLON SUBROUTINE READSPECTRAL ( FILENAME , CXMN , MNAUF , MLEVEL , MAXLEV , MPAR , A , B ) !!  Read a GRIB file in spherical harmonics USE GRIB_API IMPLICIT NONE integer :: ifile integer :: iret integer :: n , mk , div , nm , k integer :: i , j , parid integer , dimension (:), allocatable :: igrib real , dimension (:), allocatable :: values integer :: numberOfValues , maxlev REAL :: A ( MAXLEV + 1 ), B ( MAXLEV + 1 ), pv ( 2 * MAXLEV + 2 ) REAL :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) integer :: maxl , maxb , mlevel , mstride , mpar (:), mnauf , ioffset , ipar , ilev , l ( size ( mpar )) character * ( * ) :: filename call grib_open_file ( ifile , TRIM ( FILENAME ), 'r' ) ! count the messages in the file call grib_count_in_file ( ifile , n ) allocate ( igrib ( n )) igrib =- 1 ! Load the messages from the file. DO i = 1 , n call grib_new_from_file ( ifile , igrib ( i ), iret ) END DO ! we can close the file call grib_close_file ( ifile ) l = 0 ! Loop on all the messages in memory iloop : DO i = 1 , n ! write(*,*) 'processing message number ',i !     get as a integer call grib_get ( igrib ( i ), 'pentagonalResolutionParameterJ' , j ) call grib_get_size ( igrib ( i ), 'values' , numberOfValues ) !   write(*,*) 'numberOfValues=',numberOfValues call grib_get ( igrib ( i ), 'numberOfVerticalCoordinateValues' , mk ) call grib_get ( igrib ( i ), 'level' , ilev ) call grib_get ( igrib ( i ), 'pv' , pv ) allocate ( values ( numberOfValues ), stat = iret ) !     get data values call grib_get ( igrib ( i ), 'values' , values ) !      IOFFSET=mod(i-1,MSTRIDE)*(mk/2-1) !           CXMN(:,IOFFSET+ilev)=values(1:(MNAUF+1)*(MNAUF+2)) call grib_get ( igrib ( i ), 'paramId' , parid ) nm = size ( mpar ) div = mlevel / nm kloop : do k = 1 , nm if ( parid . eq . mpar ( k )) then l ( k ) = l ( k ) + 1 cxmn (:,( k - 1 ) * div + l ( k )) = values ( 1 :( MNAUF + 1 ) * ( MNAUF + 2 )) !         print*,(k-1)*div+l(k),parid exit kloop end if end do kloop if ( k . gt . nm . and . parid . ne . mpar ( nm )) then write ( * , * ) k , nm , parid , mpar ( nm ) write ( * , * ) 'ERROR readspectral: parameter ' , parid , 'is not' , mpar stop end if !      print*,i END DO iloop ! !   write(*,*) 'readspectral: ',i-1,' records read' DO i = 1 , n call grib_release ( igrib ( i )) END DO deallocate ( values ) deallocate ( igrib ) A = pv ( 1 : 1 + MAXLEV ) B = pv ( 2 + MAXLEV : 2 * MAXLEV + 2 ) END SUBROUTINE READSPECTRAL END MODULE RWGRIB2","tags":"","loc":"sourcefile/rwgrib2.f90.html","title":"rwgrib2.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~grphreal.f90~~EfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~grphreal.f90~~AfferentGraph sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules GRTOPH Source Code grphreal.f90 Source Code MODULE GRTOPH !! Module for transformation from phase space into physical space USE PHTOGR CONTAINS SUBROUTINE GRPH213 ( CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) ! WRONG>>> DIE ROUTINE F]HRT EINE TRANSFORMATION EINER ! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN ! RAUM AUF KUGELKOORDINATEN DURCH ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z   = LEGENDREFUNKTIONSWERTE ! ! MNAUF    ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL     ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB     ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL   ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE , IFAX ( 10 , MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) DIMENSION WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) REAL W ( MAXB ) DIMENSION IND ( MAXB ) IND ( 1 ) = 0 DO 6 J = 2 , MAXB / 2 IND ( j ) = IND ( J - 1 ) + MLAT ( J - 1 ) 6 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 16 L = 1 , MLEVEL CALL GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 16 CONTINUE !$omp end parallel do RETURN END SUBROUTINE GRPH213 SUBROUTINE GRPHSUB ( L , IND , CXMN , FELD , WSAVE , IFAX , Z , W , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) !! Carries out the transformation from the phase space into the physical !! space on spherical coordinates ! CXMN  = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !         CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! CXM   = FOURIERKOEFFIZIENTEN - nur ein Hilfsfeld ! FELD  = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE = Working Array fuer Fouriertransformation ! Z     = LEGENDREFUNKTIONSWERTE ! ! MNAUF ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL  ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB  ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL CXMS ( 4 * ( MNAUF + 1 )) REAL CXMA ( 4 * ( MNAUF + 1 )) REAL , ALLOCATABLE :: CXM (:,:) !   Anzahl der Gitterpunkte pro Breitenkreis des reduzierten !   Gauss'schen Gitters INTEGER MLAT ( MAXB ), ISIZE !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) !   LOGICAL*1 USED(((216*217)/2+1)*160) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER IFAX ( 10 , MAXB ) REAL W ( MAXB ) INTEGER IND ( MAXB ) ALLOCATE ( CXM ( 4 * MAXB , MAXB )) DO 5 J = 1 , MAXB / 2 CXMS ( 1 : MLAT ( J )) = FELD ( IND ( J ) + 1 : IND ( J ) + MLAT ( J ), L ) CALL RFOUFTR ( CXMS , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) CXMA ( 1 : MLAT ( J )) = FELD ( MAXL - IND ( J ) - MLAT ( J ) + 1 : MAXL - IND ( J ), L ) CALL RFOUFTR ( CXMA , WSAVE ( 1 , J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) DO 4 I = 1 , 2 * ( MNAUF + 1 ) CXM ( I , J ) = CXMS ( I ) + CXMA ( I ) CXM ( I , MAXB + 1 - J ) = CXMS ( I ) - CXMA ( I ) 4 CONTINUE 5 CONTINUE CALL LGTR213 ( CXMN ( 0 , L ), CXM , Z , W , MLAT , MNAUF , MAXB ) DEALLOCATE ( CXM ) RETURN END SUBROUTINE GRPHSUB ! SUBROUTINE LGTR213 ( CXMN , CXM , Z , W , MLAT , MNAUF , MAXB ) !! Calculates the KFFKs (Fourier coefficients) CXMN IMPLICIT REAL ( A - H , O - Z ) INTEGER MLAT ( MAXB ) DIMENSION CXM ( 0 : 4 * MAXB - 1 , MAXB ) DIMENSION CXMN ( 0 : 2 * ((( MNAUF + 1 ) * MNAUF ) / 2 + MNAUF ) + 1 ) REAL * 8 Z ( MAXB / 2 , 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL * 8 W ( MAXB ), CR , CI , HILF LOGICAL EVEN LL = 0 LLP = 0 DO 1 I = 0 , MNAUF KM = 0 9 KM = KM + 1 IF ( MLAT ( KM ) . LE . 2 * I ) THEN GOTO 9 END IF DO 2 J = I , MNAUF CR = 0 CI = 0 EVEN = MOD ( I + J , 2 ) . EQ . 0 IF ( EVEN ) THEN DO 3 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , K ) * HILF CI = CI + CXM ( 2 * I + 1 , K ) * HILF 3 CONTINUE ELSE DO 4 K = KM , MAXB / 2 HILF = W ( K ) * Z ( K , LLP ) CR = CR + CXM ( 2 * I , MAXB + 1 - K ) * HILF CI = CI + CXM ( 2 * I + 1 , MAXB + 1 - K ) * HILF 4 CONTINUE END IF 5 CXMN ( 2 * LL ) = CR CXMN ( 2 * LL + 1 ) = CI LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 1 CONTINUE RETURN END SUBROUTINE LGTR213 SUBROUTINE RFOUFTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) !! Calculates the Fourier sum with an FFT algorithm IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : 2 * MAXL - 1 ) DIMENSION FELD ( MAXL ), TRIGS ( 2 * MAXL ) DIMENSION WSAVE ( MAXAUF ) INTEGER IFAX ( 10 ) ! NORMIERUNG... WSAVE ( 1 ) = CXM ( MAXL - 1 ) CXM ( 1 : MAXL ) = CXM ( 0 : MAXL - 1 ) / 2 CXM ( 0 ) = WSAVE ( 1 ) / 2 !    CALL CFFTF(MAXL,CXM,WSAVE) CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , - 1 ) RETURN END SUBROUTINE RFOUFTR END MODULE GRTOPH","tags":"","loc":"sourcefile/grphreal.f90.html","title":"grphreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Files dependent on this one sourcefile~~phgrreal.f90~~AfferentGraph sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~phgrreal.f90 sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 sourcefile~grphreal.f90 grphreal.f90 sourcefile~calc_etadot.f90->sourcefile~grphreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 sourcefile~grphreal.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules PHTOGR Source Code phgrreal.f90 Source Code MODULE PHTOGR !! Module for transformation of a field variable from the phase space !! into the physical space onto the reduced Gaussian grid INTEGER , PARAMETER :: MAXAUF = 36000 CONTAINS SUBROUTINE PHGR213 ( CXMN , FELD , WSAVE , IFAX , Z , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) ! DIE ROUTINE F]HRT EINE TRANSFORMATION EINER ! FELDVARIABLEN VOM PHASENRAUM IN  DEN PHYSIKALISCHEN ! RAUM AUF DAS REDUZIERTE GAUSS'SCHE GITTER DURCH ! ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! WSAVE  = Working Array fuer Fouriertransformation ! Z      = LEGENDREFUNKTIONSWERTE ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT NONE !   Anzahl der Gitterpunkte auf jedem Breitenkreis INTEGER MLAT ( MAXB / 2 ) INTEGER K , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) INTEGER :: IFAX ( 10 , MAXB ) IND ( 1 ) = 0 DO 7 K = 2 , MAXB / 2 IND ( K ) = IND ( K - 1 ) + MLAT ( K - 1 ) 7 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 17 K = 1 , MAXB / 2 CALL PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) 17 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE PHGR213 SUBROUTINE PHSYM ( K , IND , CXMN , FELD , Z , WSAVE , IFAX , MLAT , MNAUF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER MLAT ( MAXB / 2 ) INTEGER K , L , I , J , LLS , LLPS , LL , LLP , MAXL , MAXB , MLEVEL , MNAUF INTEGER IND ( MAXB ) INTEGER :: IFAX ( 10 , MAXB ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXMS ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB / 2 ) REAL ACR , ACI , SCR , SCI REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MLEVEL ) REAL WSAVE ( 8 * MAXB + 15 , MAXB / 2 ) DO 6 L = 1 , MLEVEL LL = 0 LLP = 0 DO 1 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP IF ( 2 * I + 1 . LT . MLAT ( K )) THEN !         Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 J = I , MNAUF , 2 SCR = SCR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 J = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , K ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , K ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE END IF LL = LLS + ( MNAUF - I + 1 ) LLP = LLPS + ( MNAUF - I + 3 ) CXMS ( 2 * I ) = SCR + ACR CXMS ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 1 CONTINUE !     CALL FOURTR(CXMS,FELD(IND(k)+1,L),WSAVE(:,K),MNAUF,*MLAT(K),1) !     CALL FOURTR(CXMA,FELD(MAXL-IND(k)-MLAT(K)+1,L),WSAVE(:,K),MNAUF,MLAT(K),1) CALL RFOURTR ( CXMS , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( IND ( k ) + 1 : IND ( K ) + MLAT ( K ), L ) = CXMS ( 0 : MLAT ( K ) - 1 ) CALL RFOURTR ( CXMA , WSAVE (:, K ), IFAX (:, K ), MNAUF , MLAT ( K ), 1 ) FELD ( MAXL - IND ( k ) - MLAT ( K ) + 1 : MAXL - IND ( k ), L ) = CXMA ( 0 : MLAT ( K ) - 1 ) !      WRITE(*,*) IND+1,FELD(IND+1,L) 6 CONTINUE END SUBROUTINE PHSYM SUBROUTINE PHGCUT ( CXMN , FELD , WSAVE , IFAX , Z , & MNAUF , MMAX , MAUF , MANF , MAXL , MAXB , MLEVEL ) !! Carries out the transformation of a field variable from the phase space !! into the physical space on spherical coordinates. It is possible to !! specify a section of the Earth. This subroutine is slower thatn PHGRPH. ! CXMN   = SPEKTRALKOEFFIZIENTEN IN DER REIHENFOLGE !          CX00,CX01,CX11,CX02,....CXMNAUFMNAUF ! FELD   = FELD DER METEOROLOGISCHEN VARIABLEN ! BREITE = SINUS DER GEOGRAFISCHEN BREITEN ! ! MNAUF  ANZAHL DER FOURIERKOEFFIZIENTEN ! MAUF   ANZAHL DER LAENGEN UND DER FOURIERKOEFFIZIENTEN ! MANF   ANFANG DES LAENGENBEREICHS FUER DAS GITTER, !        AUF DAS INTERPOLIERT WERDEN SOLL ! MAXL   ANZAHL DER FUER DAS GITTER BENUTZTEN LAENGEN ! MAXB   ANZAHL DER FUER DAS GITTER BENOETIGTEN BREITEN ! MLEVEL ANZAHL DER LEVELS, DIE TRANSFORMIERT WERDEN IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MMAX + 3 ) * ( MMAX + 4 )) / 2 , MAXB ) DIMENSION CXMN ( 0 :( MMAX + 1 ) * ( MMAX + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) LOGICAL SYM !    write(*,*)mauf,mnauf,manf,maxl IF ( MAUF . LE . MNAUF ) WRITE ( * , * ) 'TOO COARSE LONGITUDE RESOLUTION' IF ( MANF . LT . 1 . OR . MAXL . LT . 1 . OR . & MANF . GT . MAUF . OR . MAXL . GT . MAUF ) THEN WRITE ( * , * ) 'WRONG LONGITUDE RANGE' , MANF , MAXL STOP END IF ! Pruefe, ob Ausgabegitter symmetrisch zum Aequator ist ! Wenn ja soll Symmetrie der Legendrepolynome ausgenutzt werden IF ( MAXB . GT . 4 ) THEN SYM = . TRUE . DO 11 J = 5 , 5 IF ( ABS ( ABS ( Z ( 100 , J )) - ABS ( Z ( 100 , MAXB + 1 - J ))) . GT . 1E-11 ) SYM = . FALSE . !       WRITE(*,*) ABS(Z(100,J)),ABS(Z(100,MAXB+1-J)) 11 CONTINUE ! !      WRITE(*,*) 'Symmetrisch: ',SYM ELSE SYM = . FALSE . END IF IF ( SYM ) THEN !$OMP PARALLEL DO DO J = 1 ,( MAXB + 1 ) / 2 CALL PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) END DO !$OMP END PARALLEL DO ELSE !$OMP PARALLEL DO DO J = 1 , MAXB CALL PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) END DO !$OMP END PARALLEL DO END IF RETURN END SUBROUTINE PHGCUT SUBROUTINE PHSYMCUT ( J , CXMN , FELD , Z , WSAVE , IFAX , MAUF , MNAUF , MAXL , MAXB , MLEVEL , MANF ) IMPLICIT REAL ( A - H , O - Z ) !   FELD DER FOURIERKOEFFIZIENTEN REAL :: CXM ( 0 : MAXAUF - 1 ), CXMA ( 0 : MAXAUF - 1 ) !   FELD DER LEGENDREPOLYNOME FUER EINE BREITE REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL SCR , SCI , ACR , ACI DIMENSION CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL FELD ( MAXL , MAXB , MLEVEL ) DIMENSION WSAVE ( 4 * MAUF + 15 ) INTEGER :: IFAX ( 10 ) DO 16 L = 1 , MLEVEL LL = 0 LLP = 0 DO 17 I = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 LLS = LL LLPS = LLP !       Innerste Schleife aufgespalten um if-Abfrage zu sparen DO 18 K = I , MNAUF , 2 SCR = SCR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) SCI = SCI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 18 CONTINUE LL = LLS + 1 LLP = LLPS + 1 DO 19 K = I + 1 , MNAUF , 2 ACR = ACR + Z ( LLP , J ) * CXMN ( 2 * LL , L ) ACI = ACI + Z ( LLP , J ) * CXMN ( 2 * LL + 1 , L ) LL = LL + 2 LLP = LLP + 2 19 CONTINUE LL = LLS + MNAUF - I + 1 LLP = LLPS + MNAUF - I + 3 CXM ( 2 * I ) = SCR + ACR CXM ( 2 * I + 1 ) = SCI + ACI CXMA ( 2 * I ) = SCR - ACR CXMA ( 2 * I + 1 ) = SCI - ACI 17 CONTINUE CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 26 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF 26 CONTINUE CALL RFOURTR ( CXMA , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO 36 I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF + I - 1 ) ELSE FELD ( I + 1 , MAXB + 1 - J , L ) = CXMA ( MANF - MAUF + I - 1 ) END IF 36 CONTINUE 16 CONTINUE END SUBROUTINE PHSYMCUT SUBROUTINE PHGPNS ( CXMN , FELD , Z , WSAVE , IFAX , J , MNAUF , MAUF , MANF , MAXL , MAXB , MLEVEL ) IMPLICIT NONE INTEGER , INTENT ( IN ) :: MNAUF , MAUF , MANF , J , MAXL , MAXB , MLEVEL REAL :: CXM ( 0 : MAXAUF - 1 ) REAL , INTENT ( IN ) :: Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 , MAXB ) REAL , INTENT ( IN ) :: CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , MLEVEL ) REAL , INTENT ( IN ) :: WSAVE ( 4 * MAUF + 15 ) REAL :: FELD ( MAXL , MAXB , MLEVEL ) INTEGER :: IFAX ( 10 ) INTEGER I , L DO L = 1 , MLEVEL CALL LEGTR ( CXMN (:, L ), CXM , Z (:, J ), MNAUF , MAUF ) CALL RFOURTR ( CXM , WSAVE , IFAX , MNAUF , MAUF , 1 ) DO I = 0 , MAXL - 1 IF ( MANF + I . LE . MAUF ) THEN FELD ( I + 1 , J , L ) = CXM ( MANF + I - 1 ) ELSE FELD ( I + 1 , J , L ) = CXM ( MANF - MAUF + I - 1 ) END IF END DO END DO END SUBROUTINE PHGPNS SUBROUTINE LEGTR ( CXMN , CXM , Z , MNAUF , MAUF ) !! Calculate the Fourier coefficients CXM IMPLICIT NONE INTEGER MNAUF , MAUF , LL , LLP , I , J REAL CXM ( 0 : MAXAUF - 1 ) REAL CXMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 ) REAL Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) REAL CI , CR LL = 0 LLP = 0 DO 1 I = 0 , MNAUF CR = 0.D0 CI = 0.D0 DO 2 J = I , MNAUF CR = CR + Z ( LLP ) * CXMN ( 2 * LL ) CI = CI + Z ( LLP ) * CXMN ( 2 * LL + 1 ) LL = LL + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 2 CXM ( 2 * I ) = CR CXM ( 2 * I + 1 ) = CI 1 CONTINUE RETURN END SUBROUTINE LEGTR SUBROUTINE RFOURTR ( CXM , TRIGS , IFAX , MNAUF , MAXL , ISIGN ) !!  Calculates the Fourier sum with an FFT algorithm IMPLICIT REAL ( A - H , O - Z ) DIMENSION CXM ( 0 : MAXAUF - 1 ) REAL :: WSAVE ( 2 * MAXL ), TRIGS ( 2 * MAXL ) INTEGER IFAX ( 10 ) DO I = MNAUF + 1 , MAXL - 1 CXM ( 2 * I ) = 0.0 CXM ( 2 * I + 1 ) = 0.0 END DO CALL FFT99 ( CXM , WSAVE , TRIGS , IFAX , 1 , 1 , MAXL , 1 , 1 ) DO I = 0 , MAXL - 1 CXM ( I ) = CXM ( I + 1 ) END DO RETURN END SUBROUTINE RFOURTR SUBROUTINE GAULEG ( X1 , X2 , X , W , N ) !! Calculates the Gaussian latitudes IMPLICIT REAL ( A - H , O - Z ) DIMENSION X ( N ), W ( N ) PARAMETER ( EPS = 3.D-14 ) M = ( N + 1 ) / 2 XM = 0.5D0 * ( X2 + X1 ) XL = 0.5D0 * ( X2 - X1 ) DO 12 I = 1 , M Z = DCOS ( 3.141592654D0 * ( I - . 25 D0 ) / ( N + . 5 D0 )) 1 CONTINUE P1 = 1.D0 P2 = 0.D0 DO 11 J = 1 , N P3 = P2 P2 = P1 P1 = (( 2.D0 * J - 1.D0 ) * Z * P2 - ( J - 1.D0 ) * P3 ) / J 11 CONTINUE PP = N * ( Z * P1 - P2 ) / ( Z * Z - 1.D0 ) Z1 = Z Z = Z1 - P1 / PP IF ( ABS ( Z - Z1 ) . GT . EPS ) GO TO 1 X ( I ) = XM - XL * Z X ( N + 1 - I ) = XM + XL * Z W ( I ) = 2.D0 * XL / (( 1.D0 - Z * Z ) * PP * PP ) W ( N + 1 - I ) = W ( I ) 12 CONTINUE RETURN END SUBROUTINE GAULEG SUBROUTINE PLGNFA ( LL , X , Z ) !! Calculates all normalised associated Legendre functions from !! P00(X) to PLL(X) and writes them into the field Z. !! The polynomials have indices as with ECMWF, i.e. !! P00,P10,P11,P20,P21,P22,... !! Otherwise, this subroutine is analogous to PLGNDN ! X IST DER COSINUS DES ZENITWINKELS ODER !       DER SINUS DER GEOGRAFISCHEN BREITE IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( LL + 3 ) * ( LL + 4 )) / 2 ) L = LL + 2 I = 1 Z ( 0 ) = 1.D0 FACT = 1.D0 POT = 1.D0 SOMX2 = DSQRT ( 1.D0 - X * X ) DO 14 J = 0 , L DJ = DBLE ( J ) IF ( J . GT . 0 ) THEN FACT = FACT * ( 2.D0 * DJ - 1.D0 ) / ( 2.D0 * DJ ) POT = POT * SOMX2 Z ( I ) = DSQRT (( 2.D0 * DJ + 1.D0 ) * FACT ) * POT I = I + 1 END IF IF ( J . LT . L ) THEN Z ( I ) = X * DSQRT (( 4.D0 * DJ * DJ + 8.D0 * DJ + 3.D0 ) / ( 2.D0 * DJ + 1.D0 )) * Z ( I - 1 ) I = I + 1 END IF DK = DJ + 2.D0 DO 14 K = J + 2 , L DDK = ( DK * DK - DJ * DJ ) Z ( I ) = X * DSQRT (( 4.D0 * DK * DK - 1.D0 ) / DDK ) * Z ( I - 1 ) - & DSQRT ((( 2.D0 * DK + 1.D0 ) * ( DK - DJ - 1.D0 ) * ( DK + DJ - 1.D0 )) / & (( 2.D0 * DK - 3.D0 ) * DDK )) * Z ( I - 2 ) DK = DK + 1.D0 I = I + 1 14 CONTINUE RETURN END SUBROUTINE PLGNFA SUBROUTINE DPLGND ( MNAUF , Z , DZ ) !! Calculates the derivatives of the normalised associated Legendre function !! from P00(X) to PLL(X) and writes them into the field DZ. !! Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) IMPLICIT REAL ( A - H , O - Z ) DIMENSION Z ( 0 :(( MNAUF + 3 ) * ( MNAUF + 4 )) / 2 ) DIMENSION DZ ( 0 :(( MNAUF + 2 ) * ( MNAUF + 3 )) / 2 ) IF ( Z ( 0 ) . NE . 1.D0 ) THEN WRITE ( * , * ) 'DPLGND: Z(0) must be 1.0' STOP END IF LLP = 0 LLH = 0 DO 1 I = 0 , MNAUF + 1 DO 2 J = I , MNAUF + 1 IF ( I . EQ . J ) THEN WURZELA = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELA * Z ( LLP + 1 ) ELSE WURZELB = DSQRT ( DBLE (( J + 1 ) * ( J + 1 ) - I * I ) / DBLE ( 4 * ( J + 1 ) * ( J + 1 ) - 1 )) DZ ( LLH ) = DBLE ( J ) * WURZELB * Z ( LLP + 1 ) - DBLE ( J + 1 ) * WURZELA * Z ( LLP - 1 ) WURZELA = WURZELB END IF LLH = LLH + 1 LLP = LLP + 1 2 CONTINUE LLP = LLP + 1 1 CONTINUE RETURN END SUBROUTINE DPLGND SUBROUTINE SPFILTER ( FELDMN , MM , MMAX ) !! Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984) ! MM=Spectral truncation of field ! MMAX= Spectral truncation of filter IMPLICIT NONE INTEGER MM , MMAX , I , J , K , L REAL FELDMN ( 0 :( MM + 1 ) * ( MM + 2 ) - 1 ) REAL KMAX , SMAX , FAK SMAX = 0.1 KMAX =- ALOG ( SMAX ) KMAX = KMAX / ( float ( MMAX ) * float ( MMAX + 1 )) ** 2 !    WRITE(*,*)'alogsmax',alog(smax),'KMAX:',KMAX L = 0 DO I = 0 , MM DO J = I , MM !        WRITE(*,*) I,J,FELD(K),FELD(K)*EXP(-KMAX*(J*(J+1))**2) IF ( J . LE . MMAX ) THEN !          FAK=EXP(-KMAX*(J*(J+1))**2) FAK = 1.0 FELDMN ( 2 * L ) = FELDMN ( 2 * L ) * FAK FELDMN ( 2 * L + 1 ) = FELDMN ( 2 * L + 1 ) * FAK ELSE FELDMN ( 2 * L ) = 0. FELDMN ( 2 * L + 1 ) = 0. END IF L = L + 1 END DO END DO END SUBROUTINE SPFILTER END MODULE PHTOGR","tags":"","loc":"sourcefile/phgrreal.f90.html","title":"phgrreal.f90 – Flex_extract: Calculation of etadot"},{"text":"Contents Subroutines POSNAM Source Code posnam.f90 Source Code SUBROUTINE POSNAM ( KULNAM , CDNAML ) !! Position in namelist file. !! Author:  Mats Hamrud, ECMWF INTEGER , INTENT ( IN ) :: KULNAM CHARACTER * ( * ), INTENT ( IN ) :: CDNAML CHARACTER * 120 CLINE CHARACTER * 1 CLTEST REWIND ( KULNAM ) ILEN = LEN ( CDNAML ) 102 CONTINUE CLINE = ' ' READ ( KULNAM , '(A)' ) CLINE IND1 = INDEX ( CLINE , '&' // CDNAML ) IF ( IND1 . EQ . 0 ) GO TO 102 CLTEST = CLINE ( IND1 + ILEN + 1 : IND1 + ILEN + 1 ) IF ( LGE ( CLTEST , '0' ) . AND . LLE ( CLTEST , '9' ) . OR . & LGE ( CLTEST , 'A' ) . AND . LLE ( CLTEST , 'Z' )) GOTO 102 BACKSPACE ( KULNAM ) RETURN END SUBROUTINE POSNAM","tags":"","loc":"sourcefile/posnam.f90.html","title":"posnam.f90 – Flex_extract: Calculation of etadot"},{"text":"This file depends on sourcefile~~ftrafo.f90~~EfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~phgrreal.f90 phgrreal.f90 sourcefile~ftrafo.f90->sourcefile~phgrreal.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Files dependent on this one sourcefile~~ftrafo.f90~~AfferentGraph sourcefile~ftrafo.f90 ftrafo.f90 sourcefile~calc_etadot.f90 calc_etadot.f90 sourcefile~calc_etadot.f90->sourcefile~ftrafo.f90 Help × Graph Key Nodes of different colours represent the following: Graph Key Source File Source File This Page's Entity This Page's Entity Solid arrows point from a file to a file which it depends on. A file\n    is dependent upon another if the latter must be compiled before the former\n    can be. Contents Modules FTRAFO Source Code ftrafo.f90 Source Code MODULE FTRAFO !! Implementation of the spectral transformation using the reduced Gaussian grid CONTAINS SUBROUTINE VDTOUV ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , MLAT , MNAUF , NI , NJ , NK ) !! Calculates scale winds from vorticity and divergence. !! If in XMN the divergence is passed, then the divergent part of the wind !! (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the !! rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned. !! Summing both, one obtains the whole scale wind. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte pro Flaeche ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , N , NI , NJ , NK , MNAUF , GGIND ( NJ / 2 ) INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL RT , IT GGIND ( 1 ) = 0 DO 4 J = 2 , NJ / 2 GGIND ( J ) = GGIND ( J - 1 ) + MLAT ( J - 1 ) 4 CONTINUE !$OMP PARALLEL DO SCHEDULE(DYNAMIC) DO 5 J = 1 , NJ / 2 CALL VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND ( J ), MLAT , MNAUF , NI , NJ , NK ) 5 CONTINUE !$OMP END PARALLEL DO RETURN END SUBROUTINE VDTOUV SUBROUTINE VDUVSUB ( J , XMN , XLAM , XPHI , GWSAVE , IFAX , P , GGIND , MLAT , MNAUF , NI , NJ , NK ) USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD , SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI REAL FAC ( 0 : MNAUF ), RT , IT ERAD = 636747 0.D0 FAC ( 0 ) = 0.D0 DO 12 N = 1 , MNAUF FAC ( N ) =- ERAD / DBLE ( N ) / DBLE ( N + 1 ) 12 CONTINUE CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) * FAC ( N ) IT = XMN ( 2 * LL + 1 , K ) * FAC ( N ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) VFOUC ( 2 * M ) =- M * ( SCI + ACI ) VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE RETURN END SUBROUTINE VDUVSUB SUBROUTINE PHGRAD ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MLAT , MNAUF , NI , NJ , NK ) !! Calculates the gradient of a scalar from the field of the scalar XMN !! in phase space. Returns fields of the componentens of the horizontal !! gradients XLAM,XPHI on the Gaussian grid. ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MLAT ( NJ ), IFAX ( 10 , NJ ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ / 2 ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NK ), XPHI ( NI , NK ) REAL GWSAVE ( 8 * NJ + 15 , NJ / 2 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ / 2 CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MLAT ( J )) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( GGIND + 1 : GGIND + MLAT ( J ), K ) = VFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( UFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XLAM ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = UFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MVFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( GGIND + 1 : GGIND + MLAT ( J ), K ) = MVFOUC ( 0 : MLAT ( J ) - 1 ) CALL RFOURTR ( MUFOUC , GWSAVE (:, J ), IFAX (:, J ), MNAUF , MLAT ( J ), 1 ) XPHI ( NI - GGIND - MLAT ( J ) + 1 : NI - GGIND , K ) = MUFOUC ( 0 : MLAT ( J ) - 1 ) 3 CONTINUE GGIND = GGIND + MLAT ( J ) 4 CONTINUE RETURN END SUBROUTINE PHGRAD SUBROUTINE PHGRACUT ( XMN , XLAM , XPHI , GWSAVE , IFAX , P , H , MAUF , MNAUF , NI , NJ , MANF , NK ) !! Calculated the gradient of a scalar from the field of the scalar XMN !! in phase space. Returns the fields of the components of the horizontal !! gradient XLAM,XPHI on the Gaussian grid ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus USE PHTOGR IMPLICIT NONE INTEGER J , K , M , N , NI , NJ , NK , MNAUF , GGIND , LL , LLP , LLH , LLS , LLPS , LLHS INTEGER MAUF , MANF , I , IFAX ( 10 ) REAL UFOUC ( 0 : MAXAUF ), MUFOUC ( 0 : MAXAUF ) REAL VFOUC ( 0 : MAXAUF ), MVFOUC ( 0 : MAXAUF ) REAL XMN ( 0 :( MNAUF + 1 ) * ( MNAUF + 2 ) - 1 , NK ) REAL P ( 0 :( MNAUF + 3 ) * ( MNAUF + 4 ) / 2 , NJ ) REAL H ( 0 :( MNAUF + 2 ) * ( MNAUF + 3 ) / 2 ) REAL XLAM ( NI , NJ , NK ), XPHI ( NI , NJ , NK ) REAL HLAM ( MAXAUF , 2 ), HPHI ( MAXAUF , 2 ) REAL GWSAVE ( 4 * MAUF + 15 ) REAL ERAD REAL SCR , SCI , ACR , ACI , MUSCR , MUSCI , MUACR , MUACI , RT , IT ERAD = 636747 0.0 GGIND = 0 DO 4 J = 1 , NJ CALL DPLGND ( MNAUF , P ( 0 , J ), H ) DO 3 K = 1 , NK LL = 0 LLP = 0 LLH = 0 DO 2 M = 0 , MNAUF SCR = 0.D0 SCI = 0.D0 ACR = 0.D0 ACI = 0.D0 MUSCR = 0.D0 MUSCI = 0.D0 MUACR = 0.D0 MUACI = 0.D0 LLS = LL LLPS = LLP LLHS = LLH IF ( 2 * M + 1 . LT . MAUF ) THEN DO 1 N = M , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) SCR = SCR + RT * P ( LLP , J ) SCI = SCI + IT * P ( LLP , J ) MUACR = MUACR + RT * H ( LLH ) MUACI = MUACI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 1 CONTINUE LL = LLS + 1 LLP = LLPS + 1 LLH = LLHS + 1 DO 11 N = M + 1 , MNAUF , 2 RT = XMN ( 2 * LL , K ) IT = XMN ( 2 * LL + 1 , K ) ACR = ACR + RT * P ( LLP , J ) ACI = ACI + IT * P ( LLP , J ) MUSCR = MUSCR + RT * H ( LLH ) MUSCI = MUSCI + IT * H ( LLH ) LL = LL + 2 LLP = LLP + 2 LLH = LLH + 2 11 CONTINUE END IF LL = LLS + ( MNAUF - M + 1 ) LLP = LLPS + ( MNAUF - M + 3 ) LLH = LLHS + ( MNAUF - M + 2 ) UFOUC ( 2 * M ) =- M * ( SCI - ACI ) / ERAD UFOUC ( 2 * M + 1 ) = M * ( SCR - ACR ) / ERAD VFOUC ( 2 * M ) =- M * ( SCI + ACI ) / ERAD VFOUC ( 2 * M + 1 ) = M * ( SCR + ACR ) / ERAD MUFOUC ( 2 * M ) =- ( MUSCR - MUACR ) / ERAD MUFOUC ( 2 * M + 1 ) =- ( MUSCI - MUACI ) / ERAD MVFOUC ( 2 * M ) =- ( MUSCR + MUACR ) / ERAD MVFOUC ( 2 * M + 1 ) =- ( MUSCI + MUACI ) / ERAD 2 CONTINUE CALL RFOURTR ( VFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) CALL RFOURTR ( MVFOUC , GWSAVE , IFAX , MNAUF , MAUF , 1 ) DO 6 I = 0 , NI - 1 IF ( MANF + I . LE . MAUF ) THEN XLAM ( I + 1 , J , K ) = VFOUC ( MANF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF + I - 1 ) ELSE XLAM ( I + 1 , J , K ) = VFOUC ( MANF - MAUF + I - 1 ) XPHI ( I + 1 , J , K ) = MVFOUC ( MANF - MAUF + I - 1 ) END IF 6 CONTINUE 3 CONTINUE GGIND = GGIND + MAUF 4 CONTINUE RETURN END SUBROUTINE PHGRACUT SUBROUTINE CONTGL ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , ETA , MLAT , A , B , NI , NJ , NK ) !! Calculation of divergence from the wind field (U,V) !! in phase space. Returns fields of the componentens of the !! horizontal gradients XLAM,XPHI on the Gaussian grid ! GWSAVE ist ein Hilfsfeld fuer die FFT ! P enthaelt die assoziierten Legendrepolynome, H deren Ableitung ! MLAT enthaelt die Anzahl der Gitterpunkte pro Breitenkreis ! MNAUF gibt die spektrale Aufloesung an, ! NI = Anzahl der Gauss'schen Gitterpunkte, ! NJ = Anzahl der Gauss'schen Breiten, ! NK = Anzahl der Niveaus ! Beachte, dass das Windfeld eine um 1 erhoehte Aufloesung in mu-Richtung hat. IMPLICIT NONE INTEGER NI , NJ , NK , I , J , K , MLAT ( NJ ), L REAL A ( NK + 1 ), B ( NK + 1 ) REAL PS ( NI ), DPSDL ( NI ), DPSDM ( NI ) REAL DIV ( NI , NK ), U ( NI , NK ), V ( NI , NK ), ETA ( NI , NK ) REAL BREITE ( NJ ) REAL DIVT1 , DIVT2 , POB , PUN , DPSDT , COSB L = 0 DO 4 J = 1 , NJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DO 1 K = 1 , NK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DIVT1 = DIVT1 + DIV ( L , K ) * ( PUN - POB ) IF ( COSB . GT . 0. ) THEN DIVT2 = DIVT2 + ( B ( K + 1 ) - B ( K )) * PS ( L ) * & ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB END IF ETA ( L , K ) =- DIVT1 - DIVT2 1 CONTINUE DPSDT = ( - DIVT1 - DIVT2 ) / PS ( L ) DO 2 K = 1 , NK ETA ( L , K ) = ETA ( L , K ) - DPSDT * B ( K + 1 ) * PS ( L ) 2 CONTINUE PS ( L ) = DPSDT * PS ( L ) 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE CONTGL SUBROUTINE OMEGA ( PS , DPSDL , DPSDM , DIV , U , V , BREITE , E , MLAT , A , B , NGI , NGJ , MKK ) !! Calculates \\omega in the hybrid (\\eta-)coordinate system ! OMEGA berechnet omega im Hybridkoordinatensystem ! PS ist der Bodendruck, ! DPSDL,DPSDM sind die Komponenten des Gradienten des Logarithmus des ! Bodendrucks ! DIV,U,V sind die horizontale Divergenz und das horizontale Windfeld ! BREITE ist das Feld der Gauss'schen Breiten ! E ist omega, IMPLICIT NONE INTEGER I , J , K , L , NGI , NGJ , MKK , MLAT ( NGJ ) REAL PS ( NGI ), DPSDL ( NGI ), DPSDM ( NGI ), A ( MKK + 1 ), B ( MKK + 1 ) REAL DIV ( NGI , MKK ), U ( NGI , MKK ), V ( NGI , MKK ), E ( NGI , MKK ) REAL BREITE ( NGJ ) REAL DIVT1 , DIVT2 , POB , PUN , DP , X , Y , COSB REAL DIVT3 ( MKK + 2 ) L = 0 DO 4 J = 1 , NGJ COSB = ( 1.0 - BREITE ( J ) * BREITE ( J )) DO 3 I = 1 , MLAT ( J ) L = L + 1 DIVT1 = 0.0 DIVT2 = 0.0 DIVT3 ( 1 ) = 0.0 DO 1 K = 1 , MKK POB = A ( K ) + B ( K ) * PS ( L ) PUN = A ( K + 1 ) + B ( K + 1 ) * PS ( L ) DP = PUN - POB Y = PS ( L ) * ( U ( L , K ) * DPSDL ( L ) + V ( L , K ) * DPSDM ( L )) / COSB IF ( K . LT . 3 ) THEN X = 0.0 ELSE X = ( B ( K + 1 ) - B ( K )) * Y END IF DIVT1 = DIVT1 + DIV ( L , K ) * DP DIVT2 = DIVT2 + X DIVT3 ( K + 1 ) =- DIVT1 - DIVT2 IF ( K . GT . 1 ) THEN E ( L , K ) = 0.5 * ( POB + PUN ) / & DP * Y * (( B ( K + 1 ) - B ( K )) + ( A ( K + 1 ) * B ( K ) - A ( K ) * B ( K + 1 )) / DP * LOG ( PUN / POB )) ELSE E ( L , K ) = 0.0 END IF E ( L , K ) = E ( L , K ) + 0.5 * ( DIVT3 ( K ) + DIVT3 ( K + 1 )) 1 CONTINUE 3 CONTINUE 4 CONTINUE RETURN END SUBROUTINE OMEGA END MODULE FTRAFO","tags":"","loc":"sourcefile/ftrafo.f90.html","title":"ftrafo.f90 – Flex_extract: Calculation of etadot"},{"text":"function IA(FIELD1, NI, NJ, NK, G) Calculate something that is roughly log10( maxval(field1)/g ) [PS] Arguments Type Intent Optional Attributes Name real, intent(in) :: FIELD1 (NI,NJ,NK) integer, intent(in) :: NI integer, intent(in) :: NJ integer, intent(in) :: NK real, intent(in) :: G Return Value integer Contents None","tags":"","loc":"proc/ia.html","title":"IA – Flex_extract: Calculation of etadot"},{"text":"subroutine STATIS(NI, NJ, NK, PHI, RMS, MW, SIG) calculate mean, rms, stdev Arguments Type Intent Optional Attributes Name integer :: NI integer :: NJ integer :: NK real :: PHI (NI,NJ,NK) real :: RMS real :: MW real :: SIG Called by proc~~statis~~CalledByGraph proc~statis STATIS program~calc_etadot calc_etadot program~calc_etadot->proc~statis Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/statis.html","title":"STATIS – Flex_extract: Calculation of etadot"},{"text":"subroutine POSNAM(KULNAM, CDNAML) Position in namelist file.\n Author:  Mats Hamrud, ECMWF Arguments Type Intent Optional Attributes Name integer, intent(in) :: KULNAM character(len=*), intent(in) :: CDNAML Called by proc~~posnam~~CalledByGraph proc~posnam POSNAM program~calc_etadot calc_etadot program~calc_etadot->proc~posnam Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/posnam.html","title":"POSNAM – Flex_extract: Calculation of etadot"},{"text":"public subroutine READLATLON(filename, feld, maxl, maxb, mlevel, mpar) Uses GRIB_API proc~~readlatlon~~UsesGraph proc~readlatlon READLATLON GRIB_API GRIB_API proc~readlatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Read a field from GRIB file on lat-lon grid Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) Calls proc~~readlatlon~~CallsGraph proc~readlatlon READLATLON grib_count_in_file grib_count_in_file proc~readlatlon->grib_count_in_file grib_close_file grib_close_file proc~readlatlon->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readlatlon~~CalledByGraph proc~readlatlon READLATLON program~calc_etadot calc_etadot program~calc_etadot->proc~readlatlon Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readlatlon.html","title":"READLATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine WRITELATLON(IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) Uses GRIB_API proc~~writelatlon~~UsesGraph proc~writelatlon WRITELATLON GRIB_API GRIB_API proc~writelatlon->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) Calls proc~~writelatlon~~CallsGraph proc~writelatlon WRITELATLON grib_write grib_write proc~writelatlon->grib_write grib_set grib_set proc~writelatlon->grib_set Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/writelatlon.html","title":"WRITELATLON – Flex_extract: Calculation of etadot"},{"text":"public subroutine READSPECTRAL(filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) Uses GRIB_API proc~~readspectral~~UsesGraph proc~readspectral READSPECTRAL GRIB_API GRIB_API proc~readspectral->GRIB_API Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Read a GRIB file in spherical harmonics Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1) Calls proc~~readspectral~~CallsGraph proc~readspectral READSPECTRAL grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file grib_close_file grib_close_file proc~readspectral->grib_close_file Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~readspectral~~CalledByGraph proc~readspectral READSPECTRAL program~calc_etadot calc_etadot program~calc_etadot->proc~readspectral Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/readspectral.html","title":"READSPECTRAL – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPH213(CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~grph213~~CallsGraph proc~grph213 GRPH213 ind ind proc~grph213->ind proc~grphsub GRPHSUB proc~grph213->proc~grphsub Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~grph213~~CalledByGraph proc~grph213 GRPH213 program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grph213.html","title":"GRPH213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine GRPHSUB(L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Carries out the transformation from the phase space into the physical\n space on spherical coordinates Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~grphsub~~CalledByGraph proc~grphsub GRPHSUB proc~grph213 GRPH213 proc~grph213->proc~grphsub program~calc_etadot calc_etadot program~calc_etadot->proc~grph213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/grphsub.html","title":"GRPHSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine LGTR213(CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) Calculates the KFFKs (Fourier coefficients) CXMN Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB Contents None","tags":"","loc":"proc/lgtr213.html","title":"LGTR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOUFTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfouftr~~CallsGraph proc~rfouftr RFOUFTR wsave wsave proc~rfouftr->wsave fft99 fft99 proc~rfouftr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfouftr.html","title":"RFOUFTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGR213(CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgr213~~CallsGraph proc~phgr213 PHGR213 proc~phsym PHSYM proc~phgr213->proc~phsym Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgr213~~CalledByGraph proc~phgr213 PHGR213 program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgr213.html","title":"PHGR213 – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYM(K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL Called by proc~~phsym~~CalledByGraph proc~phsym PHSYM proc~phgr213 PHGR213 proc~phgr213->proc~phsym program~calc_etadot calc_etadot program~calc_etadot->proc~phgr213 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsym.html","title":"PHSYM – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGCUT(CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) Carries out the transformation of a field variable from the phase space\n into the physical space on spherical coordinates. It is possible to \n specify a section of the Earth. This subroutine is slower thatn PHGRPH. Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL Calls proc~~phgcut~~CallsGraph proc~phgcut PHGCUT proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgcut~~CalledByGraph proc~phgcut PHGCUT program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgcut.html","title":"PHGCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHSYMCUT(J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF Calls proc~~phsymcut~~CallsGraph proc~phsymcut PHSYMCUT proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phsymcut~~CalledByGraph proc~phsymcut PHSYMCUT proc~phgcut PHGCUT proc~phgcut->proc~phsymcut program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phsymcut.html","title":"PHSYMCUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGPNS(CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL Calls proc~~phgpns~~CallsGraph proc~phgpns PHGPNS proc~rfourtr RFOURTR proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~phgpns~~CalledByGraph proc~phgpns PHGPNS proc~phgcut PHGCUT proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgpns.html","title":"PHGPNS – Flex_extract: Calculation of etadot"},{"text":"public subroutine LEGTR(CXMN, CXM, Z, MNAUF, MAUF) Calculate the Fourier coefficients CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF Contents None","tags":"","loc":"proc/legtr.html","title":"LEGTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine RFOURTR(CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN Calls proc~~rfourtr~~CallsGraph proc~rfourtr RFOURTR fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~rfourtr~~CalledByGraph proc~rfourtr RFOURTR proc~phsymcut PHSYMCUT proc~phsymcut->proc~rfourtr proc~phgpns PHGPNS proc~phgpns->proc~rfourtr proc~phgracut PHGRACUT proc~phgracut->proc~rfourtr proc~phgcut PHGCUT proc~phgcut->proc~phsymcut proc~phgcut->proc~phgpns program~calc_etadot calc_etadot program~calc_etadot->proc~phgcut Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/rfourtr.html","title":"RFOURTR – Flex_extract: Calculation of etadot"},{"text":"public subroutine GAULEG(X1, X2, X, W, N) Calculates the Gaussian latitudes Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N Calls proc~~gauleg~~CallsGraph proc~gauleg GAULEG dcos dcos proc~gauleg->dcos Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Called by proc~~gauleg~~CalledByGraph proc~gauleg GAULEG program~calc_etadot calc_etadot program~calc_etadot->proc~gauleg Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/gauleg.html","title":"GAULEG – Flex_extract: Calculation of etadot"},{"text":"public subroutine PLGNFA(LL, X, Z) Calculates all normalised associated Legendre functions from \n P00(X) to PLL(X) and writes them into the field Z.\n The polynomials have indices as with ECMWF, i.e.\n P00,P10,P11,P20,P21,P22,...\n Otherwise, this subroutine is analogous to PLGNDN Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z Contents None","tags":"","loc":"proc/plgnfa.html","title":"PLGNFA – Flex_extract: Calculation of etadot"},{"text":"public subroutine DPLGND(MNAUF, Z, DZ) Calculates the derivatives of the normalised associated Legendre function \n from P00(X) to PLL(X) and writes them into the field DZ.\n Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ Contents None","tags":"","loc":"proc/dplgnd.html","title":"DPLGND – Flex_extract: Calculation of etadot"},{"text":"public subroutine SPFILTER(FELDMN, MM, MMAX) Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX Calls proc~~spfilter~~CallsGraph proc~spfilter SPFILTER float float proc~spfilter->float alog alog proc~spfilter->alog Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/spfilter.html","title":"SPFILTER – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDTOUV(XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vdtouv~~UsesGraph proc~vdtouv VDTOUV module~phtogr PHTOGR proc~vdtouv->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Calculates scale winds from vorticity and divergence.\n If in XMN the divergence is passed, then the divergent part of the wind\n (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the \n rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.\n Summing both, one obtains the whole scale wind. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vdtouv.html","title":"VDTOUV – Flex_extract: Calculation of etadot"},{"text":"public subroutine VDUVSUB(J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~vduvsub~~UsesGraph proc~vduvsub VDUVSUB module~phtogr PHTOGR proc~vduvsub->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/vduvsub.html","title":"VDUVSUB – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRAD(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Uses PHTOGR proc~~phgrad~~UsesGraph proc~phgrad PHGRAD module~phtogr PHTOGR proc~phgrad->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Calculates the gradient of a scalar from the field of the scalar XMN\n in phase space. Returns fields of the componentens of the horizontal\n gradients XLAM,XPHI on the Gaussian grid. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK Called by proc~~phgrad~~CalledByGraph proc~phgrad PHGRAD program~calc_etadot calc_etadot program~calc_etadot->proc~phgrad Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgrad.html","title":"PHGRAD – Flex_extract: Calculation of etadot"},{"text":"public subroutine PHGRACUT(XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Uses PHTOGR proc~~phgracut~~UsesGraph proc~phgracut PHGRACUT module~phtogr PHTOGR proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Calculated the gradient of a scalar from the field of the scalar XMN \n in phase space. Returns the fields of the components of the horizontal\n gradient XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK Calls proc~~phgracut~~CallsGraph proc~phgracut PHGRACUT proc~rfourtr RFOURTR proc~phgracut->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents None","tags":"","loc":"proc/phgracut.html","title":"PHGRACUT – Flex_extract: Calculation of etadot"},{"text":"public subroutine CONTGL(PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Calculation of divergence from the wind field (U,V)\n in phase space. Returns fields of the componentens of the \n horizontal gradients XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK Contents None","tags":"","loc":"proc/contgl.html","title":"CONTGL – Flex_extract: Calculation of etadot"},{"text":"public subroutine OMEGA(PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) Calculates \\omega in the hybrid ( \\eta -)coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK Contents None","tags":"","loc":"proc/omega.html","title":"OMEGA – Flex_extract: Calculation of etadot"},{"text":"Read or write a field variable on a lat/lon grid from/to GRIB file, or \n read a field in spectral representation from GRIB file Used by module~~rwgrib2~~UsedByGraph module~rwgrib2 RWGRIB2 program~calc_etadot calc_etadot program~calc_etadot->module~rwgrib2 Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines READLATLON WRITELATLON READSPECTRAL Subroutines public subroutine READLATLON (filename, feld, maxl, maxb, mlevel, mpar) Read a field from GRIB file on lat-lon grid Arguments Type Intent Optional Attributes Name character(len=*) :: filename real, dimension(maxl,maxb,mlevel) :: feld integer :: maxl integer :: maxb integer :: mlevel integer :: mpar (:) public subroutine WRITELATLON (IUNIT, igrib, ogrib, FELD, MAXL, MAXB, MLEVEL, MLEVELIST, MSTRIDE, MPAR) write a field on lat-lon grid to GRIB file Arguments Type Intent Optional Attributes Name integer :: IUNIT integer :: igrib integer :: ogrib real :: FELD (MAXL,MAXB,MLEVEL) integer :: MAXL integer :: MAXB integer :: MLEVEL character(len=*) :: MLEVELIST integer :: MSTRIDE integer :: MPAR (MSTRIDE) public subroutine READSPECTRAL (filename, CXMN, mnauf, mlevel, maxlev, mpar, A, B) Read a GRIB file in spherical harmonics Arguments Type Intent Optional Attributes Name character(len=*) :: filename real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) integer :: mnauf integer :: mlevel integer :: maxlev integer :: mpar (:) real :: A (MAXLEV+1) real :: B (MAXLEV+1)","tags":"","loc":"module/rwgrib2.html","title":"RWGRIB2 – Flex_extract: Calculation of etadot"},{"text":"Module for transformation from phase space into physical space Uses PHTOGR module~~grtoph~~UsesGraph module~grtoph GRTOPH module~phtogr PHTOGR module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Used by module~~grtoph~~UsedByGraph module~grtoph GRTOPH program~calc_etadot calc_etadot program~calc_etadot->module~grtoph Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines GRPH213 GRPHSUB LGTR213 RFOUFTR Subroutines public subroutine GRPH213 (CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MLEVEL) real :: WSAVE integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine GRPHSUB (L, IND, CXMN, FELD, WSAVE, IFAX, Z, W, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Carries out the transformation from the phase space into the physical\n space on spherical coordinates Arguments Type Intent Optional Attributes Name integer :: L integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine LGTR213 (CXMN, CXM, Z, W, MLAT, MNAUF, MAXB) Calculates the KFFKs (Fourier coefficients) CXMN Arguments Type Intent Optional Attributes Name real :: CXMN real :: CXM real(kind=8) :: Z (MAXB/2,0:((MNAUF+3)*(MNAUF+4))/2) real(kind=8) :: W (MAXB) integer :: MLAT (MAXB) integer :: MNAUF integer :: MAXB public subroutine RFOUFTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN","tags":"","loc":"module/grtoph.html","title":"GRTOPH – Flex_extract: Calculation of etadot"},{"text":"Module for transformation of a field variable from the phase space\n into the physical space onto the reduced Gaussian grid Used by module~~phtogr~~UsedByGraph module~phtogr PHTOGR proc~vduvsub VDUVSUB proc~vduvsub->module~phtogr program~calc_etadot calc_etadot program~calc_etadot->module~phtogr module~grtoph GRTOPH program~calc_etadot->module~grtoph proc~phgrad PHGRAD proc~phgrad->module~phtogr module~grtoph->module~phtogr proc~vdtouv VDTOUV proc~vdtouv->module~phtogr proc~phgracut PHGRACUT proc~phgracut->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Variables MAXAUF Subroutines PHGR213 PHSYM PHGCUT PHSYMCUT PHGPNS LEGTR RFOURTR GAULEG PLGNFA DPLGND SPFILTER Variables Type Visibility Attributes Name Initial integer, public, parameter :: MAXAUF = 36000 Subroutines public subroutine PHGR213 (CXMN, FELD, WSAVE, IFAX, Z, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYM (K, IND, CXMN, FELD, Z, WSAVE, IFAX, MLAT, MNAUF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name integer :: K integer :: IND (MAXB) real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB/2) real :: WSAVE (8*MAXB+15,MAXB/2) integer :: IFAX (10,MAXB) integer :: MLAT (MAXB/2) integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHGCUT (CXMN, FELD, WSAVE, IFAX, Z, MNAUF, MMAX, MAUF, MANF, MAXL, MAXB, MLEVEL) Carries out the transformation of a field variable from the phase space\n into the physical space on spherical coordinates. It is possible to \n specify a section of the Earth. This subroutine is slower thatn PHGRPH. Arguments Type Intent Optional Attributes Name real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: WSAVE integer :: IFAX (10) real :: Z (0:((MMAX+3)*(MMAX+4))/2,MAXB) integer :: MNAUF integer :: MMAX integer :: MAUF integer :: MANF integer :: MAXL integer :: MAXB integer :: MLEVEL public subroutine PHSYMCUT (J, CXMN, FELD, Z, WSAVE, IFAX, MAUF, MNAUF, MAXL, MAXB, MLEVEL, MANF) Arguments Type Intent Optional Attributes Name integer :: J real :: CXMN real :: FELD (MAXL,MAXB,MLEVEL) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real :: WSAVE integer :: IFAX (10) integer :: MAUF integer :: MNAUF integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: MANF public subroutine PHGPNS (CXMN, FELD, Z, WSAVE, IFAX, J, MNAUF, MAUF, MANF, MAXL, MAXB, MLEVEL) Arguments Type Intent Optional Attributes Name real, intent(in) :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1,MLEVEL) real :: FELD (MAXL,MAXB,MLEVEL) real, intent(in) :: Z (0:((MNAUF+3)*(MNAUF+4))/2,MAXB) real, intent(in) :: WSAVE (4*MAUF+15) integer :: IFAX (10) integer, intent(in) :: J integer, intent(in) :: MNAUF integer, intent(in) :: MAUF integer, intent(in) :: MANF integer, intent(in) :: MAXL integer, intent(in) :: MAXB integer, intent(in) :: MLEVEL public subroutine LEGTR (CXMN, CXM, Z, MNAUF, MAUF) Calculate the Fourier coefficients CXM Arguments Type Intent Optional Attributes Name real :: CXMN (0:(MNAUF+1)*(MNAUF+2)-1) real :: CXM (0:MAXAUF-1) real :: Z (0:((MNAUF+3)*(MNAUF+4))/2) integer :: MNAUF integer :: MAUF public subroutine RFOURTR (CXM, TRIGS, IFAX, MNAUF, MAXL, ISIGN) Calculates the Fourier sum with an FFT algorithm Arguments Type Intent Optional Attributes Name real :: CXM real :: TRIGS (2*MAXL) integer :: IFAX (10) integer :: MNAUF integer :: MAXL integer :: ISIGN public subroutine GAULEG (X1, X2, X, W, N) Calculates the Gaussian latitudes Arguments Type Intent Optional Attributes Name real :: X1 real :: X2 real :: X real :: W integer :: N public subroutine PLGNFA (LL, X, Z) Calculates all normalised associated Legendre functions from \n P00(X) to PLL(X) and writes them into the field Z.\n The polynomials have indices as with ECMWF, i.e.\n P00,P10,P11,P20,P21,P22,...\n Otherwise, this subroutine is analogous to PLGNDN Arguments Type Intent Optional Attributes Name integer :: LL real :: X real :: Z public subroutine DPLGND (MNAUF, Z, DZ) Calculates the derivatives of the normalised associated Legendre function \n from P00(X) to PLL(X) and writes them into the field DZ.\n Order is P00(X),P01(X),P11(X),P02(X),P12(X),P22(X),..PLL(X) Arguments Type Intent Optional Attributes Name integer :: MNAUF real :: Z real :: DZ public subroutine SPFILTER (FELDMN, MM, MMAX) Implements spectral filter of Sardeshmukh and Hoskins (MWR 1984) Arguments Type Intent Optional Attributes Name real :: FELDMN (0:(MM+1)*(MM+2)-1) integer :: MM integer :: MMAX","tags":"","loc":"module/phtogr.html","title":"PHTOGR – Flex_extract: Calculation of etadot"},{"text":"Implementation of the spectral transformation using the reduced Gaussian grid Used by module~~ftrafo~~UsedByGraph module~ftrafo FTRAFO program~calc_etadot calc_etadot program~calc_etadot->module~ftrafo Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Contents Subroutines VDTOUV VDUVSUB PHGRAD PHGRACUT CONTGL OMEGA Subroutines public subroutine VDTOUV (XMN, XLAM, XPHI, GWSAVE, IFAX, P, MLAT, MNAUF, NI, NJ, NK) Calculates scale winds from vorticity and divergence.\n If in XMN the divergence is passed, then the divergent part of the wind\n (XPHI=Ud,XPHI=Vd) is returned. If vorticity is passed, then the \n rotational part of the wind (XLAM=Vrot,XPHI=-Urot) is returned.\n Summing both, one obtains the whole scale wind. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine VDUVSUB (J, XMN, XLAM, XPHI, GWSAVE, IFAX, P, GGIND, MLAT, MNAUF, NI, NJ, NK) Arguments Type Intent Optional Attributes Name integer :: J real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) integer :: GGIND integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRAD (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MLAT, MNAUF, NI, NJ, NK) Calculates the gradient of a scalar from the field of the scalar XMN\n in phase space. Returns fields of the componentens of the horizontal\n gradients XLAM,XPHI on the Gaussian grid. Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NK) real :: XPHI (NI,NK) real :: GWSAVE (8*NJ+15,NJ/2) integer :: IFAX (10,NJ) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ/2) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MLAT (NJ) integer :: MNAUF integer :: NI integer :: NJ integer :: NK public subroutine PHGRACUT (XMN, XLAM, XPHI, GWSAVE, IFAX, P, H, MAUF, MNAUF, NI, NJ, MANF, NK) Calculated the gradient of a scalar from the field of the scalar XMN \n in phase space. Returns the fields of the components of the horizontal\n gradient XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: XMN (0:(MNAUF+1)*(MNAUF+2)-1,NK) real :: XLAM (NI,NJ,NK) real :: XPHI (NI,NJ,NK) real :: GWSAVE (4*MAUF+15) integer :: IFAX (10) real :: P (0:(MNAUF+3)*(MNAUF+4)/2,NJ) real :: H (0:(MNAUF+2)*(MNAUF+3)/2) integer :: MAUF integer :: MNAUF integer :: NI integer :: NJ integer :: MANF integer :: NK public subroutine CONTGL (PS, DPSDL, DPSDM, DIV, U, V, BREITE, ETA, MLAT, A, B, NI, NJ, NK) Calculation of divergence from the wind field (U,V)\n in phase space. Returns fields of the componentens of the \n horizontal gradients XLAM,XPHI on the Gaussian grid Arguments Type Intent Optional Attributes Name real :: PS (NI) real :: DPSDL (NI) real :: DPSDM (NI) real :: DIV (NI,NK) real :: U (NI,NK) real :: V (NI,NK) real :: BREITE (NJ) real :: ETA (NI,NK) integer :: MLAT (NJ) real :: A (NK+1) real :: B (NK+1) integer :: NI integer :: NJ integer :: NK public subroutine OMEGA (PS, DPSDL, DPSDM, DIV, U, V, BREITE, E, MLAT, A, B, NGI, NGJ, MKK) Calculates \\omega in the hybrid ( \\eta -)coordinate system Arguments Type Intent Optional Attributes Name real :: PS (NGI) real :: DPSDL (NGI) real :: DPSDM (NGI) real :: DIV (NGI,MKK) real :: U (NGI,MKK) real :: V (NGI,MKK) real :: BREITE (NGJ) real :: E (NGI,MKK) integer :: MLAT (NGJ) real :: A (MKK+1) real :: B (MKK+1) integer :: NGI integer :: NGJ integer :: MKK","tags":"","loc":"module/ftrafo.html","title":"FTRAFO – Flex_extract: Calculation of etadot"},{"text":"Uses PHTOGR GRTOPH FTRAFO RWGRIB2 GRIB_API program~~calc_etadot~~UsesGraph program~calc_etadot calc_etadot module~phtogr PHTOGR program~calc_etadot->module~phtogr module~rwgrib2 RWGRIB2 program~calc_etadot->module~rwgrib2 module~ftrafo FTRAFO program~calc_etadot->module~ftrafo module~grtoph GRTOPH program~calc_etadot->module~grtoph GRIB_API GRIB_API program~calc_etadot->GRIB_API module~grtoph->module~phtogr Help × Graph Key Nodes of different colours represent the following: Graph Key Module Module Submodule Submodule Subroutine Subroutine Function Function Program Program This Page's Entity This Page's Entity Solid arrows point from a submodule to the (sub)module which it is\n    descended from. Dashed arrows point from a module or program unit to \n    modules which it uses. Prepare input data for FLEXPART, esp. vertical velocity as \n etadot or etadot * dp/deta author: L. Haimberger\n date:   03/2010\n version: V4.0 Program calc_etadot Prepares input data for POP model meteorological preprocessor Calculation of etapoint on a regular \\lambda-\\phi grid and writing U,V,ETAPOINT,T,PS,Q,SD,MSL,TCC,10U, 10V, 2T,2D,LSP,CP,SSHF,SSR, \n EWSS,NSSS to an output file (input and output in GRIB 1 or 2 format). etapoint is defined as the total time derivative of \n  ECMWF vertical coordinate eta multiplied by the derivative\n  of pressure with respect to eta: \\frac{\\mathrm{d}\\eta}{\\mathrm{d}t}\\frac{\\partial p}{\\partial \\eta} Version history and authors: 04/1994: Leopold Haimberger, Gerhard Wotawa 2003-05-11: Alexander Beck 12/2006: L. Haimberger V2.0,\n           handle arbitrary regular grids and T799 resolution data 03/2010: L. Haimberger V4.0,\n           handle GRIB edition 2 fields and T1279 resolution data 04-06/2019: Petra Seibert, \n            beautify code and add FORD documentation 06/2020: Petra Seibert, translate some comments into English\n            comment out writing of VERTICAL.EC Input required: UNIT  FILE      PARAMETER(S)    DATA REPRESENTATION\n\n 11    fort.11   T,U,V           regular lat-lon grid\n 12    fort.12   D               regular lat-lon grid   \n 13    fort.13   LNSP            spherical harmonics\n 14    fort.14   SD,MSL,TCC,10U,                                \n                 10V,2T,2D       regular lat-lon grid     \n 16    fort.16   LSP,CP,SSHF,         \n                 SSR,EWSS,NSSS   regular lat-lon grid\n 17    fort.17   Q               regular lat-lon grid Output produced: UNIT  FILE      PARAMETER(S)      DATA REPRESENTATION\n\n15    fort.15   `U,V,ETA,T,PS,                                  \n                `Q,SD,MSL,TCC,`                                  \n                `10U,10V,2T,2D,`  regular lat-lon grid         \n                `LSP,CP,SSHF,`                                   \n                `SSR,EWSS,NSSS` ALLOCATE VARIABLES Initialise  Legendre transformation on the lat-lon grid Initialisation of fields for FFT and Legendre transformation\n to Gaussian grid and back to phase space\n  read LNSP in SH\n  read u,v in SH\n  Transforming the wind to the Gaussian grid\n  read DIV in SH\n Transform horizontal divergence to the Gaussian grid\n Calculation of the gradient of LNSP (log of surface pressure) on Gaussian grid Calculation of the vertical velocity on the Gaussian grid Calculation of omega on the Gaussian grid READING OF SURFACE PRESSURE READING OF U,V READING OF LNSP on grid READING OF DIVERGENCE Initialise Legendre transformation on the lat-lon grid.\n Without Gaussian grid calculation, \n Legendre polynomials are calculated only for one latitude, to save space READING OF T READING OF SPECIFIC HUMIDITY WRITE MODEL LEVEL DATA TO fort.15 Calls program~~calc_etadot~~CallsGraph program~calc_etadot calc_etadot proc~readspectral READSPECTRAL program~calc_etadot->proc~readspectral proc~phgcut PHGCUT program~calc_etadot->proc~phgcut proc~grph213 GRPH213 program~calc_etadot->proc~grph213 grib_close_file grib_close_file program~calc_etadot->grib_close_file proc~statis STATIS program~calc_etadot->proc~statis proc~phgr213 PHGR213 program~calc_etadot->proc~phgr213 proc~gauleg GAULEG program~calc_etadot->proc~gauleg grib_open_file grib_open_file program~calc_etadot->grib_open_file set99 set99 program~calc_etadot->set99 proc~posnam POSNAM program~calc_etadot->proc~posnam proc~readlatlon READLATLON program~calc_etadot->proc~readlatlon proc~phgrad PHGRAD program~calc_etadot->proc~phgrad proc~readspectral->grib_close_file grib_count_in_file grib_count_in_file proc~readspectral->grib_count_in_file proc~phsymcut PHSYMCUT proc~phgcut->proc~phsymcut proc~phgpns PHGPNS proc~phgcut->proc~phgpns proc~grphsub GRPHSUB proc~grph213->proc~grphsub ind ind proc~grph213->ind proc~phsym PHSYM proc~phgr213->proc~phsym dcos dcos proc~gauleg->dcos proc~readlatlon->grib_close_file proc~readlatlon->grib_count_in_file proc~rfourtr RFOURTR proc~phsymcut->proc~rfourtr proc~phgpns->proc~rfourtr fft99 fft99 proc~rfourtr->fft99 Help × Graph Key Nodes of different colours represent the following: Graph Key Subroutine Subroutine Function Function Interface Interface Unknown Procedure Type Unknown Procedure Type Program Program This Page's Entity This Page's Entity Solid arrows point from a procedure to one which it calls. Dashed \n    arrows point from an interface to procedures which implement that interface.\n    This could include the module procedures in a generic interface or the\n    implementation in a submodule of an interface in a parent module. Contents Variables LNPS Z T UV UV2 QA OM OMR DIV ETA ETAR DPSDL DPSDM PS DPSDT SURF FLUX OROLSM WSAVE H SINL COSL WSAVE2 BREITE GBREITE AK BK pv X1 X2 RMS MW SIG LAM CUA CVA P PP P2 XMN HILFUV LNPMN LNPMN2 LNPMN3 WEIGHT UGVG DG ETAG GWSAVE PSG HILF MLAT MPSURF MPFLUX MPORO MPAR GIFAX PI COSB DAK DBK P00 URLAR8 JMIN1 LLLAR8 MAXBMIN1 PIR8 DCOSB I J K L IERR M LTEST MK NGI NGJ MFLUX MSURF MORO LUNIT LUNIT2 MAXL MAXB MLEVEL LEVOUT LEVMIN LEVMAX MOMEGA MOMEGADIFF MGAUSS MSMOOTH MNAUF META METADIFF MDPDETA METAPAR RLO0 RLO1 RLA0 RLA1 MLEVELIST MAUF MANF IFAX IGRIB iret ogrib FILENAME Variables Type Attributes Name Initial real, ALLOCATABLE, DIMENSION (:,:) :: LNPS real, ALLOCATABLE, DIMENSION (:,:) :: Z real, ALLOCATABLE, DIMENSION (:,:,:) :: T real, ALLOCATABLE, DIMENSION (:,:,:) :: UV real, ALLOCATABLE, DIMENSION (:,:,:) :: UV2 real, ALLOCATABLE, DIMENSION (:,:,:) :: QA real, ALLOCATABLE, DIMENSION (:,:,:) :: OM real, ALLOCATABLE, DIMENSION (:,:,:) :: OMR real, ALLOCATABLE, DIMENSION (:,:,:) :: DIV real, ALLOCATABLE, DIMENSION (:,:,:) :: ETA real, ALLOCATABLE, DIMENSION (:,:,:) :: ETAR real, ALLOCATABLE, DIMENSION (:,:) :: DPSDL real, ALLOCATABLE, DIMENSION (:,:) :: DPSDM real, ALLOCATABLE, DIMENSION (:,:,:) :: PS real, ALLOCATABLE, DIMENSION (:,:,:) :: DPSDT real, ALLOCATABLE, DIMENSION (:,:,:) :: SURF real, ALLOCATABLE, DIMENSION (:,:,:) :: FLUX real, ALLOCATABLE, DIMENSION (:,:,:) :: OROLSM real, ALLOCATABLE, DIMENSION (:) :: WSAVE real, ALLOCATABLE, DIMENSION (:) :: H real, ALLOCATABLE, DIMENSION (:) :: SINL real, ALLOCATABLE, DIMENSION (:) :: COSL real, ALLOCATABLE, DIMENSION (:) :: WSAVE2 real, ALLOCATABLE, DIMENSION (:) :: BREITE real, ALLOCATABLE, DIMENSION (:) :: GBREITE real, ALLOCATABLE, DIMENSION (:) :: AK real, ALLOCATABLE, DIMENSION (:) :: BK real, ALLOCATABLE, DIMENSION (:) :: pv real :: X1 real :: X2 real :: RMS real :: MW real :: SIG real :: LAM real, ALLOCATABLE :: CUA (:,:,:) real, ALLOCATABLE :: CVA (:,:,:) real, ALLOCATABLE, DIMENSION (:,:) :: P real, ALLOCATABLE, DIMENSION (:,:) :: PP real, ALLOCATABLE, DIMENSION (:,:) :: P2 real, ALLOCATABLE, DIMENSION (:,:) :: XMN real, ALLOCATABLE, DIMENSION (:,:) :: HILFUV real, ALLOCATABLE, DIMENSION (:) :: LNPMN real, ALLOCATABLE, DIMENSION (:) :: LNPMN2 real, ALLOCATABLE, DIMENSION (:) :: LNPMN3 real, ALLOCATABLE, DIMENSION (:) :: WEIGHT real, ALLOCATABLE, DIMENSION (:,:) :: UGVG real, ALLOCATABLE, DIMENSION (:,:) :: DG real, ALLOCATABLE, DIMENSION (:,:) :: ETAG real, ALLOCATABLE, DIMENSION (:,:) :: GWSAVE real, ALLOCATABLE, DIMENSION (:) :: PSG real, ALLOCATABLE, DIMENSION (:) :: HILF integer, ALLOCATABLE, DIMENSION (:) :: MLAT integer, ALLOCATABLE, DIMENSION (:) :: MPSURF integer, ALLOCATABLE, DIMENSION (:) :: MPFLUX integer, ALLOCATABLE, DIMENSION (:) :: MPORO integer, ALLOCATABLE, DIMENSION (:) :: MPAR integer, ALLOCATABLE :: GIFAX (:,:) real :: PI real :: COSB real :: DAK real :: DBK real :: P00 real :: URLAR8 real :: JMIN1 real :: LLLAR8 real :: MAXBMIN1 real :: PIR8 real :: DCOSB integer :: I integer :: J integer :: K integer :: L integer :: IERR integer :: M integer :: LTEST integer :: MK integer :: NGI integer :: NGJ integer :: MFLUX integer :: MSURF integer :: MORO integer :: LUNIT integer :: LUNIT2 integer :: MAXL integer :: MAXB integer :: MLEVEL integer :: LEVOUT integer :: LEVMIN integer :: LEVMAX integer :: MOMEGA integer :: MOMEGADIFF integer :: MGAUSS integer :: MSMOOTH integer :: MNAUF integer :: META integer :: METADIFF integer :: MDPDETA integer :: METAPAR real :: RLO0 real :: RLO1 real :: RLA0 real :: RLA1 character(len=300) :: MLEVELIST integer :: MAUF integer :: MANF integer :: IFAX (10) integer :: IGRIB (1) integer :: iret integer :: ogrib character(len=80) :: FILENAME","tags":"","loc":"program/calc_etadot.html","title":"calc_etadot – Flex_extract: Calculation of etadot"}]}
\ No newline at end of file
diff --git a/For_developers/FORD/fmw.md b/For_developers/FORD/fmw.md
index b94ac6e59ad8d1f942735450d21fa2be4aa894f5..20fb9b7f620e768d518a3b91c9f3eafb45a0e849 100644
--- a/For_developers/FORD/fmw.md
+++ b/For_developers/FORD/fmw.md
@@ -1,13 +1,13 @@
 project:          Flex_extract: Calculation of etadot 
-project_website:  https://flexpart.eu/
-project_download: https://www.flexpart.eu/downloads
+project_website:  https://www.flexpart.eu/wiki/FpInputMetEcmwf
+project_download: https://www.flexpart.eu/wiki/FpInputMetEcmwf
 favicon:          ./fp_favicon.png
 src_dir:          ../../Source/Fortran/
 output_dir:       ../../Documentation/html/Documentation/Api/Fortran
 summary:          Calculation of vertical velocity for FLEXPART
 author:           Leopold Haimberger<sup>1</sup>
 author_description: <sup>1</sup>Univ. of Vienna, Dept. of Meteorology & Geophysics
-author_pic:       ./fplogo.jpg
+author_pic:       
 docmark:          !
 predocmark:       >
 media_dir:        ../../Documentation/html/Documentation/Api/Fortran
@@ -24,8 +24,4 @@ source:            public
 graph:             true
 warn:              false
 license:           by
-version:           7.1
-@Note for this version:
-All code transferred to free form.
-Some code cosmetics, should not have any effects
-Rename some source files
+version:           7.1.2
diff --git a/Source/Fortran/posnam.f90 b/Source/Fortran/posnam.f90
index 614bf7f843c6be4c6ae599d8e14a0b5d630174cd..1762ca8542075beb637ce87dd9725bae93ad8284 100644
--- a/Source/Fortran/posnam.f90
+++ b/Source/Fortran/posnam.f90
@@ -1,7 +1,7 @@
   SUBROUTINE POSNAM(KULNAM,CDNAML)
 
- !! position in namelist file.
- ! author:  Mats Hamrud, ECMWF
+ !! Position in namelist file.
+ !! Author:  Mats Hamrud, ECMWF
 
     INTEGER, INTENT(IN)       :: KULNAM
     CHARACTER*(*), INTENT(IN) :: CDNAML
diff --git a/Source/Fortran/rwgrib2.f90 b/Source/Fortran/rwgrib2.f90
index b90d94b575c1fd94a2a095639baaee40c2951ffe..e35b7e355dbc5de2a6ef955e6054503fed862672 100644
--- a/Source/Fortran/rwgrib2.f90
+++ b/Source/Fortran/rwgrib2.f90
@@ -1,5 +1,8 @@
  MODULE RWGRIB2
 
+!! Read or write a field variable on a lat/lon grid from/to GRIB file, or 
+!! read a field in spectral representation from GRIB file
+
  CONTAINS
 
  SUBROUTINE READLATLON(FILENAME,FELD,MAXL,MAXB,MLEVEL,MPAR)
@@ -84,7 +87,7 @@
 
 !      print*,i
    END DO iloop
-!!   write(*,*) 'readlatlon: ',i-1,' records read'
+! !   write(*,*) 'readlatlon: ',i-1,' records read'
  
    DO i=1,n
      call grib_release(igrib(i))
@@ -168,7 +171,7 @@
 
    SUBROUTINE READSPECTRAL(FILENAME,CXMN,MNAUF,MLEVEL,MAXLEV,MPAR,A,B)
 
-!!  read a GRIB file in spherical harmonics
+!!  Read a GRIB file in spherical harmonics
 
    USE GRIB_API
 
@@ -248,7 +251,7 @@
 
    END DO iloop
 
-!!   write(*,*) 'readspectral: ',i-1,' records read'
+! !   write(*,*) 'readspectral: ',i-1,' records read'
  
    DO i=1,n
      call grib_release(igrib(i))
diff --git a/Testing/Regression/FortranEtadot/readme.txt b/Testing/Regression/FortranEtadot/readme.txt
index 9aa57f14935580955ce5aaad237147a711638b3a..3ae8d9658d1ef2ef6b8dc196bf6735ef264c3815 100644
--- a/Testing/Regression/FortranEtadot/readme.txt
+++ b/Testing/Regression/FortranEtadot/readme.txt
@@ -1,11 +1,11 @@
 HOW TO DO REGRESSION TESTS OF THE FORTRAN CODE
 
-1. Go to flex_extract/Testing/Regression/FortranEtadot
+1. Go to flex_extract/Testing/Regression/FortranEtadot (if not yet there)
 2. Download the tarball containing the input files and reference outputs
 2. Untar the tarball
-3. Create a wirking directory: mkdir Work
+3. Create a working directory: mkdir Work
 4. Compile the unmodified Fortran code with makefile_fast and makefile_debug
-   (is in flex_extract/Source/Fortran)
+   (is in flex_extract/Source/Fortran); you may use "build" for that.
 5. Run a regression test to see whether the current Fortran code gives
    output consistent with the reference output.
    If not, carefully check why (machine-dependent small deviation?)