Changeset 101


Ignore:
Timestamp:
06/12/06 10:29:56 (18 years ago)
Author:
pinsard
Message:

start to modify headers of Interpolation *.pro files for better idldoc output

Location:
trunk/SRC
Files:
54 edited

Legend:

Unmodified
Added
Removed
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/angle.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> north stereographic polar projection 
     90 
     91 Compute angles between grid lines and direction of the North 
     92(fom angle.F,v 2.2 in OPA8.2) 
     93</div> 
    9094 
    9195       
     
    102106           
    103107          <dt><p><a href="#_fsnspp"><span class="result">result = </span>fsnspp(<span class="result">plam, pphi</span>, DOUBLE=<span class="result">DOUBLE</span>)</a></p><dt> 
    104           <dd>  NAME:angle.</dd>         
     108          <dd></dd>      
    105109           
    106110          <dt><p><a href="#_angle">angle<span class="result">, fileocemesh, gcosu, gsinu, gcosv, gsinv, gcost, gsint</span>, IODIRECTORY=<span class="result">IODIRECTORY</span>, DOUBLE=<span class="result">DOUBLE</span></a></p><dt> 
     
    121125            <span class="result">result = </span>fsnspp(<span class="result"><a href="#_fsnspp_param_plam">plam</a>, <a href="#_fsnspp_param_pphi">pphi</a></span>, <a href="#_fsnspp_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span>)</p> 
    122126         
    123           <div class="comments"> 
    124  NAME:angle.pro (fom angle.F,v 2.2 in OPA8.2) 
    125  
    126  PURPOSE:Compute angles between grid lines and direction of the North 
    127  
    128  CALLING SEQUENCE:  
    129      angle, fileocemesh, gcosu, gsinu, gcosv, gsinv, gcost, gsint 
    130  
    131  INPUTS: 
    132      fileocemesh a netcdf file that contains (at least): 
    133         glamu, gphiu: longitudes and latitudes at U-points 
    134         glamv, gphiv: longitudes and latitudes at V-points 
    135         glamf, gphif: longitudes and latitudes at F-points 
    136  
    137  KEYWORD PARAMETERS: 
    138  
    139     IODIRECTORY: the directory path where is located fileocemesh 
    140  
    141     /DOUBLE: use double precision (default is float) 
    142  
    143  OUTPUTS: 
     127          <div class="comments"></div> 
     128 
     129          <h3>Return value</h3><div class="value"> 
    144130       gsinu,gcosu : sinus and cosinus of the angle  
    145131       gsinv,gcosv   between north-south direction  
    146132       gsint,gcost   and the j-direction of the mesh 
    147                        
    148  
    149  RESTRICTIONS: to compute the lateral boundary conditions, we assume 
     133</div> 
     134 
     135           
     136            <h3>Parameters</h3> 
     137         
     138             
     139            <h4 id="_fsnspp_param_plam">plam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     140               
     141               
     142               
     143               
     144               
     145               
     146               
     147               
     148            </h4> 
     149         
     150          <div class="comments"></div> 
     151             
     152            <h4 id="_fsnspp_param_pphi">pphi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     153               
     154               
     155               
     156               
     157               
     158               
     159               
     160               
     161            </h4> 
     162         
     163          <div class="comments"></div> 
     164             
     165 
     166           
     167 
     168           
     169 
     170            <h3>Keywords</h3> 
     171             
     172            <h4 id="_fsnspp_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     173               
     174               
     175               
     176               
     177               
     178               
     179               
     180               
     181            </h4> 
     182         
     183            <div class="comments"> use double precision (default is float) 
     184</div> 
     185             
     186           
     187 
     188           
     189          <h3>Version history</h3> 
     190           
     191           
     192          <h4>History</h4><div class="value"> 
     193   -------------- 
     194       Original :  96-07 (O. Marti) 
     195                   98-06 (G. Madec) 
     196       Feb 2005: IDL adaptation S. Masson </div> 
     197           
     198           
     199          <h3>Known issues</h3> 
     200           
     201           
     202           
     203          <h4>Restrictions</h4><div class="value"> to compute the lateral boundary conditions, we assume 
    150204 that:  
    151205     (1) the first line is similar to the second line 
     
    157211       =>    gsinv[0, *] = gsinv[jpj-2, *] 
    158212 
    159  
    160  MODIFICATION HISTORY: 
    161    -------------- 
    162        Original :  96-07 (O. Marti) 
    163                    98-06 (G. Madec) 
    164        Feb 2005: IDL adaptation S. Masson </div> 
    165  
    166            
    167  
    168            
    169             <h3>Parameters</h3> 
    170          
    171              
    172             <h4 id="_fsnspp_param_plam">plam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    173                
    174                
    175                
    176                
    177                
    178                
    179                
    180                
    181             </h4> 
    182          
    183           <div class="comments"></div> 
    184              
    185             <h4 id="_fsnspp_param_pphi">pphi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    186                
    187                
    188                
    189                
    190                
    191                
    192                
    193                
    194             </h4> 
    195          
    196           <div class="comments"></div> 
    197              
    198  
    199            
    200  
    201            
    202  
    203             <h3>Keywords</h3> 
    204              
    205             <h4 id="_fsnspp_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    206                
    207                
    208                
    209                
    210                
    211                
    212                
    213                
    214             </h4> 
    215          
    216             <div class="comments"></div> 
    217              
    218            
    219  
    220            
    221            
    222            
    223            
    224            
    225            
    226            
    227            
    228            
    229            
    230            
    231            
     213</div> 
    232214         
    233215           
     
    260242             
    261243            <h4 id="_angle_param_fileocemesh">fileocemesh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    262                
    263                
    264                
    265                
    266                
    267                
    268                
    269                
    270             </h4> 
    271          
    272           <div class="comments"></div> 
     244              <span class="attr">in</span> 
     245               
     246               
     247              <span class="attr">required</span> 
     248               
     249               
     250               
     251               
     252            </h4> 
     253         
     254          <div class="comments"> a netcdf file that contains (at least): 
     255        glamu, gphiu: longitudes and latitudes at U-points 
     256        glamv, gphiv: longitudes and latitudes at V-points 
     257        glamf, gphif: longitudes and latitudes at F-points 
     258</div> 
    273259             
    274260            <h4 id="_angle_param_gcosu">gcosu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    368354            </h4> 
    369355         
    370             <div class="comments"></div> 
     356            <div class="comments"> the directory path where is located fileocemesh</div> 
    371357             
    372358            <h4 id="_angle_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    381367            </h4> 
    382368         
    383             <div class="comments"></div> 
     369            <div class="comments"> use double precision (default is float)</div> 
    384370             
    385371           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/clickincell.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> click on a map and find in which cell the click was 
     90</div> 
    9091 
    9192       
     
    102103        <div class="routine_details" id="_clickincell"> 
    103104 
    104           <h2><a class="top" href="#container">top</a>clickincell </h2> 
     105          <h2><a class="top" href="#container">top</a>clickincell <span class="categories"> finding where is a point on a grid 
     106</span></h2> 
    105107         
    106108          <p class="header"> 
    107109            <span class="result">result = </span>clickincell(<a href="#_clickincell_keyword_CELLTYPE">CELLTYPE</a>=<span class="result">CELLTYPE</span>, <a href="#_clickincell_keyword_DRAWCELL">DRAWCELL</a>=<span class="result">DRAWCELL</span>, <a href="#_clickincell_keyword_COLOR">COLOR</a>=<span class="result">COLOR</span>, <a href="#_clickincell_keyword_ORIGINAL">ORIGINAL</a>=<span class="result">ORIGINAL</span>, <a href="#_clickincell_keyword_IJ">IJ</a>=<span class="result">IJ</span>, <a href="#_clickincell_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span>)</p> 
    108110         
    109           <div class="comments"> 
    110  NAME:clickincell 
    111  
    112  PURPOSE: click on a map and find in which cell the click was 
    113  
    114  CATEGORY:finding where is a point on a grid 
    115  
    116  CALLING SEQUENCE: 
     111          <div class="comments"></div> 
     112 
     113          <h3>Return value</h3><div class="value"> 
     114     the index of the selected cells regarding to the grid which 
     115     is in memory in the variable of the common. If /ij keyword is 
     116     activated give 2D array (2, n) which are the i,j position of the 
     117     n selected cells.  
     118</div> 
     119 
     120           
     121 
     122           
     123 
     124            <h3>Keywords</h3> 
     125             
     126            <h4 id="_clickincell_keyword_CELLTYPE">CELLTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     127               
     128               
     129               
     130               
     131               
     132               
     133               
     134               
     135            </h4> 
     136         
     137            <div class="comments"> = 'T', 'W', 'U', 'V' or 'F' This this the type of point 
     138     that is located in the center of the cell which the click is 
     139     located. default is T type of cell (with corner defined by F 
     140     points). 
     141</div> 
     142             
     143            <h4 id="_clickincell_keyword_DRAWCELL">DRAWCELL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     144               
     145               
     146               
     147               
     148               
     149               
     150               
     151               
     152            </h4> 
     153         
     154            <div class="comments"> to draw the cell in which we clicked 
     155</div> 
     156             
     157            <h4 id="_clickincell_keyword_COLOR">COLOR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     158               
     159               
     160               
     161               
     162               
     163               
     164               
     165               
     166            </h4> 
     167         
     168            <div class="comments">  the color used to draw the cells (Clicking one more 
     169     time in the same cell will draw the cell with the white color) 
     170</div> 
     171             
     172            <h4 id="_clickincell_keyword_ORIGINAL">ORIGINAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     173               
     174               
     175               
     176               
     177               
     178               
     179               
     180               
     181            </h4> 
     182         
     183            <div class="comments"> to get the position of the cell regarding the original 
     184     grid (with no key_shift, ixminmesh, iyminmesh...) 
     185</div> 
     186             
     187            <h4 id="_clickincell_keyword_IJ">IJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     188               
     189               
     190               
     191               
     192               
     193               
     194               
     195               
     196            </h4> 
     197         
     198            <div class="comments"> see outpus 
     199</div> 
     200             
     201            <h4 id="_clickincell_keyword__EXTRA">_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     202               
     203               
     204               
     205               
     206               
     207               
     208               
     209               
     210            </h4> 
     211         
     212            <div class="comments"> to pass extra keywords to inquad and plot (when /drawcell) 
     213</div> 
     214             
     215           
     216 
     217          <h3>Examples</h3><div class="value">  
    117218 
    118219     res = clickincell() 
     
    121222     Click on the right button to quit.   
    122223 
    123  INPUTS:None 
    124  
    125  KEYWORD PARAMETERS: 
    126  
    127      CELLTYPE = 'T', 'W', 'U', 'V' or 'F': This this the type of point 
    128      that is located in the center of the cell which the click is 
    129      located. default is T type of cell (with corner defined by F 
    130      points). 
    131  
    132      /DRAWCELL: to draw the cell in which we clicked 
    133  
    134      COLOR = the color used to draw the cells (Clicking one more 
    135      time in the same cell will draw the cell with the white color) 
    136  
    137      /ORIGINAL: to get the position of the cell regarding the original 
    138      grid (with no key_shift, ixminmesh, iyminmesh...) 
    139  
    140      /IJ: see outpus 
    141  
    142      _EXTRA: to pass extra keywords to inquad and plot (when /drawcell) 
    143  
    144  OUTPUTS: 
    145      the the index of the selected cells regarding to the grid which 
    146      is in memory in the variable of the common. If /ij keyword is 
    147      activated give 2D array (2, n) which are the i,j position of the 
    148      n selected cells.  
    149  
    150  COMMON BLOCKS:common.pro 
    151  
    152  SIDE EFFECTS: 
    153  
    154  RESTRICTIONS: 
    155  
    156  EXAMPLE: 
     224  
    157225 
    158226   IDL> plt, findgen(jpi,jpj),/nodata,map=[90,0,0],/ortho 
    159227   IDL> print, clickincell(/draw,color=150,/xy) 
    160  
    161  MODIFICATION HISTORY:</div> 
    162  
    163            
    164  
    165            
    166  
    167            
    168  
    169             <h3>Keywords</h3> 
    170              
    171             <h4 id="_clickincell_keyword_CELLTYPE">CELLTYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    172                
    173                
    174                
    175                
    176                
    177                
    178                
    179                
    180             </h4> 
    181          
    182             <div class="comments"></div> 
    183              
    184             <h4 id="_clickincell_keyword_DRAWCELL">DRAWCELL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    185                
    186                
    187                
    188                
    189                
    190                
    191                
    192                
    193             </h4> 
    194          
    195             <div class="comments"></div> 
    196              
    197             <h4 id="_clickincell_keyword_COLOR">COLOR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    198                
    199                
    200                
    201                
    202                
    203                
    204                
    205                
    206             </h4> 
    207          
    208             <div class="comments"></div> 
    209              
    210             <h4 id="_clickincell_keyword_ORIGINAL">ORIGINAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    211                
    212                
    213                
    214                
    215                
    216                
    217                
    218                
    219             </h4> 
    220          
    221             <div class="comments"></div> 
    222              
    223             <h4 id="_clickincell_keyword_IJ">IJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    224                
    225                
    226                
    227                
    228                
    229                
    230                
    231                
    232             </h4> 
    233          
    234             <div class="comments"></div> 
    235              
    236             <h4 id="_clickincell_keyword__EXTRA">_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    237                
    238                
    239                
    240                
    241                
    242                
    243                
    244                
    245             </h4> 
    246          
    247             <div class="comments"></div> 
    248              
    249            
    250  
    251            
    252            
    253            
    254            
    255            
    256            
    257            
    258            
    259            
    260            
    261            
    262            
    263          
    264            
    265            
    266            
    267            
     228</div> 
     229          <h3>Version history</h3> 
     230           
     231           
     232          <h4>History</h4><div class="value"> 
     233      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     234      August 2003 
     235</div> 
     236           
     237           
     238           
     239           
     240           
     241           
     242           
     243         
     244          <h3>Other attributes</h3> 
     245           
     246           
     247          <h4>Uses routines</h4><div class="value"> common.pro 
     248</div> 
    268249           
    269250           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_bilinear_weigaddr.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> compute the weight and address neede to interpolate data from a 
     90          "regular grid" to any grid using the bilinear method 
     91   </div> 
    9092 
    9193       
     
    102104        <div class="routine_details" id="_compute_fromreg_bilinear_weigaddr"> 
    103105 
    104           <h2><a class="top" href="#container">top</a>compute_fromreg_bilinear_weigaddr </h2> 
     106          <h2><a class="top" href="#container">top</a>compute_fromreg_bilinear_weigaddr <span class="categories"> interpolation 
     107</span></h2> 
    105108         
    106109          <p class="header"> 
    107110            compute_fromreg_bilinear_weigaddr<span class="result">, <a href="#_compute_fromreg_bilinear_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_addr">addr</a></span>, <a href="#_compute_fromreg_bilinear_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_compute_fromreg_bilinear_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span></p> 
    108111         
    109           <div class="comments"> 
    110  NAME: compute_fromreg_bilinear_weigaddr 
    111  
    112  PURPOSE: compute the weight and address neede to interpolate data from a 
    113           "regular grid" to any grid using the bilinear method 
    114     
    115  CATEGORY:interpolation 
    116  
    117  CALLING SEQUENCE:  
    118      compute_fromreg_bilinear_weigaddr, alon, alat, olon, olat, weig, addr 
    119  
    120  INPUTS: 
    121      lonin and latin: longitude/latitude of the input data  
    122      lonout and latout: longitude/latitude of the output data  
    123  
    124  KEYWORD PARAMETERS:  
    125  
    126      /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 
    127           account the northen/southern line of the input data when perfoming the 
    128           interpolation. 
    129  
    130  OUTPUTS:  
     112          <div class="comments"></div> 
     113 
     114          <h3>Return value</h3><div class="value">  
    131115     weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    132116     perform the interpolation: 
    133117          dataout = total(weig*datain[addr], 1) 
    134118          dataout = reform(dataout, jpio, jpjo, /over) 
    135  
    136  COMMON BLOCKS: none 
    137  
    138  SIDE EFFECTS: ? 
    139  
    140  RESTRICTIONS: 
     119</div> 
     120 
     121           
     122            <h3>Parameters</h3> 
     123         
     124             
     125            <h4 id="_compute_fromreg_bilinear_weigaddr_param_alonin">alonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     126              <span class="attr">in</span> 
     127               
     128               
     129              <span class="attr">required</span> 
     130               
     131               
     132               
     133               
     134            </h4> 
     135         
     136          <div class="comments"> longitudeof the input data </div> 
     137             
     138            <h4 id="_compute_fromreg_bilinear_weigaddr_param_alatin">alatin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     139              <span class="attr">in</span> 
     140               
     141               
     142              <span class="attr">required</span> 
     143               
     144               
     145               
     146               
     147            </h4> 
     148         
     149          <div class="comments"> latitude of the input data </div> 
     150             
     151            <h4 id="_compute_fromreg_bilinear_weigaddr_param_olonin">olonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     152              <span class="attr">in</span> 
     153               
     154               
     155              <span class="attr">required</span> 
     156               
     157               
     158               
     159               
     160            </h4> 
     161         
     162          <div class="comments"> longitude of the output data </div> 
     163             
     164            <h4 id="_compute_fromreg_bilinear_weigaddr_param_olat">olat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     165              <span class="attr">in</span> 
     166               
     167               
     168              <span class="attr">required</span> 
     169               
     170               
     171               
     172               
     173            </h4> 
     174         
     175          <div class="comments"> latitude of the output data  
     176</div> 
     177             
     178            <h4 id="_compute_fromreg_bilinear_weigaddr_param_weig">weig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     179               
     180               
     181               
     182               
     183               
     184               
     185               
     186               
     187            </h4> 
     188         
     189          <div class="comments"></div> 
     190             
     191            <h4 id="_compute_fromreg_bilinear_weigaddr_param_addr">addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     192               
     193               
     194               
     195               
     196               
     197               
     198               
     199               
     200            </h4> 
     201         
     202          <div class="comments"></div> 
     203             
     204 
     205           
     206 
     207           
     208 
     209            <h3>Keywords</h3> 
     210             
     211            <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     212               
     213               
     214               
     215               
     216               
     217               
     218               
     219               
     220            </h4> 
     221         
     222            <div class="comments"> activate if you don't whant to take into 
     223          account the northen line of the input data when perfoming the</div> 
     224             
     225            <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     226               
     227               
     228               
     229               
     230               
     231               
     232               
     233               
     234            </h4> 
     235         
     236            <div class="comments"> activate if you don't whant to take into 
     237          account the southern line of the input data when perfoming the 
     238          interpolation. 
     239</div> 
     240             
     241           
     242 
     243           
     244          <h3>Version history</h3> 
     245           
     246           
     247          <h4>History</h4><div class="value"></div> 
     248           
     249           
     250          <h3>Known issues</h3> 
     251           
     252           
     253           
     254          <h4>Restrictions</h4><div class="value"> 
    141255  -  the input grid must be a "regular grid", defined as a grid for which each 
    142256     lontitudes lines have the same latitude and each latitudes columns have the 
     
    146260  -  points located out of the southern and northern boundaries are interpolated 
    147261     using a linear interpolation only along the longitudinal direction. 
    148   
    149  EXAMPLE:  
    150  
    151  MODIFICATION HISTORY:</div> 
    152  
    153            
    154  
    155            
    156             <h3>Parameters</h3> 
    157          
    158              
    159             <h4 id="_compute_fromreg_bilinear_weigaddr_param_alonin">alonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    160                
    161                
    162                
    163                
    164                
    165                
    166                
    167                
    168             </h4> 
    169          
    170           <div class="comments"></div> 
    171              
    172             <h4 id="_compute_fromreg_bilinear_weigaddr_param_alatin">alatin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    173                
    174                
    175                
    176                
    177                
    178                
    179                
    180                
    181             </h4> 
    182          
    183           <div class="comments"></div> 
    184              
    185             <h4 id="_compute_fromreg_bilinear_weigaddr_param_olonin">olonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    186                
    187                
    188                
    189                
    190                
    191                
    192                
    193                
    194             </h4> 
    195          
    196           <div class="comments"></div> 
    197              
    198             <h4 id="_compute_fromreg_bilinear_weigaddr_param_olat">olat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    199                
    200                
    201                
    202                
    203                
    204                
    205                
    206                
    207             </h4> 
    208          
    209           <div class="comments"></div> 
    210              
    211             <h4 id="_compute_fromreg_bilinear_weigaddr_param_weig">weig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    212                
    213                
    214                
    215                
    216                
    217                
    218                
    219                
    220             </h4> 
    221          
    222           <div class="comments"></div> 
    223              
    224             <h4 id="_compute_fromreg_bilinear_weigaddr_param_addr">addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    225                
    226                
    227                
    228                
    229                
    230                
    231                
    232                
    233             </h4> 
    234          
    235           <div class="comments"></div> 
    236              
    237  
    238            
    239  
    240            
    241  
    242             <h3>Keywords</h3> 
    243              
    244             <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    245                
    246                
    247                
    248                
    249                
    250                
    251                
    252                
    253             </h4> 
    254          
    255             <div class="comments"></div> 
    256              
    257             <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    258                
    259                
    260                
    261                
    262                
    263                
    264                
    265                
    266             </h4> 
    267          
    268             <div class="comments"></div> 
    269              
    270            
    271  
    272            
    273            
    274            
    275            
    276            
    277            
    278            
    279            
    280            
    281            
    282            
    283            
     262 </div> 
    284263         
    285264           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_imoms3_weigaddr.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> compute the weight and address neede to interpolate data from a 
     90          "regular grid" to any grid using the imoms3 method 
     91   </div> 
    9092 
    9193       
     
    102104        <div class="routine_details" id="_compute_fromreg_imoms3_weigaddr"> 
    103105 
    104           <h2><a class="top" href="#container">top</a>compute_fromreg_imoms3_weigaddr </h2> 
     106          <h2><a class="top" href="#container">top</a>compute_fromreg_imoms3_weigaddr <span class="categories"> interpolation</span></h2> 
    105107         
    106108          <p class="header"> 
    107             compute_fromreg_imoms3_weigaddr<span class="result">, <a href="#_compute_fromreg_imoms3_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_addr">addr</a></span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span></p> 
     109            compute_fromreg_imoms3_weigaddr<span class="result">, <a href="#_compute_fromreg_imoms3_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_addr  PRO compute_fromreg_imoms3_weigaddr">addr  PRO compute_fromreg_imoms3_weigaddr</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_addr">addr</a></span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span></p> 
    108110         
    109111          <div class="comments"> 
    110  NAME: compute_fromreg_imoms3_weigaddr 
    111  
    112  PURPOSE: compute the weight and address neede to interpolate data from a 
    113           "regular grid" to any grid using the imoms3 method 
    114     
    115  CATEGORY:interpolation 
    116  
    117  CALLING SEQUENCE:  
    118      compute_fromreg_imoms3_weigaddr, alon, alat, olon, olat, weig, addr 
    119  
    120  INPUTS: 
    121      lonin and latin: longitude/latitude of the input data  
    122      lonout and latout: longitude/latitude of the output data  
    123  
    124  KEYWORD PARAMETERS:  
    125  
    126      /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 
    127           account the northen/southern line of the input data when perfoming the 
    128           interpolation. 
    129  
    130  OUTPUTS:  
    131      weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    132      perform the interpolation: 
    133           dataout = total(weig*datain[addr], 1) 
    134           dataout = reform(dataout, jpio, jpjo, /over) 
    135  
    136  COMMON BLOCKS: none 
    137  
    138  SIDE EFFECTS: ? 
    139  
    140  RESTRICTIONS: 
    141   -  the input grid must be a "regular/rectangular grid", defined as a grid for 
    142      which each lontitudes lines have the same latitude and each latitudes columns 
    143      have the same longitude. 
    144   -  We supposed the data are located on a sphere, with a periodicity along 
    145      the longitude. 
    146   -  points located between the first/last 2 lines are interpolated 
    147      using a imoms3 interpolation along the longitudinal direction and linear 
    148      interpolation along the latitudinal direction 
    149   -  points located out of the southern and northern boundaries are interpolated 
    150      using a imoms3 interpolation only along the longitudinal direction. 
    151   
    152  EXAMPLE:  
    153  
    154  MODIFICATION HISTORY:</div> 
     112</div> 
    155113 
    156114           
     
    159117            <h3>Parameters</h3> 
    160118         
     119             
     120            <h4 id="_compute_fromreg_imoms3_weigaddr_param_alonin">alonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     121               
     122               
     123               
     124               
     125               
     126               
     127               
     128               
     129            </h4> 
     130         
     131          <div class="comments"></div> 
     132             
     133            <h4 id="_compute_fromreg_imoms3_weigaddr_param_alatin">alatin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     134               
     135               
     136               
     137               
     138               
     139               
     140               
     141               
     142            </h4> 
     143         
     144          <div class="comments"></div> 
     145             
     146            <h4 id="_compute_fromreg_imoms3_weigaddr_param_olonin">olonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     147               
     148               
     149               
     150               
     151               
     152               
     153               
     154               
     155            </h4> 
     156         
     157          <div class="comments"></div> 
     158             
     159            <h4 id="_compute_fromreg_imoms3_weigaddr_param_olat">olat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     160               
     161               
     162               
     163               
     164               
     165               
     166               
     167               
     168            </h4> 
     169         
     170          <div class="comments"></div> 
     171             
     172            <h4 id="_compute_fromreg_imoms3_weigaddr_param_weig">weig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     173               
     174               
     175               
     176               
     177               
     178               
     179               
     180               
     181            </h4> 
     182         
     183          <div class="comments"></div> 
     184             
     185            <h4 id="_compute_fromreg_imoms3_weigaddr_param_addr  PRO compute_fromreg_imoms3_weigaddr">addr  PRO compute_fromreg_imoms3_weigaddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     186               
     187               
     188               
     189               
     190               
     191               
     192               
     193               
     194            </h4> 
     195         
     196          <div class="comments"></div> 
    161197             
    162198            <h4 id="_compute_fromreg_imoms3_weigaddr_param_alonin">alonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/cutpar.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> cut p parallelogram(s) into p*n^2 parallelograms 
     90</div> 
    9091 
    9192       
     
    102103        <div class="routine_details" id="_cutpar"> 
    103104 
    104           <h2><a class="top" href="#container">top</a>cutpar </h2> 
     105          <h2><a class="top" href="#container">top</a>cutpar <span class="categories"> basic work 
     106</span></h2> 
    105107         
    106108          <p class="header"> 
     
    108110         
    109111          <div class="comments"> 
    110  NAME: cutpar 
    111  
    112  PURPOSE: cut p parallelogram(s) into p*n^2 parallelograms 
    113  
    114  CATEGORY: basic work 
    115  
    116  CALLING SEQUENCE:res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
    117  
    118  INPUTS: 
    119        x0,y0 1d arrays of p elements, giving the edge positions. The 
    120        edges must be given as in plot to traw the parallelogram. (see 
    121        example). 
    122        n: each parallelogram will be cutted in n^2 pieces 
    123  
    124  KEYWORD PARAMETERS:  
    125  
    126          /endpoints: see outputs 
    127  
    128          /onsphere: to specify that the points are located on a 
    129          sphere. In this case, x and y corresponds to longitude and 
    130          latitude in degrees. 
    131  
    132  OUTPUTS: 
     112</div> 
     113 
     114          <h3>Return value</h3><div class="value"> 
    133115        -defaut: 3d array(2,n^2,p) giving the center position of each 
    134116        piece of the parallelograms 
    135117        -/endpoints: 3d array(2,(n+1)^2,p) giving the edge positions 
    136118        of each piece of the parallelograms 
    137  
    138  COMMON BLOCKS: no 
    139  
    140  SIDE EFFECTS: need cutsegment.pro 
    141  
    142  RESTRICTIONS: ? 
    143  
    144  EXAMPLE: 
     119</div> 
     120 
     121           
     122            <h3>Parameters</h3> 
     123         
     124             
     125            <h4 id="_cutpar_param_x0">x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     126              <span class="attr">in</span> 
     127               
     128               
     129              <span class="attr">required</span> 
     130               
     131               
     132               
     133               
     134            </h4> 
     135         
     136          <div class="comments"> 1d arrays of p elements, giving the edge positions. The 
     137       edges must be given as in plot to traw the parallelogram. (see 
     138       example).</div> 
     139             
     140            <h4 id="_cutpar_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     141               
     142               
     143               
     144               
     145               
     146               
     147               
     148               
     149            </h4> 
     150         
     151          <div class="comments"></div> 
     152             
     153            <h4 id="_cutpar_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     154               
     155               
     156               
     157               
     158               
     159               
     160               
     161               
     162            </h4> 
     163         
     164          <div class="comments"></div> 
     165             
     166            <h4 id="_cutpar_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     167               
     168               
     169               
     170               
     171               
     172               
     173               
     174               
     175            </h4> 
     176         
     177          <div class="comments"></div> 
     178             
     179            <h4 id="_cutpar_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     180               
     181               
     182               
     183               
     184               
     185               
     186               
     187               
     188            </h4> 
     189         
     190          <div class="comments"></div> 
     191             
     192            <h4 id="_cutpar_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     193               
     194               
     195               
     196               
     197               
     198               
     199               
     200               
     201            </h4> 
     202         
     203          <div class="comments"></div> 
     204             
     205            <h4 id="_cutpar_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     206               
     207               
     208               
     209               
     210               
     211               
     212               
     213               
     214            </h4> 
     215         
     216          <div class="comments"></div> 
     217             
     218            <h4 id="_cutpar_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     219               
     220               
     221               
     222               
     223               
     224               
     225               
     226               
     227            </h4> 
     228         
     229          <div class="comments"></div> 
     230             
     231            <h4 id="_cutpar_param_n">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     232              <span class="attr">in</span> 
     233               
     234               
     235              <span class="attr">required</span> 
     236               
     237               
     238               
     239               
     240            </h4> 
     241         
     242          <div class="comments"> each parallelogram will be cutted in n^2 pieces 
     243</div> 
     244             
     245 
     246           
     247 
     248           
     249 
     250            <h3>Keywords</h3> 
     251             
     252            <h4 id="_cutpar_keyword_endpoints">endpoints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     253               
     254               
     255               
     256               
     257               
     258               
     259               
     260               
     261            </h4> 
     262         
     263            <div class="comments"> see outputs 
     264</div> 
     265             
     266            <h4 id="_cutpar_keyword_onsphere">onsphere&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     267               
     268               
     269               
     270               
     271               
     272               
     273               
     274               
     275            </h4> 
     276         
     277            <div class="comments"> to specify that the points are located on a 
     278         sphere. In this case, x and y corresponds to longitude and 
     279         latitude in degrees. 
     280</div> 
     281             
     282           
     283 
     284          <h3>Examples</h3><div class="value">  
     285 res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
     286 
     287  
    145288 
    146289 x0 = [2,6,2] 
     
    157300 res=cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
    158301 for i=0,2 do oplot, [res[0,*,i]], [res[1,*,i]], color = 20+10*i, psym = 1, thick = 3 
    159  
    160  MODIFICATION HISTORY:</div> 
    161  
    162            
    163  
    164            
    165             <h3>Parameters</h3> 
    166          
    167              
    168             <h4 id="_cutpar_param_x0">x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    169                
    170                
    171                
    172                
    173                
    174                
    175                
    176                
    177             </h4> 
    178          
    179           <div class="comments"></div> 
    180              
    181             <h4 id="_cutpar_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    182                
    183                
    184                
    185                
    186                
    187                
    188                
    189                
    190             </h4> 
    191          
    192           <div class="comments"></div> 
    193              
    194             <h4 id="_cutpar_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    195                
    196                
    197                
    198                
    199                
    200                
    201                
    202                
    203             </h4> 
    204          
    205           <div class="comments"></div> 
    206              
    207             <h4 id="_cutpar_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    208                
    209                
    210                
    211                
    212                
    213                
    214                
    215                
    216             </h4> 
    217          
    218           <div class="comments"></div> 
    219              
    220             <h4 id="_cutpar_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    221                
    222                
    223                
    224                
    225                
    226                
    227                
    228                
    229             </h4> 
    230          
    231           <div class="comments"></div> 
    232              
    233             <h4 id="_cutpar_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    234                
    235                
    236                
    237                
    238                
    239                
    240                
    241                
    242             </h4> 
    243          
    244           <div class="comments"></div> 
    245              
    246             <h4 id="_cutpar_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    247                
    248                
    249                
    250                
    251                
    252                
    253                
    254                
    255             </h4> 
    256          
    257           <div class="comments"></div> 
    258              
    259             <h4 id="_cutpar_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    260                
    261                
    262                
    263                
    264                
    265                
    266                
    267                
    268             </h4> 
    269          
    270           <div class="comments"></div> 
    271              
    272             <h4 id="_cutpar_param_n">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    273                
    274                
    275                
    276                
    277                
    278                
    279                
    280                
    281             </h4> 
    282          
    283           <div class="comments"></div> 
    284              
    285  
    286            
    287  
    288            
    289  
    290             <h3>Keywords</h3> 
    291              
    292             <h4 id="_cutpar_keyword_endpoints">endpoints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    293                
    294                
    295                
    296                
    297                
    298                
    299                
    300                
    301             </h4> 
    302          
    303             <div class="comments"></div> 
    304              
    305             <h4 id="_cutpar_keyword_onsphere">onsphere&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    306                
    307                
    308                
    309                
    310                
    311                
    312                
    313                
    314             </h4> 
    315          
    316             <div class="comments"></div> 
    317              
    318            
    319  
    320            
    321            
    322            
    323            
    324            
    325            
    326            
    327            
    328            
    329            
    330            
    331            
    332          
    333            
    334            
    335            
    336            
     302</div> 
     303          <h3>Version history</h3> 
     304           
     305           
     306          <h4>History</h4><div class="value"> 
     307           S. Masson (smasson@lodyc.jussieu.fr) 
     308           July 5th, 2002</div> 
     309           
     310           
     311           
     312           
     313           
     314           
     315           
     316         
     317          <h3>Other attributes</h3> 
     318           
     319           
     320          <h4>Uses routines</h4><div class="value"> cutsegment.pro 
     321</div> 
    337322           
    338323           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/cutsegment.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> cut p segments into p*n equal parts 
     90</div> 
    9091 
    9192       
     
    102103        <div class="routine_details" id="_cutsegment"> 
    103104 
    104           <h2><a class="top" href="#container">top</a>cutsegment </h2> 
     105          <h2><a class="top" href="#container">top</a>cutsegment <span class="categories"> basic work 
     106</span></h2> 
    105107         
    106108          <p class="header"> 
     
    108110         
    109111          <div class="comments"> 
    110  NAME: cutsegment 
    111  
    112  PURPOSE: cut p segments into p*n equal parts 
    113  
    114  CATEGORY: basic work 
    115  
    116  CALLING SEQUENCE: res = cutsegment(x0, y0, x1, y1, n) 
    117  
    118  INPUTS:  
    119          x0,y0 and x1,y1, 1d arrays of p elements, the coordinates of 
    120          the endpoints of the p segmements 
    121          n: the number of pieces we want to cut each segment 
    122  
    123  KEYWORD PARAMETERS: 
    124  
    125          /endpoints: see ouputs 
    126  
    127          /onsphere: to specify that the points are located on a 
    128          sphere. In this case, x and y corresponds to longitude and 
    129          latitude in degrees. 
    130  
    131  OUTPUTS: 
     112</div> 
     113 
     114          <h3>Return value</h3><div class="value"> 
    132115        defaut: a 3d array (2,n,p) that gives the coordinates of the 
    133116        middle of the cutted segments. 
    134117        if /endpoints, a 3d array (2,n+1,p) that gives the 
    135118        coordinates of the endpoints of the cutted segments. 
    136  
    137  COMMON BLOCKS: no 
    138  
    139  SIDE EFFECTS: no 
    140  
    141  RESTRICTIONS: ? 
    142  
    143  EXAMPLE: 
     119</div> 
     120 
     121           
     122            <h3>Parameters</h3> 
     123         
     124             
     125            <h4 id="_cutsegment_param_x0">x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     126              <span class="attr">in</span> 
     127               
     128               
     129              <span class="attr">required</span> 
     130               
     131               
     132               
     133               
     134            </h4> 
     135         
     136          <div class="comments">  1d arrays of p elements, the coordinates of 
     137         the endpoints of the p segmements</div> 
     138             
     139            <h4 id="_cutsegment_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     140               
     141               
     142               
     143               
     144               
     145               
     146               
     147               
     148            </h4> 
     149         
     150          <div class="comments"></div> 
     151             
     152            <h4 id="_cutsegment_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     153               
     154               
     155               
     156               
     157               
     158               
     159               
     160               
     161            </h4> 
     162         
     163          <div class="comments"></div> 
     164             
     165            <h4 id="_cutsegment_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     166               
     167               
     168               
     169               
     170               
     171               
     172               
     173               
     174            </h4> 
     175         
     176          <div class="comments"></div> 
     177             
     178            <h4 id="_cutsegment_param_n">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     179              <span class="attr">in</span> 
     180               
     181               
     182              <span class="attr">required</span> 
     183               
     184               
     185               
     186               
     187            </h4> 
     188         
     189          <div class="comments">  the number of pieces we want to cut each segment 
     190 
     191</div> 
     192             
     193 
     194           
     195 
     196           
     197 
     198            <h3>Keywords</h3> 
     199             
     200            <h4 id="_cutsegment_keyword_endpoints">endpoints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     201               
     202               
     203               
     204               
     205               
     206               
     207               
     208               
     209            </h4> 
     210         
     211            <div class="comments"> see ouputs 
     212</div> 
     213             
     214            <h4 id="_cutsegment_keyword_onsphere">onsphere&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     215               
     216               
     217               
     218               
     219               
     220               
     221               
     222               
     223            </h4> 
     224         
     225            <div class="comments"> to specify that the points are located on a 
     226         sphere. In this case, x and y corresponds to longitude and 
     227         latitude in degrees. 
     228</div> 
     229             
     230           
     231 
     232          <h3>Examples</h3><div class="value">   
     233 res = cutsegment(x0, y0, x1, y1, n) 
     234 
     235  
    144236 
    145237  IDL> x0=[2,5] 
     
    153245  IDL> oplot, [x0[1], x1[1]], [y0[1], y1[1]] 
    154246  IDL> oplot, [res[0,*,1]], [res[1,*,1]], color = 40, psym = 1, thick = 3 
    155  
    156  MODIFICATION HISTORY:</div> 
    157  
    158            
    159  
    160            
    161             <h3>Parameters</h3> 
    162          
    163              
    164             <h4 id="_cutsegment_param_x0">x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    165                
    166                
    167                
    168                
    169                
    170                
    171                
    172                
    173             </h4> 
    174          
    175           <div class="comments"></div> 
    176              
    177             <h4 id="_cutsegment_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    178                
    179                
    180                
    181                
    182                
    183                
    184                
    185                
    186             </h4> 
    187          
    188           <div class="comments"></div> 
    189              
    190             <h4 id="_cutsegment_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    191                
    192                
    193                
    194                
    195                
    196                
    197                
    198                
    199             </h4> 
    200          
    201           <div class="comments"></div> 
    202              
    203             <h4 id="_cutsegment_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    204                
    205                
    206                
    207                
    208                
    209                
    210                
    211                
    212             </h4> 
    213          
    214           <div class="comments"></div> 
    215              
    216             <h4 id="_cutsegment_param_n">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    217                
    218                
    219                
    220                
    221                
    222                
    223                
    224                
    225             </h4> 
    226          
    227           <div class="comments"></div> 
    228              
    229  
    230            
    231  
    232            
    233  
    234             <h3>Keywords</h3> 
    235              
    236             <h4 id="_cutsegment_keyword_endpoints">endpoints&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    237                
    238                
    239                
    240                
    241                
    242                
    243                
    244                
    245             </h4> 
    246          
    247             <div class="comments"></div> 
    248              
    249             <h4 id="_cutsegment_keyword_onsphere">onsphere&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    250                
    251                
    252                
    253                
    254                
    255                
    256                
    257                
    258             </h4> 
    259          
    260             <div class="comments"></div> 
    261              
    262            
    263  
    264            
    265            
    266            
    267            
    268            
     247</div> 
     248          <h3>Version history</h3> 
     249           
     250           
     251          <h4>History</h4><div class="value"> 
     252           S. Masson (smasson@lodyc.jussieu.fr) 
     253           July 5th, 2002</div> 
    269254           
    270255           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/directory-overview.html

    r89 r101  
    9090       
    9191        <dt><a href="angle.html?format=raw">angle.pro</a></dt> 
    92         <dd></dd> 
     92        <dd> north stereographic polar projection   Compute angles between grid lines and direction of the North (fom angle.</dd> 
    9393       
    9494        <dt><a href="clickincell.html?format=raw">clickincell.pro</a></dt> 
    95         <dd></dd> 
     95        <dd> click on a map and find in which cell the click was </dd> 
    9696       
    9797        <dt><a href="compute_fromreg_bilinear_weigaddr.html?format=raw">compute_fromreg_bilinear_weigaddr.pro</a></dt> 
    98         <dd></dd> 
     98        <dd> compute the weight and address neede to interpolate data from a           "regular grid" to any grid using the bilinear method    </dd> 
    9999       
    100100        <dt><a href="compute_fromreg_imoms3_weigaddr.html?format=raw">compute_fromreg_imoms3_weigaddr.pro</a></dt> 
    101         <dd></dd> 
     101        <dd> compute the weight and address neede to interpolate data from a           "regular grid" to any grid using the imoms3 method    </dd> 
    102102       
    103103        <dt><a href="cutpar.html?format=raw">cutpar.pro</a></dt> 
    104         <dd></dd> 
     104        <dd> cut p parallelogram(s) into p*n^2 parallelograms </dd> 
    105105       
    106106        <dt><a href="cutsegment.html?format=raw">cutsegment.pro</a></dt> 
    107         <dd></dd> 
     107        <dd> cut p segments into p*n equal parts </dd> 
    108108       
    109109        <dt><a href="extrapolate.html?format=raw">extrapolate.pro</a></dt> 
    110         <dd></dd> 
     110        <dd> extrapolate data (zinput) where maskinput eq 0 by filling step by  step the coastline points with the mean value of the 8 neighbourgs.</dd> 
    111111       
    112112        <dt><a href="fromreg.html?format=raw">fromreg.pro</a></dt> 
    113         <dd></dd> 
     113        <dd> interpolate data from a "regular/rectangular grid" to any grid.</dd> 
    114114       
    115115        <dt><a href="get_gridparams.html?format=raw">get_gridparams.pro</a></dt> 
    116         <dd></dd> 
     116        <dd>     1) extract from a NetCDF file the longitude, latidude, and their dimensions       and make sure it is 1D or 2D arrays         or 2) given longitude and latitude arrays get their dimensions and make sure        they are 1D or 2D arrays  </dd> 
    117117       
    118118        <dt><a href="imoms3.html?format=raw">imoms3.pro</a></dt> 
     
    120120       
    121121        <dt><a href="inquad.html?format=raw">inquad.pro</a></dt> 
    122         <dd></dd> 
     122        <dd> to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) </dd> 
    123123       
    124124        <dt><a href="inrecgrid.html?format=raw">inrecgrid.pro</a></dt> 
    125         <dd></dd> 
     125        <dd> given - a list of points, (x,y) position                   - the x and y limits of a rectangular grid           find in which cell is located each given point.</dd> 
    126126       
    127127        <dt><a href="ll_narcs_distances.html?format=raw">ll_narcs_distances.pro</a></dt> 
    128         <dd></dd> 
     128        <dd>  This function returns the longitude and latitude [lon, lat] of a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), from a specified location Lon0, lat0.</dd> 
    129129       
    130130        <dt><a href="map_npoints.html?format=raw">map_npoints.pro</a></dt> 
    131         <dd></dd> 
     131        <dd> Return the distance in meter between all np0 points P0 and all        np1 points P1 on a sphere.</dd> 
    132132       
    133133        <dt><a href="neighbor.html?format=raw">neighbor.pro</a></dt> 
    134         <dd></dd> 
     134        <dd> find the closetest point of (P0) within a list of np1 points P1 Which can be on a sphere  </dd> 
    135135       
    136136        <dt><a href="quadrilateral2square.html?format=raw">quadrilateral2square.pro</a></dt> 
    137         <dd></dd> 
     137        <dd> warm (or map) an arbitrary quadrilateral onto a unit square   according to the 4-point correspondences:        (x0,y0) -> (0,0)        (x1,y1) -> (1,0)        (x2,y2) -> (1,1)        (x3,y3) -> (0,1)  This is the inverse function of square2quadrilateral.</dd> 
    138138       
    139139        <dt><a href="spl_fstdrv.html?format=raw">spl_fstdrv.pro</a></dt> 
    140         <dd></dd> 
     140        <dd> SPL_FSTDRV returns the values of the first derivative of  the interpolating function at the points X2i.</dd> 
    141141       
    142142        <dt><a href="spl_incr.html?format=raw">spl_incr.pro</a></dt> 
    143         <dd></dd> 
     143        <dd>   Given the arrays X and Y, which tabulate a function (with the X[i]  AND Y[i] in ascending order), and given an input value X2, the  SPL_INCR function returns an interpolated value for the given values  of X2.</dd> 
    144144       
    145145        <dt><a href="spl_keep_mean.html?format=raw">spl_keep_mean.pro</a></dt> 
    146         <dd></dd> 
     146        <dd>   Given the arrays X and Y, which tabulate a function (with the X[i]  AND Y[i] in ascending order), and given an input value X2, the  SPL_INCR function returns an interpolated value for the given values  of X2.</dd> 
    147147       
    148148        <dt><a href="square2quadrilateral.html?format=raw">square2quadrilateral.pro</a></dt> 
    149         <dd></dd> 
     149        <dd> warm (or map) a unit square onto an arbitrary quadrilateral  according to the 4-point correspondences:        (0,0) -> (x0,y0)        (1,0) -> (x1,y1)        (1,1) -> (x2,y2)        (0,1) -> (x3,y3)  The mapping is done using perspective transformation which preserve  lines in all orientations and permit quadrilateral to quadrilateral  mappings.</dd> 
    150150       
    151151        <dt><a href="testinterp.html?format=raw">testinterp.pro</a></dt> 
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/extrapolate.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> extrapolate data (zinput) where maskinput eq 0 by filling step by 
     90 step the coastline points with the mean value of the 8 neighbourgs. 
     91</div> 
    9092 
    9193       
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/fromreg.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_fromreg"> 
    103  
    104           <h2><a class="top" href="#container">top</a>fromreg </h2> 
    105          
    106           <p class="header"> 
    107             <span class="result">result = </span>fromreg(<span class="result"><a href="#_fromreg_param_method">method</a>, <a href="#_fromreg_param_datain">datain</a>, <a href="#_fromreg_param_lonin">lonin</a>, <a href="#_fromreg_param_latin">latin</a>, <a href="#_fromreg_param_lonout">lonout</a>, <a href="#_fromreg_param_latout">latout</a></span>, <a href="#_fromreg_keyword_WEIG">WEIG</a>=<span class="result">WEIG</span>, <a href="#_fromreg_keyword_ADDR">ADDR</a>=<span class="result">ADDR</span>, <a href="#_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span>)</p> 
    108          
    109           <div class="comments"> 
    110  NAME: fromreg 
    111  
    112  PURPOSE: interpolate data from a "regular/rectangular grid" to any grid. 
     89      <div id="file_comments"> interpolate data from a "regular/rectangular grid" to any grid. 
    11390   2 metods availables: bilinear and imoms3  
    11491   A "regular/rectangular grid" is defined as a grid for which each lontitudes lines have  
    11592   the same latitude and each latitudes columns have the same longitude. 
    116     
    117  CATEGORY:interpolation 
    118  
    119  CALLING SEQUENCE: dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 
    120  
    121  INPUTS: 
    122     method: a string defining the interpolation method.  
    123             must be 'bilinear' or 'imoms3' 
    124     datain: a 2D array the input data to interpolate 
    125     lonin and latin: longitude/latitude of the input data. optionals if 
     93   </div> 
     94 
     95       
     96 
     97       
     98 
     99       
     100 
     101       
     102 
     103      <div id="routine_details"> 
     104         
     105 
     106        <div class="routine_details" id="_fromreg"> 
     107 
     108          <h2><a class="top" href="#container">top</a>fromreg <span class="categories"> interpolation 
     109</span></h2> 
     110         
     111          <p class="header"> 
     112            <span class="result">result = </span>fromreg(<span class="result"><a href="#_fromreg_param_method">method</a>, <a href="#_fromreg_param_datain">datain</a>, <a href="#_fromreg_param_lonin">lonin</a>, <a href="#_fromreg_param_latin">latin</a>, <a href="#_fromreg_param_lonout">lonout</a>, <a href="#_fromreg_param_latout">latout</a></span>, <a href="#_fromreg_keyword_WEIG">WEIG</a>=<span class="result">WEIG</span>, <a href="#_fromreg_keyword_ADDR">ADDR</a>=<span class="result">ADDR</span>, <a href="#_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span>)</p> 
     113         
     114          <div class="comments"> 
     115</div> 
     116 
     117          <h3>Return value</h3><div class="value"> 2D array: the interpolated data 
     118</div> 
     119 
     120           
     121            <h3>Parameters</h3> 
     122         
     123             
     124            <h4 id="_fromreg_param_method">method&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     125              <span class="attr">in</span> 
     126               
     127               
     128              <span class="attr">required</span> 
     129               
     130               
     131               
     132               
     133            </h4> 
     134         
     135          <div class="comments">  a string defining the interpolation method.  
     136            must be 'bilinear' or 'imoms3'</div> 
     137             
     138            <h4 id="_fromreg_param_datain">datain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     139              <span class="attr">in</span> 
     140               
     141               
     142              <span class="attr">required</span> 
     143               
     144               
     145               
     146               
     147            </h4> 
     148         
     149          <div class="comments">  a 2D array the input data to interpolate</div> 
     150             
     151            <h4 id="_fromreg_param_lonin">lonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     152              <span class="attr">in</span> 
     153               
     154               
     155              <span class="attr">required</span> 
     156               
     157               
     158               
     159               
     160            </h4> 
     161         
     162          <div class="comments">  longitude/latitude of the input data. optionals if 
     163            WEIG and ADDR keywords used.</div> 
     164             
     165            <h4 id="_fromreg_param_latin">latin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     166               
     167               
     168               
     169               
     170               
     171               
     172               
     173               
     174            </h4> 
     175         
     176          <div class="comments"></div> 
     177             
     178            <h4 id="_fromreg_param_lonout">lonout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     179              <span class="attr">in</span> 
     180               
     181               
     182              <span class="attr">required</span> 
     183               
     184               
     185               
     186               
     187            </h4> 
     188         
     189          <div class="comments">  longitude/latitude of the output data. optionals if 
    126190            WEIG and ADDR keywords used. 
    127     lonout and latout: longitude/latitude of the output data. optionals if 
    128             WEIG and ADDR keywords used. 
    129  
    130  KEYWORD PARAMETERS:  
    131  
    132      WEIG, ADDR: 2D arrays, weig and addr are the weight and addresses used to 
     191</div> 
     192             
     193            <h4 id="_fromreg_param_latout">latout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     194               
     195               
     196               
     197               
     198               
     199               
     200               
     201               
     202            </h4> 
     203         
     204          <div class="comments"></div> 
     205             
     206 
     207           
     208 
     209           
     210 
     211            <h3>Keywords</h3> 
     212             
     213            <h4 id="_fromreg_keyword_WEIG">WEIG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     214               
     215               
     216               
     217               
     218               
     219               
     220               
     221               
     222            </h4> 
     223         
     224            <div class="comments">, ADDR 2D arrays, weig and addr are the weight and addresses used to 
    133225     perform the interpolation: 
    134226          dataout = total(weig*datain[addr], 1) 
     
    138230     the interpolation whithout computing again those 2 parameters. In that 
    139231     case, lonin, latin, lonout and latout are not necessary. 
    140  
    141      /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 
     232</div> 
     233             
     234            <h4 id="_fromreg_keyword_ADDR">ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     235               
     236               
     237               
     238               
     239               
     240               
     241               
     242               
     243            </h4> 
     244         
     245            <div class="comments"></div> 
     246             
     247            <h4 id="_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     248               
     249               
     250               
     251               
     252               
     253               
     254               
     255               
     256            </h4> 
     257         
     258            <div class="comments"> and /NOSOUTHERNLINE activate if you don't whant to take into 
    142259          account the northen/southern line of the input data when perfoming the 
    143260          interpolation. 
    144  
    145  OUTPUTS: 2D array: the interpolated data 
    146  
    147  COMMON BLOCKS: none 
    148  
    149  SIDE EFFECTS: ? 
    150  
    151  RESTRICTIONS:We supposed the data are located on a sphere, with a periodicity along 
    152               the longitude. 
    153  
    154  EXAMPLE:  
     261</div> 
     262             
     263            <h4 id="_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     264               
     265               
     266               
     267               
     268               
     269               
     270               
     271               
     272            </h4> 
     273         
     274            <div class="comments"></div> 
     275             
     276           
     277 
     278          <h3>Examples</h3><div class="value">   
     279 dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 
     280 
     281   
    155282   
    156283  topa = fromreg('bilinear', tncep, xncep, yncep, glamt, gphit) 
     
    161288  help, a, b 
    162289  t2opa = fromreg('bilinear', t2ncep, xncep, WEIG = a, ADDR = b) 
    163  
    164  MODIFICATION HISTORY:</div> 
    165  
    166            
    167  
    168            
    169             <h3>Parameters</h3> 
    170          
    171              
    172             <h4 id="_fromreg_param_method">method&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    173                
    174                
    175                
    176                
    177                
    178                
    179                
    180                
    181             </h4> 
    182          
    183           <div class="comments"></div> 
    184              
    185             <h4 id="_fromreg_param_datain">datain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    186                
    187                
    188                
    189                
    190                
    191                
    192                
    193                
    194             </h4> 
    195          
    196           <div class="comments"></div> 
    197              
    198             <h4 id="_fromreg_param_lonin">lonin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    199                
    200                
    201                
    202                
    203                
    204                
    205                
    206                
    207             </h4> 
    208          
    209           <div class="comments"></div> 
    210              
    211             <h4 id="_fromreg_param_latin">latin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    212                
    213                
    214                
    215                
    216                
    217                
    218                
    219                
    220             </h4> 
    221          
    222           <div class="comments"></div> 
    223              
    224             <h4 id="_fromreg_param_lonout">lonout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    225                
    226                
    227                
    228                
    229                
    230                
    231                
    232                
    233             </h4> 
    234          
    235           <div class="comments"></div> 
    236              
    237             <h4 id="_fromreg_param_latout">latout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    238                
    239                
    240                
    241                
    242                
    243                
    244                
    245                
    246             </h4> 
    247          
    248           <div class="comments"></div> 
    249              
    250  
    251            
    252  
    253            
    254  
    255             <h3>Keywords</h3> 
    256              
    257             <h4 id="_fromreg_keyword_WEIG">WEIG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    258                
    259                
    260                
    261                
    262                
    263                
    264                
    265                
    266             </h4> 
    267          
    268             <div class="comments"></div> 
    269              
    270             <h4 id="_fromreg_keyword_ADDR">ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    271                
    272                
    273                
    274                
    275                
    276                
    277                
    278                
    279             </h4> 
    280          
    281             <div class="comments"></div> 
    282              
    283             <h4 id="_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    284                
    285                
    286                
    287                
    288                
    289                
    290                
    291                
    292             </h4> 
    293          
    294             <div class="comments"></div> 
    295              
    296             <h4 id="_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    297                
    298                
    299                
    300                
    301                
    302                
    303                
    304                
    305             </h4> 
    306          
    307             <div class="comments"></div> 
    308              
    309            
    310  
    311            
    312            
    313            
    314            
    315            
    316            
    317            
    318            
    319            
    320            
    321            
    322            
     290</div> 
     291          <h3>Version history</h3> 
     292           
     293           
     294          <h4>History</h4><div class="value"> 
     295  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
     296 </div> 
     297           
     298           
     299          <h3>Known issues</h3> 
     300           
     301           
     302           
     303          <h4>Restrictions</h4><div class="value"> We supposed the data are located on a sphere, with a  
     304 periodicity along the longitude. 
     305</div> 
    323306         
    324307           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/get_gridparams.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_get_gridparams"> 
    103  
    104           <h2><a class="top" href="#container">top</a>get_gridparams </h2> 
    105          
    106           <p class="header"> 
    107             get_gridparams<span class="result">, <a href="#_get_gridparams_param_in1">in1</a>, <a href="#_get_gridparams_param_in2">in2</a>, <a href="#_get_gridparams_param_in3">in3</a>, <a href="#_get_gridparams_param_in4">in4</a>, <a href="#_get_gridparams_param_in5">in5</a>, <a href="#_get_gridparams_param_in6">in6</a>, <a href="#_get_gridparams_param_in7">in7</a>, <a href="#_get_gridparams_param_in8">in8</a></span>, <a href="#_get_gridparams_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span></p> 
    108          
    109           <div class="comments"> 
    110  NAME: get_gridparams 
    111  
    112  PURPOSE:  
     89      <div id="file_comments">  
    11390   1) extract from a NetCDF file the longitude, latidude, and their dimensions 
    11491      and make sure it is 1D or 2D arrays  
     
    11693   or 2) given longitude and latitude arrays get their dimensions and make sure  
    11794      they are 1D or 2D arrays  
    118  
    119  CATEGORY:for interpolations tools 
    120  
    121  CALLING SEQUENCE: 
    122   
    123  1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions 
    124  
    125  or  
    126  
    127  2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 
    128  
    129  INPUTS: 
    130  
    131  1)  
    132   file: the name of the netcdf file 
    133   loname: the name of the variable that contains the longitude in the NetCDF file 
    134   latname: the name of the variable that contains the latitude in the NetCDF file 
    135  
    136  or  
    137  
    138  2) lon and lat: 1d or 2D arrays defining longitudes and latitudes.  
    139     Note that these arrays are also outputs and can therefore be modified.  
    140  
    141  KEYWORD PARAMETERS: none 
    142  
    143  OUTPUTS: 
    144   lon the variable that will contain the longitudes 
    145   lat the variable that will contain the latitudes 
    146   jpi the number of points in the longitudinal direction 
    147   jpj the number of points in the latitudinal direction 
    148   n_dimensions: 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
     95</div> 
     96 
     97       
     98 
     99       
     100 
     101       
     102 
     103       
     104 
     105      <div id="routine_details"> 
     106         
     107 
     108        <div class="routine_details" id="_get_gridparams"> 
     109 
     110          <h2><a class="top" href="#container">top</a>get_gridparams <span class="categories"> interpolation 
     111</span></h2> 
     112         
     113          <p class="header"> 
     114            get_gridparams<span class="result">, <a href="#_get_gridparams_param_in1">in1</a>, <a href="#_get_gridparams_param_in2">in2</a>, <a href="#_get_gridparams_param_in3">in3</a>, <a href="#_get_gridparams_param_in4">in4</a>, <a href="#_get_gridparams_param_in5">in5</a>, <a href="#_get_gridparams_param_in6">in6</a>, <a href="#_get_gridparams_param_in7">in7</a>, <a href="#_get_gridparams_param_in8">in8</a></span>, <a href="#_get_gridparams_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span></p> 
     115         
     116          <div class="comments"> 
     117</div> 
     118 
     119           
     120 
     121           
     122            <h3>Parameters</h3> 
     123         
     124             
     125            <h4 id="_get_gridparams_param_in1">in1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     126              <span class="attr">in</span> 
     127              <span class="attr">out</span> 
     128               
     129              <span class="attr">required</span> 
     130               
     131               
     132               
     133               
     134            </h4> 
     135         
     136          <div class="comments">  the name of the netcdf file 
     137 the variable that will contain the longitudes</div> 
     138             
     139            <h4 id="_get_gridparams_param_in2">in2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     140              <span class="attr">in</span> 
     141              <span class="attr">out</span> 
     142               
     143              <span class="attr">required</span> 
     144               
     145               
     146               
     147               
     148            </h4> 
     149         
     150          <div class="comments">  the name of the variable that contains the longitude in the NetCDF file 
     151 the variable that will contain the latitudes</div> 
     152             
     153            <h4 id="_get_gridparams_param_in3">in3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     154              <span class="attr">in</span> 
     155              <span class="attr">out</span> 
     156               
     157              <span class="attr">required</span> 
     158               
     159               
     160               
     161               
     162            </h4> 
     163         
     164          <div class="comments">  the name of the variable that contains the latitude in the NetCDF file 
     165 the number of points in the longitudinal direction</div> 
     166             
     167            <h4 id="_get_gridparams_param_in4">in4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     168               
     169              <span class="attr">out</span> 
     170               
     171               
     172               
     173               
     174               
     175               
     176            </h4> 
     177         
     178          <div class="comments"> the number of points in the longitudinal direction 
     179 the number of points in the latitudinal direction</div> 
     180             
     181            <h4 id="_get_gridparams_param_in5">in5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     182               
     183              <span class="attr">out</span> 
     184               
     185               
     186               
     187               
     188               
     189               
     190            </h4> 
     191         
     192          <div class="comments"> the number of points in the latitudinal direction 
     193 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
    149194    arrays or 2D arrays (jpi,jpj). Note that of  n_dimensions = 1, then the 
    150195    grid must be regular (each longitudes must be the same for all latitudes 
    151196    and each latitudes should be the sae for all longitudes).  
    152  
    153  COMMON BLOCKS: none 
    154  
    155  SIDE EFFECTS: ? 
    156  
    157  RESTRICTIONS: ? 
    158  
    159  EXAMPLE:  
     197</div> 
     198             
     199            <h4 id="_get_gridparams_param_in6">in6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     200               
     201              <span class="attr">out</span> 
     202               
     203               
     204               
     205               
     206               
     207               
     208            </h4> 
     209         
     210          <div class="comments"> the variable that will contain the longitudes</div> 
     211             
     212            <h4 id="_get_gridparams_param_in7">in7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     213               
     214              <span class="attr">out</span> 
     215               
     216               
     217               
     218               
     219               
     220               
     221            </h4> 
     222         
     223          <div class="comments"> the variable that will contain the latitudes</div> 
     224             
     225            <h4 id="_get_gridparams_param_in8">in8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     226               
     227              <span class="attr">out</span> 
     228               
     229               
     230               
     231               
     232               
     233               
     234            </h4> 
     235         
     236          <div class="comments"> 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
     237 
     238 or  
     239 
     240 2) </div> 
     241             
     242 
     243           
     244 
     245           
     246 
     247            <h3>Keywords</h3> 
     248             
     249            <h4 id="_get_gridparams_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     250               
     251               
     252               
     253               
     254               
     255               
     256               
     257               
     258            </h4> 
     259         
     260            <div class="comments"></div> 
     261             
     262           
     263 
     264          <h3>Examples</h3><div class="value">  
     265  
     266 1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions 
     267 
     268 or  
     269 
     270 2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 
     271 
     272 1)  
     273   
    160274  
    161275 1) ncdf_get_gridparams, 'coordinates_ORCA_R05.nc', 'glamt', 'gphit' $ 
     
    163277 
    164278 2) ncdf_get_gridparams, olon, olat, jpio, jpjo, 2 
    165  
    166  MODIFICATION HISTORY:</div> 
    167  
    168            
    169  
    170            
    171             <h3>Parameters</h3> 
    172          
    173              
    174             <h4 id="_get_gridparams_param_in1">in1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    175                
    176                
    177                
    178                
    179                
    180                
    181                
    182                
    183             </h4> 
    184          
    185           <div class="comments"></div> 
    186              
    187             <h4 id="_get_gridparams_param_in2">in2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    188                
    189                
    190                
    191                
    192                
    193                
    194                
    195                
    196             </h4> 
    197          
    198           <div class="comments"></div> 
    199              
    200             <h4 id="_get_gridparams_param_in3">in3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    201                
    202                
    203                
    204                
    205                
    206                
    207                
    208                
    209             </h4> 
    210          
    211           <div class="comments"></div> 
    212              
    213             <h4 id="_get_gridparams_param_in4">in4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    214                
    215                
    216                
    217                
    218                
    219                
    220                
    221                
    222             </h4> 
    223          
    224           <div class="comments"></div> 
    225              
    226             <h4 id="_get_gridparams_param_in5">in5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    227                
    228                
    229                
    230                
    231                
    232                
    233                
    234                
    235             </h4> 
    236          
    237           <div class="comments"></div> 
    238              
    239             <h4 id="_get_gridparams_param_in6">in6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    240                
    241                
    242                
    243                
    244                
    245                
    246                
    247                
    248             </h4> 
    249          
    250           <div class="comments"></div> 
    251              
    252             <h4 id="_get_gridparams_param_in7">in7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    253                
    254                
    255                
    256                
    257                
    258                
    259                
    260                
    261             </h4> 
    262          
    263           <div class="comments"></div> 
    264              
    265             <h4 id="_get_gridparams_param_in8">in8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    266                
    267                
    268                
    269                
    270                
    271                
    272                
    273                
    274             </h4> 
    275          
    276           <div class="comments"></div> 
    277              
    278  
    279            
    280  
    281            
    282  
    283             <h3>Keywords</h3> 
    284              
    285             <h4 id="_get_gridparams_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    286                
    287                
    288                
    289                
    290                
    291                
    292                
    293                
    294             </h4> 
    295          
    296             <div class="comments"></div> 
    297              
    298            
    299  
    300            
    301            
    302            
    303            
    304            
     279</div> 
     280          <h3>Version history</h3> 
     281           
     282           
     283          <h4>History</h4><div class="value"> 
     284  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
     285 </div> 
    305286           
    306287           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/imoms3.html

    r89 r101  
    107107            <span class="result">result = </span>imoms3(<span class="result"><a href="#_imoms3_param_xin">xin</a></span>)</p> 
    108108         
    109           <div class="comments"></div> 
     109          <div class="comments"> 
     110 </div> 
    110111 
    111112           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/inquad.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 
     90</div> 
    9091 
    9192       
     
    102103        <div class="routine_details" id="_inquad"> 
    103104 
    104           <h2><a class="top" href="#container">top</a>inquad </h2> 
     105          <h2><a class="top" href="#container">top</a>inquad <span class="categories"> grid manipulation 
     106</span></h2> 
    105107         
    106108          <p class="header"> 
    107109            <span class="result">result = </span>inquad(<span class="result"><a href="#_inquad_param_x">x</a>, <a href="#_inquad_param_y">y</a>, <a href="#_inquad_param_x1">x1</a>, <a href="#_inquad_param_y1">y1</a>, <a href="#_inquad_param_x2">x2</a>, <a href="#_inquad_param_y2">y2</a>, <a href="#_inquad_param_x3">x3</a>, <a href="#_inquad_param_y3">y3</a>, <a href="#_inquad_param_x4">x4</a>, <a href="#_inquad_param_y4">y4</a></span>, <a href="#_inquad_keyword_ONSPHERE">ONSPHERE</a>=<span class="result">ONSPHERE</span>, <a href="#_inquad_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span>, <a href="#_inquad_keyword_ZOOMRADIUS">ZOOMRADIUS</a>=<span class="result">ZOOMRADIUS</span>, <a href="#_inquad_keyword_NOPRINT">NOPRINT</a>=<span class="result">NOPRINT</span>, <a href="#_inquad_keyword_NEWCOORD">NEWCOORD</a>=<span class="result">NEWCOORD</span>)</p> 
    108110         
    109           <div class="comments"> 
    110  NAME:inquad 
    111  
    112  PURPOSE: to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 
    113  
    114  CATEGORY:grid manipulation 
    115  
    116  CALLING SEQUENCE: 
    117  
    118      res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
    119  
    120  INPUTS: 
    121  
    122      x,y: the coordinates of the point we want to know where it 
     111          <div class="comments"></div> 
     112 
     113          <h3>Return value</h3><div class="value"> 
     114    a n element vector. Where n is the number of elements of 
     115    x. res[i]=j means that the point number i is located in the 
     116    quadrilateral number j with (0 <= j <= n_elements(x0)-1) 
     117</div> 
     118 
     119           
     120            <h3>Parameters</h3> 
     121         
     122             
     123            <h4 id="_inquad_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     124              <span class="attr">in</span> 
     125               
     126               
     127              <span class="attr">required</span> 
     128               
     129               
     130               
     131               
     132            </h4> 
     133         
     134          <div class="comments">  the coordinates of the point we want to know where it 
    123135     is. Must be a scalar if /onsphere activated else can be scalar 
    124136     or array.  
    125  
    126      x1, y1, x2, y2, x3, y3, x4, y4: the coordinates of the 
     137</div> 
     138             
     139            <h4 id="_inquad_param_y">y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     140               
     141               
     142               
     143               
     144               
     145               
     146               
     147               
     148            </h4> 
     149         
     150          <div class="comments"></div> 
     151             
     152            <h4 id="_inquad_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     153              <span class="attr">in</span> 
     154               
     155               
     156              <span class="attr">required</span> 
     157               
     158               
     159               
     160               
     161            </h4> 
     162         
     163          <div class="comments">  the coordinates of the 
    127164     quadrilateral given in the CLOCKWISE order. Scalar or array. 
    128165 
    129  KEYWORD PARAMETERS: 
    130  
    131     /DOUBLE: use double precision to perform the computation  
    132  
    133     /ONSPHERE: to specify that the quadilateral are on a sphere and 
     166</div> 
     167             
     168            <h4 id="_inquad_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     169               
     170               
     171               
     172               
     173               
     174               
     175               
     176               
     177            </h4> 
     178         
     179          <div class="comments"></div> 
     180             
     181            <h4 id="_inquad_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     182               
     183               
     184               
     185               
     186               
     187               
     188               
     189               
     190            </h4> 
     191         
     192          <div class="comments"></div> 
     193             
     194            <h4 id="_inquad_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     195               
     196               
     197               
     198               
     199               
     200               
     201               
     202               
     203            </h4> 
     204         
     205          <div class="comments"></div> 
     206             
     207            <h4 id="_inquad_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     208               
     209               
     210               
     211               
     212               
     213               
     214               
     215               
     216            </h4> 
     217         
     218          <div class="comments"></div> 
     219             
     220            <h4 id="_inquad_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     221               
     222               
     223               
     224               
     225               
     226               
     227               
     228               
     229            </h4> 
     230         
     231          <div class="comments"></div> 
     232             
     233            <h4 id="_inquad_param_x4">x4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     234               
     235               
     236               
     237               
     238               
     239               
     240               
     241               
     242            </h4> 
     243         
     244          <div class="comments"></div> 
     245             
     246            <h4 id="_inquad_param_y4">y4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     247               
     248               
     249               
     250               
     251               
     252               
     253               
     254               
     255            </h4> 
     256         
     257          <div class="comments"></div> 
     258             
     259 
     260           
     261 
     262           
     263 
     264            <h3>Keywords</h3> 
     265             
     266            <h4 id="_inquad_keyword_ONSPHERE">ONSPHERE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     267               
     268               
     269               
     270               
     271               
     272               
     273               
     274               
     275            </h4> 
     276         
     277            <div class="comments"> to specify that the quadilateral are on a sphere and 
    134278    that teir coordinates are longitude-latitude coordinates. In this 
    135279    case, est-west periodicity, poles singularity and other pbs 
    136280    related to longitude-latitude coordinates are managed 
    137281    automatically.  
    138  
    139     ZOOMRADIUS:the zoom (circle centred on the (x,y) with a radius of 
     282</div> 
     283             
     284            <h4 id="_inquad_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     285               
     286               
     287               
     288               
     289               
     290               
     291               
     292               
     293            </h4> 
     294         
     295            <div class="comments"> use double precision to perform the computation  
     296</div> 
     297             
     298            <h4 id="_inquad_keyword_ZOOMRADIUS">ZOOMRADIUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     299               
     300               
     301               
     302               
     303               
     304               
     305               
     306               
     307            </h4> 
     308         
     309            <div class="comments"> :the zoom (circle centred on the (x,y) with a radius of 
    140310    zoomradius degree where we look for the the quadrilateral which;    contains the (x,y) point) used for the satellite projection 
    141311    when /onsphere is activated. Default is 4 and seems to be the 
    142312    minimum which can be used. Can be increase if the cell size is 
    143313    larger than 5 degrees. 
    144     
    145     /NOPRINT: to suppress the print messages. 
    146  
    147  OUTPUTS: 
    148  
    149     res, a n element vector. Where n is the number of elements of 
    150     x. res[i]=j means that the point number i is located in the 
    151     quadrilateral number j with (0 <= j <= n_elements(x0)-1) 
    152  
    153  COMMON BLOCKS:none 
    154  
    155  SIDE EFFECTS: 
    156  
    157  RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 
    158  twisted) is not work. This has to be tested. 
    159  
    160  EXAMPLE: 
     314   </div> 
     315             
     316            <h4 id="_inquad_keyword_NOPRINT">NOPRINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     317               
     318               
     319               
     320               
     321               
     322               
     323               
     324               
     325            </h4> 
     326         
     327            <div class="comments"> to suppress the print messages. 
     328</div> 
     329             
     330            <h4 id="_inquad_keyword_NEWCOORD">NEWCOORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     331               
     332               
     333               
     334               
     335               
     336               
     337               
     338               
     339            </h4> 
     340         
     341            <div class="comments"></div> 
     342             
     343           
     344 
     345          <h3>Examples</h3><div class="value">  
     346 
     347     res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
     348 
     349  
    161350 
    162351       x = 1.*[1, 2, 6, 7, 3] 
     
    176365 
    177366      On a sphere see clickincell.pro... 
    178  
    179  MODIFICATION HISTORY:</div> 
    180  
    181            
    182  
    183            
    184             <h3>Parameters</h3> 
    185          
    186              
    187             <h4 id="_inquad_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    188                
    189                
    190                
    191                
    192                
    193                
    194                
    195                
    196             </h4> 
    197          
    198           <div class="comments"></div> 
    199              
    200             <h4 id="_inquad_param_y">y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    201                
    202                
    203                
    204                
    205                
    206                
    207                
    208                
    209             </h4> 
    210          
    211           <div class="comments"></div> 
    212              
    213             <h4 id="_inquad_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    214                
    215                
    216                
    217                
    218                
    219                
    220                
    221                
    222             </h4> 
    223          
    224           <div class="comments"></div> 
    225              
    226             <h4 id="_inquad_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    227                
    228                
    229                
    230                
    231                
    232                
    233                
    234                
    235             </h4> 
    236          
    237           <div class="comments"></div> 
    238              
    239             <h4 id="_inquad_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    240                
    241                
    242                
    243                
    244                
    245                
    246                
    247                
    248             </h4> 
    249          
    250           <div class="comments"></div> 
    251              
    252             <h4 id="_inquad_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    253                
    254                
    255                
    256                
    257                
    258                
    259                
    260                
    261             </h4> 
    262          
    263           <div class="comments"></div> 
    264              
    265             <h4 id="_inquad_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    266                
    267                
    268                
    269                
    270                
    271                
    272                
    273                
    274             </h4> 
    275          
    276           <div class="comments"></div> 
    277              
    278             <h4 id="_inquad_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    279                
    280                
    281                
    282                
    283                
    284                
    285                
    286                
    287             </h4> 
    288          
    289           <div class="comments"></div> 
    290              
    291             <h4 id="_inquad_param_x4">x4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    292                
    293                
    294                
    295                
    296                
    297                
    298                
    299                
    300             </h4> 
    301          
    302           <div class="comments"></div> 
    303              
    304             <h4 id="_inquad_param_y4">y4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    305                
    306                
    307                
    308                
    309                
    310                
    311                
    312                
    313             </h4> 
    314          
    315           <div class="comments"></div> 
    316              
    317  
    318            
    319  
    320            
    321  
    322             <h3>Keywords</h3> 
    323              
    324             <h4 id="_inquad_keyword_ONSPHERE">ONSPHERE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    325                
    326                
    327                
    328                
    329                
    330                
    331                
    332                
    333             </h4> 
    334          
    335             <div class="comments"></div> 
    336              
    337             <h4 id="_inquad_keyword_DOUBLE">DOUBLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    338                
    339                
    340                
    341                
    342                
    343                
    344                
    345                
    346             </h4> 
    347          
    348             <div class="comments"></div> 
    349              
    350             <h4 id="_inquad_keyword_ZOOMRADIUS">ZOOMRADIUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    351                
    352                
    353                
    354                
    355                
    356                
    357                
    358                
    359             </h4> 
    360          
    361             <div class="comments"></div> 
    362              
    363             <h4 id="_inquad_keyword_NOPRINT">NOPRINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    364                
    365                
    366                
    367                
    368                
    369                
    370                
    371                
    372             </h4> 
    373          
    374             <div class="comments"></div> 
    375              
    376             <h4 id="_inquad_keyword_NEWCOORD">NEWCOORD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    377                
    378                
    379                
    380                
    381                
    382                
    383                
    384                
    385             </h4> 
    386          
    387             <div class="comments"></div> 
    388              
    389            
    390  
    391            
    392            
    393            
    394            
    395            
    396            
    397            
    398            
    399            
    400            
    401            
    402            
     367</div> 
     368          <h3>Version history</h3> 
     369           
     370           
     371          <h4>History</h4><div class="value"> 
     372      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     373      August 2003 
     374      Based on Convert_clic_ij.pro written by Gurvan Madec  
     375</div> 
     376           
     377           
     378          <h3>Known issues</h3> 
     379           
     380           
     381           
     382          <h4>Restrictions</h4><div class="value"> I think degenerated quadrilateral (e.g. flat of 
     383 twisted) is not work. This has to be tested. 
     384</div> 
    403385         
    404386           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/inrecgrid.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> given - a list of points, (x,y) position   
     90                - the x and y limits of a rectangular grid 
     91          find in which cell is located each given point. 
     92</div> 
    9093 
    9194       
     
    102105        <div class="routine_details" id="_inrecgrid"> 
    103106 
    104           <h2><a class="top" href="#container">top</a>inrecgrid </h2> 
     107          <h2><a class="top" href="#container">top</a>inrecgrid <span class="categories"> no DO loop, use the wonderfull value_locate function! 
     108</span></h2> 
    105109         
    106110          <p class="header"> 
     
    108112         
    109113          <div class="comments"> 
    110  NAME: inrecgrid 
    111  
    112  PURPOSE: given - a list of points, (x,y) position   
    113                 - the x and y limits of a rectangular grid 
    114           find in which cell is located each given point. 
    115  
    116  CATEGORY: no DO loop, use the wonderfull value_locate function! 
    117  
    118  CALLING SEQUENCE:res = inrecgrid(xin, yin, left, bottom) 
    119  
    120  INPUTS:  
    121  
    122     x1d: a 1d array, the x position on the points 
    123     y1d: a 1d array, the y position on the points 
    124     left: a 1d, monotonically increasing array, the position of the 
    125     "left" border of each cell. 
    126     bottom: a 1d, monotonically increasing array, the position of the 
     114</div> 
     115 
     116          <h3>Return value</h3><div class="value"> the index on the cell accoring to the 2d array defined by 
     117 left and bottom. 
     118</div> 
     119 
     120           
     121            <h3>Parameters</h3> 
     122         
     123             
     124            <h4 id="_inrecgrid_param_x1d">x1d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     125              <span class="attr">in</span> 
     126               
     127               
     128              <span class="attr">required</span> 
     129               
     130               
     131               
     132               
     133            </h4> 
     134         
     135          <div class="comments">  a 1d array, the x position on the points</div> 
     136             
     137            <h4 id="_inrecgrid_param_y1d">y1d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     138              <span class="attr">in</span> 
     139               
     140               
     141              <span class="attr">required</span> 
     142               
     143               
     144               
     145               
     146            </h4> 
     147         
     148          <div class="comments">  a 1d, monotonically increasing array, the position of the 
     149    "left" border of each cell.</div> 
     150             
     151            <h4 id="_inrecgrid_param_left">left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     152               
     153               
     154               
     155               
     156               
     157               
     158               
     159               
     160            </h4> 
     161         
     162          <div class="comments"></div> 
     163             
     164            <h4 id="_inrecgrid_param_bottom">bottom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     165              <span class="attr">in</span> 
     166               
     167               
     168              <span class="attr">required</span> 
     169               
     170               
     171               
     172               
     173            </h4> 
     174         
     175          <div class="comments">  a 1d, monotonically increasing array, the position of the 
    127176    "bottom" border of each cell. 
    128177 
    129  OPTIONAL INPUTS: 
    130  
    131  KEYWORD PARAMETERS:; 
    132  
    133     /output2d: to get the output as a 2d array (2,n_elements(x1d)), 
     178</div> 
     179             
     180 
     181           
     182 
     183           
     184 
     185            <h3>Keywords</h3> 
     186             
     187            <h4 id="_inrecgrid_keyword_output2d">output2d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     188               
     189               
     190               
     191               
     192               
     193               
     194               
     195               
     196            </h4> 
     197         
     198            <div class="comments"> to get the output as a 2d array (2,n_elements(x1d)), 
    134199    with res[0,*] the x index accoring to the 1d array defined by 
    135200    left and res[1,*] the y index accoring to the 1d array defined by 
    136201    bottom. 
    137  
    138     checkout=[rbgrid,ubgrid] specify the right and upper bondaries of 
     202</div> 
     203             
     204            <h4 id="_inrecgrid_keyword_checkout">checkout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     205               
     206               
     207               
     208               
     209               
     210               
     211               
     212               
     213            </h4> 
     214         
     215            <div class="comments">=[rbgrid,ubgrid] specify the right and upper bondaries of 
    139216    the grid and check if some points are out. 
    140  
    141  OUTPUTS:the index on the cell accoring to the 2d array defined by 
    142  left and bottom. 
    143  
    144  OPTIONAL OUTPUTS: 
    145  
    146  COMMON BLOCKS: no 
    147  
    148  SIDE EFFECTS: 
    149  
    150  RESTRICTIONS: 
    151  
    152  PROCEDURE: 
    153  
    154  EXAMPLE: 
     217</div> 
     218             
     219           
     220 
     221          <h3>Examples</h3><div class="value">  
     222 res = inrecgrid(xin, yin, left, bottom) 
     223 
     224  
    155225 
    156226  IDL> a=indgen(5) 
     
    164234        3.00000      2.00000 
    165235        2.00000      1.00000 
    166    
    167  MODIFICATION HISTORY:</div> 
    168  
    169            
    170  
    171            
    172             <h3>Parameters</h3> 
    173          
    174              
    175             <h4 id="_inrecgrid_param_x1d">x1d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    176                
    177                
    178                
    179                
    180                
    181                
    182                
    183                
    184             </h4> 
    185          
    186           <div class="comments"></div> 
    187              
    188             <h4 id="_inrecgrid_param_y1d">y1d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    189                
    190                
    191                
    192                
    193                
    194                
    195                
    196                
    197             </h4> 
    198          
    199           <div class="comments"></div> 
    200              
    201             <h4 id="_inrecgrid_param_left">left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    202                
    203                
    204                
    205                
    206                
    207                
    208                
    209                
    210             </h4> 
    211          
    212           <div class="comments"></div> 
    213              
    214             <h4 id="_inrecgrid_param_bottom">bottom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    215                
    216                
    217                
    218                
    219                
    220                
    221                
    222                
    223             </h4> 
    224          
    225           <div class="comments"></div> 
    226              
    227  
    228            
    229  
    230            
    231  
    232             <h3>Keywords</h3> 
    233              
    234             <h4 id="_inrecgrid_keyword_output2d">output2d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    235                
    236                
    237                
    238                
    239                
    240                
    241                
    242                
    243             </h4> 
    244          
    245             <div class="comments"></div> 
    246              
    247             <h4 id="_inrecgrid_keyword_checkout">checkout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    248                
    249                
    250                
    251                
    252                
    253                
    254                
    255                
    256             </h4> 
    257          
    258             <div class="comments"></div> 
    259              
    260            
    261  
    262            
    263            
    264            
    265            
    266            
     236  </div> 
     237          <h3>Version history</h3> 
     238           
     239           
     240          <h4>History</h4><div class="value"> 
     241            S. Masson (smasson@lodyc.jussieu.fr) 
     242                      July 3rd, 2002 
     243                      October 3rd, 2003: use value_locate</div> 
    267244           
    268245           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/ll_narcs_distances.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> 
     90 This function returns the longitude and latitude [lon, lat] of 
     91a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 
     92from a specified location Lon0, lat0. 
     93       Same as LL_ARC_DISTANCE but for n points without do loop. 
     94 
     95 
     96Formula from Map Projections - a working manual.  USGS paper 
     971395.  Equations (5-5) and (5-6). 
     98</div> 
    9099 
    91100       
     
    102111        <div class="routine_details" id="_LL_NARCS_DISTANCES"> 
    103112 
    104           <h2><a class="top" href="#container">top</a>LL_NARCS_DISTANCES </h2> 
     113          <h2><a class="top" href="#container">top</a>LL_NARCS_DISTANCES <span class="categories"> Mapping, geography 
     114</span></h2> 
    105115         
    106116          <p class="header"> 
     
    108118         
    109119          <div class="comments"> 
    110  NAME: 
    111         LL_NARCS_DISTANCES 
    112  
    113  PURPOSE: 
    114         This function returns the longitude and latitude [lon, lat] of 
    115         a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 
    116         from a specified location Lon0, lat0. 
    117        Same as LL_ARC_DISTANCE but for n points without do loop. 
    118  
    119  CATEGORY: 
    120         Mapping, geography. 
    121  
    122  CALLING SEQUENCE: 
    123         Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 
    124  
    125  INPUTS: 
    126         Lon0: An array containing the longitude of the starting point. 
    127              Values are assumed to be in radians unless the keyword 
    128              DEGREES is set. 
    129         Lat0: An array containing the latitude of the starting point. 
    130              Values are assumed to be in radians unless the keyword 
    131              DEGREES is set. 
    132         Arc_Dist: The arc distance from Lon_lat0. The value must be between 
    133                   -!PI and +!PI. To express distances in arc units, divide 
    134                   by the radius of the globe expressed in the original units. 
    135                   For example, if the radius of the earth is 6371 km, divide 
    136                   the distance in km by 6371 to obtain the arc distance.     
    137         Az:       The azimuth from Lon_lat0. The value is assumed to be in 
    138                   radians unless the keyword DEGREES is set. 
    139  
    140  KEYWORD PARAMETERS: 
    141         DEGREES:  Set this keyword to express all measurements and 
    142                   results in degrees. 
    143  
    144  OUTPUTS: 
    145         This function returns a (2, n) array containing the  
     120</div> 
     121 
     122          <h3>Return value</h3><div class="value"> 
     123 a (2, n) array containing the  
    146124       longitude / latitude of the resultings points. Values are in radians 
    147125       unless the keyword DEGREES is set. 
    148  
    149  PROCEDURE: 
    150         Formula from Map Projections - a working manual.  USGS paper 
    151         1395.  Equations (5-5) and (5-6). 
    152  
    153  EXAMPLE: 
    154         Lon_lat0 = [1.0, 2.0]           ; Initial point specified in radians     
    155         Arc_Dist = 2.0                  ; Arc distance in radians 
    156         Az = 1.0                        ; Azimuth in radians 
    157         Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 
    158         PRINT, Result 
    159           2.91415    -0.622234 
    160  
    161         IDL> lon0 = [-10, 20, 100] 
    162         IDL> lat0 = [0, -10, 45] 
    163         IDL> lon1 = [10, 60, 280] 
    164         IDL> lat1 = [0, 10, 45] 
    165         IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
    166         IDL> earthradius = 6378206.4d0 
    167         IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 
    168         IDL> print, reform(res[0, *]) 
    169                10.000000       60.000000       280.00000 
    170         IDL> print, reform(res[1, *]) 
     126</div> 
     127 
     128           
     129            <h3>Parameters</h3> 
     130         
     131             
     132            <h4 id="_LL_NARCS_DISTANCES_param_lon0">lon0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     133              <span class="attr">in</span> 
     134               
     135               
     136              <span class="attr">required</span> 
     137               
     138               
     139               
     140               
     141            </h4> 
     142         
     143          <div class="comments">  An array containing the longitude of the starting point. 
     144             Values are assumed to be in radians unless the keyword 
     145             DEGREES is set.</div> 
     146             
     147            <h4 id="_LL_NARCS_DISTANCES_param_lat0">lat0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     148              <span class="attr">in</span> 
     149               
     150               
     151              <span class="attr">required</span> 
     152               
     153               
     154               
     155               
     156            </h4> 
     157         
     158          <div class="comments">  An array containing the latitude of the starting point. 
     159             Values are assumed to be in radians unless the keyword 
     160             DEGREES is set.</div> 
     161             
     162            <h4 id="_LL_NARCS_DISTANCES_param_arc_dist">arc_dist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     163              <span class="attr">in</span> 
     164               
     165               
     166              <span class="attr">required</span> 
     167               
     168               
     169               
     170               
     171            </h4> 
     172         
     173          <div class="comments">  The arc distance from Lon_lat0. The value must be between 
     174 -!PI and +!PI. To express distances in arc units, divide 
     175  by the radius of the globe expressed in the original units. 
     176  For example, if the radius of the earth is 6371 km, divide 
     177  the distance in km by 6371 to obtain the arc distance.    </div> 
     178             
     179            <h4 id="_LL_NARCS_DISTANCES_param_az">az&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     180              <span class="attr">in</span> 
     181               
     182               
     183              <span class="attr">required</span> 
     184               
     185               
     186               
     187               
     188            </h4> 
     189         
     190          <div class="comments">   The azimuth from Lon_lat0. The value is assumed to be in 
     191  radians unless the keyword DEGREES is set. 
     192</div> 
     193             
     194 
     195           
     196 
     197           
     198 
     199            <h3>Keywords</h3> 
     200             
     201            <h4 id="_LL_NARCS_DISTANCES_keyword_DEGREES">DEGREES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     202               
     203               
     204               
     205               
     206               
     207               
     208               
     209               
     210            </h4> 
     211         
     212            <div class="comments">  Set this keyword to express all measurements and 
     213  results in degrees. 
     214</div> 
     215             
     216           
     217 
     218          <h3>Examples</h3><div class="value">  
     219Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 
     220 
     221  
     222Lon_lat0 = [1.0, 2.0]; Initial point specified in radians 
     223Arc_Dist = 2.0; Arc distance in radians 
     224Az = 1.0; Azimuth in radians 
     225Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 
     226PRINT, Result 
     227       2.91415    -0.622234 
     228 
     229IDL> lon0 = [-10, 20, 100] 
     230IDL> lat0 = [0, -10, 45] 
     231IDL> lon1 = [10, 60, 280] 
     232IDL> lat1 = [0, 10, 45] 
     233IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
     234IDL> earthradius = 6378206.4d0 
     235IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 
     236IDL> print, reform(res[0, *]) 
     237       10.000000       60.000000       280.00000 
     238IDL> print, reform(res[1, *]) 
    171239          1.1999280e-15       10.000000       45.000000 
    172  
    173  MODIFICATION HISTORY: 
    174        Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03</div> 
    175  
    176            
    177  
    178            
    179             <h3>Parameters</h3> 
    180          
    181              
    182             <h4 id="_LL_NARCS_DISTANCES_param_lon0">lon0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    183                
    184                
    185                
    186                
    187                
    188                
    189                
    190                
    191             </h4> 
    192          
    193           <div class="comments"></div> 
    194              
    195             <h4 id="_LL_NARCS_DISTANCES_param_lat0">lat0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    196                
    197                
    198                
    199                
    200                
    201                
    202                
    203                
    204             </h4> 
    205          
    206           <div class="comments"></div> 
    207              
    208             <h4 id="_LL_NARCS_DISTANCES_param_arc_dist">arc_dist&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    209                
    210                
    211                
    212                
    213                
    214                
    215                
    216                
    217             </h4> 
    218          
    219           <div class="comments"></div> 
    220              
    221             <h4 id="_LL_NARCS_DISTANCES_param_az">az&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    222                
    223                
    224                
    225                
    226                
    227                
    228                
    229                
    230             </h4> 
    231          
    232           <div class="comments"></div> 
    233              
    234  
    235            
    236  
    237            
    238  
    239             <h3>Keywords</h3> 
    240              
    241             <h4 id="_LL_NARCS_DISTANCES_keyword_DEGREES">DEGREES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    242                
    243                
    244                
    245                
    246                
    247                
    248                
    249                
    250             </h4> 
    251          
    252             <div class="comments"></div> 
    253              
    254            
    255  
    256            
    257            
    258            
    259            
    260            
     240</div> 
     241          <h3>Version history</h3> 
     242           
     243           
     244          <h4>History</h4><div class="value"> 
     245       Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03 
     246 Sebastien Masson (smasson@lodyc.jussieu.fr) 
     247                  August 2005</div> 
    261248           
    262249           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/map_npoints.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_Map_npoints"> 
    103  
    104           <h2><a class="top" href="#container">top</a>Map_npoints </h2> 
    105          
    106           <p class="header"> 
    107             <span class="result">result = </span>Map_npoints(<span class="result"><a href="#_Map_npoints_param_lon0">lon0</a>, <a href="#_Map_npoints_param_lat0">lat0</a>, <a href="#_Map_npoints_param_lon1">lon1</a>, <a href="#_Map_npoints_param_lat1">lat1</a></span>, <a href="#_Map_npoints_keyword_azimuth">azimuth</a>=<span class="result">azimuth</span>, <a href="#_Map_npoints_keyword_RADIANS">RADIANS</a>=<span class="result">RADIANS</span>, <a href="#_Map_npoints_keyword_RADIUS">RADIUS</a>=<span class="result">RADIUS</span>, <a href="#_Map_npoints_keyword_MIDDLE">MIDDLE</a>=<span class="result">MIDDLE</span>, <a href="#_Map_npoints_keyword_TWO_BY_TWO">TWO_BY_TWO</a>=<span class="result">TWO_BY_TWO</span>)</p> 
    108          
    109           <div class="comments"> 
    110  NAME: 
    111         Map_nPoints 
    112  
    113  PURPOSE: 
    114         Return the distance in meter between all np0 points P0 and all 
     89      <div id="file_comments"> 
     90Return the distance in meter between all np0 points P0 and all 
    11591       np1 points P1 on a sphere. If keyword /TWO_BY_TWO is given then 
    11692       returns the distances between number n of P0 points and number 
     
    11894       Same as map_2points with the meter parameter but for n points 
    11995       without do loop. 
    120  
    121  CATEGORY: 
    122         Maps. 
    123  
    124  CALLING SEQUENCE: 
    125         Result = Map_nPoints(lon0, lat0, lon1, lat1) 
    126  
    127  INPUTS: 
    128         Lon0, Lat0 = np0 elements vector. longitudes and latitudes of 
    129         np0 points P0  
    130         Lon1, Lat1 = np1 elements vector. longitude and latitude of 
    131         np1 points P1  
    132  
    133  KEYWORD PARAMETERS: 
    134  
    135    AZIMUTH: A named variable that will receive the azimuth of the great 
    136        circle  connecting the two points, P0 to P1 
    137    /MIDDLE: to get the longitude/latitude of the middle point betwen P0 and P1. 
    138    RADIANS = if set, inputs and angular outputs are in radians, otherwise 
    139         degrees. 
    140    RADIUS: If given, return the distance between the two points 
    141         calculated using the given radius. 
    142        Default value is the earth radius : 6378206.4d0 
    143    TWO_BY_TWO:If given,then Map_nPoints returns the distances between 
    144        number n of P0 points and number n of P1 points (in that case, 
    145        np0 and np1 must be equal). 
    146  
    147  OUTPUTS: 
     96</div> 
     97 
     98       
     99 
     100       
     101 
     102       
     103 
     104       
     105 
     106      <div id="routine_details"> 
     107         
     108 
     109        <div class="routine_details" id="_Map_npoints"> 
     110 
     111          <h2><a class="top" href="#container">top</a>Map_npoints <span class="categories"> Maps 
     112</span></h2> 
     113         
     114          <p class="header"> 
     115            <span class="result">result = </span>Map_npoints(<span class="result"><a href="#_Map_npoints_param_lon0">lon0</a>, <a href="#_Map_npoints_param_lat0">lat0</a>, <a href="#_Map_npoints_param_lon1">lon1</a>, <a href="#_Map_npoints_param_lat1">lat1</a></span>, <a href="#_Map_npoints_keyword_azimuth">azimuth</a>=<span class="result">azimuth</span>, <a href="#_Map_npoints_keyword_RADIANS">RADIANS</a>=<span class="result">RADIANS</span>, <a href="#_Map_npoints_keyword_RADIUS">RADIUS</a>=<span class="result">RADIUS</span>, <a href="#_Map_npoints_keyword_MIDDLE">MIDDLE</a>=<span class="result">MIDDLE</span>, <a href="#_Map_npoints_keyword_TWO_BY_TWO">TWO_BY_TWO</a>=<span class="result">TWO_BY_TWO</span>)</p> 
     116         
     117          <div class="comments"> 
     118</div> 
     119 
     120          <h3>Return value</h3><div class="value"> 
    148121       An (np0,np1) array giving the distance in meter between np0 
    149122       points P0 and np1 points P1. Element (i,j) of the ouput is the 
     
    153126       and P1[i] (in that case, we have np0 = np1 = np) 
    154127       if /MIDDLE see this keyword. 
    155  
    156  EXAMPLES: 
    157         IDL> print, $ 
    158         map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 
    159                7551369.3       5600334.8 
    160                12864354.       10921254. 
    161                14919237.       5455558.8 
    162          
    163         IDL> lon0 = [-10, 20, 100] 
    164         IDL> lat0 = [0, -10, 45] 
    165         IDL> lon1 = [10, 60, 280] 
    166         IDL> lat1 = [0, 10, 45] 
    167         IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 
    168         IDL> help, dist, azi 
    169         DIST            DOUBLE    = Array[3, 3] 
    170         AZI             DOUBLE    = Array[3, 3] 
    171         IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 
    172                2226414.0       4957944.5       10018863. 
    173                90.000000       64.494450   4.9615627e-15 
    174         IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
    175         IDL> help, dist, azi 
    176         DIST            DOUBLE    = Array[3] 
    177         AZI             DOUBLE    = Array[3] 
    178         IDL> print, dist, azi 
    179                2226414.0       4957944.5       10018863. 
    180                90.000000       64.494450   4.9615627e-15 
    181         IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 
    182                20.000000       90.000000 
    183         IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 
    184                20.000000 
    185                90.000000 
    186  
    187         IDL> lon0 = [-10, 20, 100] 
    188         IDL> lat0 = [0, -10, 45] 
    189         IDL> lon1 = [10, 60, 280] 
    190         IDL> lat1 = [0, 10, 45] 
    191         IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 
    192         IDL> print, reform(mid[0,*]), reform(mid[1,*]) 
    193                0.0000000       40.000000       190.00000 
    194                0.0000000  -1.5902773e-15       90.000000 
    195         IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 
    196                0.0000000       0.0000000 
    197         IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 
    198                40.000000  -1.5902773e-15 
    199         IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 
    200                190.00000       90.000000 
    201          
    202  MODIFICATION HISTORY: 
    203        Based on the IDL function map_2points.pro,v 1.6 2001/01/15</div> 
    204  
    205            
     128</div> 
    206129 
    207130           
     
    210133             
    211134            <h4 id="_Map_npoints_param_lon0">lon0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     135              <span class="attr">in</span> 
     136               
     137               
     138              <span class="attr">required</span> 
     139               
     140               
     141               
     142               
     143            </h4> 
     144         
     145          <div class="comments"> np0 elements vector. longitudes and latitudes of np0 points P0 </div> 
     146             
     147            <h4 id="_Map_npoints_param_lat0">lat0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    212148               
    213149               
     
    222158          <div class="comments"></div> 
    223159             
    224             <h4 id="_Map_npoints_param_lat0">lat0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     160            <h4 id="_Map_npoints_param_lon1">lon1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     161              <span class="attr">in</span> 
     162               
     163               
     164              <span class="attr">required</span> 
     165               
     166               
     167               
     168               
     169            </h4> 
     170         
     171          <div class="comments">  np1 elements vector. longitude and latitude of np1 points P1  
     172</div> 
     173             
     174            <h4 id="_Map_npoints_param_lat1">lat1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    225175               
    226176               
     
    235185          <div class="comments"></div> 
    236186             
    237             <h4 id="_Map_npoints_param_lon1">lon1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    238                
    239                
    240                
    241                
    242                
    243                
    244                
    245                
    246             </h4> 
    247          
    248           <div class="comments"></div> 
    249              
    250             <h4 id="_Map_npoints_param_lat1">lat1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    251                
    252                
    253                
    254                
    255                
    256                
    257                
    258                
    259             </h4> 
    260          
    261           <div class="comments"></div> 
    262              
    263187 
    264188           
     
    279203            </h4> 
    280204         
    281             <div class="comments"></div> 
     205            <div class="comments"> A named variable that will receive the azimuth of the great 
     206       circle  connecting the two points, P0 to P1</div> 
    282207             
    283208            <h4 id="_Map_npoints_keyword_RADIANS">RADIANS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    292217            </h4> 
    293218         
    294             <div class="comments"></div> 
     219            <div class="comments"> = if set, inputs and angular outputs are in radians, otherwise 
     220degrees.</div> 
    295221             
    296222            <h4 id="_Map_npoints_keyword_RADIUS">RADIUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    305231            </h4> 
    306232         
    307             <div class="comments"></div> 
     233            <div class="comments"> If given, return the distance between the two points 
     234calculated using the given radius. 
     235       Default value is the earth radius : 6378206.4d0</div> 
    308236             
    309237            <h4 id="_Map_npoints_keyword_MIDDLE">MIDDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    318246            </h4> 
    319247         
    320             <div class="comments"></div> 
     248            <div class="comments"> to get the longitude/latitude of the middle point betwen P0 and P1.</div> 
    321249             
    322250            <h4 id="_Map_npoints_keyword_TWO_BY_TWO">TWO_BY_TWO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    331259            </h4> 
    332260         
    333             <div class="comments"></div> 
    334              
    335            
    336  
    337            
    338            
    339            
    340            
    341            
     261            <div class="comments">:If given,then Map_nPoints returns the distances between 
     262       number n of P0 points and number n of P1 points (in that case, 
     263       np0 and np1 must be equal). 
     264</div> 
     265             
     266           
     267 
     268          <h3>Examples</h3><div class="value">  
     269Result = Map_nPoints(lon0, lat0, lon1, lat1) 
     270 
     271 
     272IDL> print, $ 
     273map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 
     274       7551369.3       5600334.8 
     275       12864354.       10921254. 
     276       14919237.       5455558.8 
     277 
     278IDL> lon0 = [-10, 20, 100] 
     279IDL> lat0 = [0, -10, 45] 
     280IDL> lon1 = [10, 60, 280] 
     281IDL> lat1 = [0, 10, 45] 
     282IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 
     283IDL> help, dist, azi 
     284DIST            DOUBLE    = Array[3, 3] 
     285AZI             DOUBLE    = Array[3, 3] 
     286IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 
     287       2226414.0       4957944.5       10018863. 
     288       90.000000       64.494450   4.9615627e-15 
     289IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
     290IDL> help, dist, azi 
     291DIST            DOUBLE    = Array[3] 
     292AZI             DOUBLE    = Array[3] 
     293IDL> print, dist, azi 
     294       2226414.0       4957944.5       10018863. 
     295       90.000000       64.494450   4.9615627e-15 
     296IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 
     297       20.000000       90.000000 
     298IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 
     299       20.000000 
     300       90.000000 
     301 
     302IDL> lon0 = [-10, 20, 100] 
     303IDL> lat0 = [0, -10, 45] 
     304IDL> lon1 = [10, 60, 280] 
     305IDL> lat1 = [0, 10, 45] 
     306IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 
     307IDL> print, reform(mid[0,*]), reform(mid[1,*]) 
     308       0.0000000       40.000000       190.00000 
     309       0.0000000  -1.5902773e-15       90.000000 
     310IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 
     311       0.0000000       0.0000000 
     312IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 
     313       40.000000  -1.5902773e-15 
     314IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 
     315       190.00000       90.000000 
     316</div> 
     317          <h3>Version history</h3> 
     318           
     319           
     320          <h4>History</h4><div class="value"> 
     321       Based on the IDL function map_2points.pro,v 1.6 2001/01/15 
     322 Sebastien Masson (smasson@lodyc.jussieu.fr) 
     323                  October 2003</div> 
    342324           
    343325           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/neighbor.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> 
     90find the closetest point of (P0) within a list of np1 points 
     91P1 Which can be on a sphere  
     92</div> 
    9093 
    9194       
     
    102105        <div class="routine_details" id="_neighbor"> 
    103106 
    104           <h2><a class="top" href="#container">top</a>neighbor </h2> 
     107          <h2><a class="top" href="#container">top</a>neighbor <span class="categories"> Maps 
     108</span></h2> 
    105109         
    106110          <p class="header"> 
     
    108112         
    109113          <div class="comments"> 
    110  NAME: 
    111         neighbor 
    112  
    113  PURPOSE: 
    114         find the closetest point of (P0) within a list of np1 points 
    115         P1 Which can be on a sphere  
    116  
    117  CATEGORY: 
    118         Maps. 
    119  
    120  CALLING SEQUENCE: 
    121         Result = neighbor(lon0, lat0, lon1, lat1) 
    122  
    123  INPUTS: 
    124         Lon0, Lat0 = scalar. longitudes and latitudes of point P0.  
    125         Lon1, Lat1 = np1 elements vector. longitude and latitude of 
    126         np1 points P1  
    127  
    128  KEYWORD PARAMETERS: 
    129    RADIANS = if set, inputs and angular outputs are in radians, otherwise 
    130         degrees. 
    131    DISTANCE = dis, to get back the distances between P0 and the np1 
    132    points P1 in the variable dis. 
    133    /SPHERE to activate if points are located on a sphere. 
    134  
    135  OUTPUTS: 
     114</div> 
     115 
     116          <h3>Return value</h3><div class="value"> 
    136117       index giving the P1[index] point that is the closetest point 
    137118       of (P0) 
    138  
    139  EXAMPLES: 
     119</div> 
     120 
     121           
     122            <h3>Parameters</h3> 
     123         
     124             
     125            <h4 id="_neighbor_param_p0lon">p0lon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     126              <span class="attr">in</span> 
     127               
     128               
     129              <span class="attr">required</span> 
     130               
     131               
     132               
     133               
     134            </h4> 
     135         
     136          <div class="comments">  scalar. longitudes of point P0. </div> 
     137             
     138            <h4 id="_neighbor_param_p0lat">p0lat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     139              <span class="attr">in</span> 
     140               
     141               
     142              <span class="attr">required</span> 
     143               
     144               
     145               
     146               
     147            </h4> 
     148         
     149          <div class="comments">  scalar. latitudes of point P0.  
     150</div> 
     151             
     152            <h4 id="_neighbor_param_neighlon">neighlon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     153               
     154               
     155               
     156               
     157               
     158               
     159               
     160               
     161            </h4> 
     162         
     163          <div class="comments"></div> 
     164             
     165            <h4 id="_neighbor_param_neighlat">neighlat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     166               
     167               
     168               
     169               
     170               
     171               
     172               
     173               
     174            </h4> 
     175         
     176          <div class="comments"></div> 
     177             
     178 
     179           
     180 
     181           
     182 
     183            <h3>Keywords</h3> 
     184             
     185            <h4 id="_neighbor_keyword_sphere">sphere&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     186               
     187               
     188               
     189               
     190               
     191               
     192               
     193               
     194            </h4> 
     195         
     196            <div class="comments"> to activate if points are located on a sphere. 
     197</div> 
     198             
     199            <h4 id="_neighbor_keyword_distance">distance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     200               
     201               
     202               
     203               
     204               
     205               
     206               
     207               
     208            </h4> 
     209         
     210            <div class="comments"> dis, to get back the distances between P0 and the np1 
     211   points P1 in the variable dis.</div> 
     212             
     213            <h4 id="_neighbor_keyword_radians">radians&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     214               
     215               
     216               
     217               
     218               
     219               
     220               
     221               
     222            </h4> 
     223         
     224            <div class="comments"> if set, inputs and angular outputs are in radians, otherwise 
     225degrees.</div> 
     226             
     227           
     228 
     229          <h3>Examples</h3><div class="value">  
     230 IDL> Result = neighbor(lon0, lat0, lon1, lat1) 
     231 
     232 
    140233       IDL> print, neighbor(-105.15,40.02,[-0.07,100,50],[51.30,20,0], $ 
    141234            distance=dis) 
     
    143236       IDL> print, dis 
    144237             105.684      206.125      160.228 
    145  
    146  MODIFICATION HISTORY:</div> 
    147  
    148            
    149  
    150            
    151             <h3>Parameters</h3> 
    152          
    153              
    154             <h4 id="_neighbor_param_p0lon">p0lon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    155                
    156                
    157                
    158                
    159                
    160                
    161                
    162                
    163             </h4> 
    164          
    165           <div class="comments"></div> 
    166              
    167             <h4 id="_neighbor_param_p0lat">p0lat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    168                
    169                
    170                
    171                
    172                
    173                
    174                
    175                
    176             </h4> 
    177          
    178           <div class="comments"></div> 
    179              
    180             <h4 id="_neighbor_param_neighlon">neighlon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    181                
    182                
    183                
    184                
    185                
    186                
    187                
    188                
    189             </h4> 
    190          
    191           <div class="comments"></div> 
    192              
    193             <h4 id="_neighbor_param_neighlat">neighlat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    194                
    195                
    196                
    197                
    198                
    199                
    200                
    201                
    202             </h4> 
    203          
    204           <div class="comments"></div> 
    205              
    206  
    207            
    208  
    209            
    210  
    211             <h3>Keywords</h3> 
    212              
    213             <h4 id="_neighbor_keyword_sphere">sphere&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    214                
    215                
    216                
    217                
    218                
    219                
    220                
    221                
    222             </h4> 
    223          
    224             <div class="comments"></div> 
    225              
    226             <h4 id="_neighbor_keyword_distance">distance&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    227                
    228                
    229                
    230                
    231                
    232                
    233                
    234                
    235             </h4> 
    236          
    237             <div class="comments"></div> 
    238              
    239             <h4 id="_neighbor_keyword_radians">radians&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    240                
    241                
    242                
    243                
    244                
    245                
    246                
    247                
    248             </h4> 
    249          
    250             <div class="comments"></div> 
    251              
    252            
    253  
    254            
    255            
    256            
    257            
    258            
     238</div> 
     239          <h3>Version history</h3> 
     240           
     241           
     242          <h4>History</h4><div class="value"> 
     243 Sebastien Masson (smasson@lodyc.jussieu.fr) 
     244                  October 2003</div> 
    259245           
    260246           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/quadrilateral2square.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_quadrilateral2square"> 
    103  
    104           <h2><a class="top" href="#container">top</a>quadrilateral2square </h2> 
    105          
    106           <p class="header"> 
    107             <span class="result">result = </span>quadrilateral2square(<span class="result"><a href="#_quadrilateral2square_param_x0in">x0in</a>, <a href="#_quadrilateral2square_param_y0in">y0in</a>, <a href="#_quadrilateral2square_param_x1in">x1in</a>, <a href="#_quadrilateral2square_param_y1in">y1in</a>, <a href="#_quadrilateral2square_param_x2in">x2in</a>, <a href="#_quadrilateral2square_param_y2in">y2in</a>, <a href="#_quadrilateral2square_param_x3in">x3in</a>, <a href="#_quadrilateral2square_param_y3in">y3in</a>, <a href="#_quadrilateral2square_param_xxin">xxin</a>, <a href="#_quadrilateral2square_param_yyin">yyin</a></span>, <a href="#_quadrilateral2square_keyword_PERF">PERF</a>=<span class="result">PERF</span>)</p> 
    108          
    109           <div class="comments"> 
    110  NAME:quadrilateral2square 
    111  
    112  PURPOSE:warm (or map) an arbitrary quadrilateral onto a unit square  
     89      <div id="file_comments"> warm (or map) an arbitrary quadrilateral onto a unit square  
    11390 according to the 4-point correspondences: 
    11491       (x0,y0) -> (0,0) 
     
    12097 lines in all orientations and permit quadrilateral to quadrilateral 
    12198 mappings. see ref. bellow. 
    122  
    123  CATEGORY:image/grid manipulation 
    124  
    125  CALLING SEQUENCE: 
    126  
    127      res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 
    128   
    129  INPUTS: 
    130  
    131      x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 
    132      (see above for correspondance with the unit square). Can be 
    133      scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
    134      given in the anticlockwise order. 
    135  
    136      xin,yin:the coordinates of the point(s) for which we want to do the 
    137      mapping. Can be scalar or array. 
    138  
    139  KEYWORD PARAMETERS: 
    140  
    141     /DOUBLE: use double precision to perform the computation  
    142  
    143  OUTPUTS: 
     99</div> 
     100 
     101       
     102 
     103       
     104 
     105       
     106 
     107       
     108 
     109      <div id="routine_details"> 
     110         
     111 
     112        <div class="routine_details" id="_quadrilateral2square"> 
     113 
     114          <h2><a class="top" href="#container">top</a>quadrilateral2square <span class="categories"> image, grid manipulation 
     115</span></h2> 
     116         
     117          <p class="header"> 
     118            <span class="result">result = </span>quadrilateral2square(<span class="result"><a href="#_quadrilateral2square_param_x0in">x0in</a>, <a href="#_quadrilateral2square_param_y0in">y0in</a>, <a href="#_quadrilateral2square_param_x1in">x1in</a>, <a href="#_quadrilateral2square_param_y1in">y1in</a>, <a href="#_quadrilateral2square_param_x2in">x2in</a>, <a href="#_quadrilateral2square_param_y2in">y2in</a>, <a href="#_quadrilateral2square_param_x3in">x3in</a>, <a href="#_quadrilateral2square_param_y3in">y3in</a>, <a href="#_quadrilateral2square_param_xxin">xxin</a>, <a href="#_quadrilateral2square_param_yyin">yyin</a></span>, <a href="#_quadrilateral2square_keyword_PERF">PERF</a>=<span class="result">PERF</span>)</p> 
     119         
     120          <div class="comments"> 
     121</div> 
     122 
     123          <h3>Return value</h3><div class="value"> 
    144124 
    145125     (2,n) array: the new coodinates (xout, yout) of the (xin,yin) 
     
    148128     x0. If xin is an array , then n is equal to the number of 
    149129     elements of xin. 
    150  
    151  COMMON BLOCKS:none 
    152  
    153  SIDE EFFECTS: 
    154  
    155  RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 
    156  twisted) is not work. This has to be tested. 
    157  
    158  EXAMPLE: 
     130</div> 
     131 
     132           
     133            <h3>Parameters</h3> 
     134         
     135             
     136            <h4 id="_quadrilateral2square_param_x0in">x0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     137              <span class="attr">in</span> 
     138               
     139               
     140              <span class="attr">required</span> 
     141               
     142               
     143               
     144               
     145            </h4> 
     146         
     147          <div class="comments">  the coordinates of the quadrilateral</div> 
     148             
     149            <h4 id="_quadrilateral2square_param_y0in">y0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     150              <span class="attr">in</span> 
     151               
     152               
     153              <span class="attr">required</span> 
     154               
     155               
     156               
     157               
     158            </h4> 
     159         
     160          <div class="comments">  the coordinates of the quadrilateral</div> 
     161             
     162            <h4 id="_quadrilateral2square_param_x1in">x1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     163              <span class="attr">in</span> 
     164               
     165               
     166              <span class="attr">required</span> 
     167               
     168               
     169               
     170               
     171            </h4> 
     172         
     173          <div class="comments">  the coordinates of the quadrilateral</div> 
     174             
     175            <h4 id="_quadrilateral2square_param_y1in">y1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     176              <span class="attr">in</span> 
     177               
     178               
     179              <span class="attr">required</span> 
     180               
     181               
     182               
     183               
     184            </h4> 
     185         
     186          <div class="comments">  the coordinates of the quadrilateral</div> 
     187             
     188            <h4 id="_quadrilateral2square_param_x2in">x2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     189              <span class="attr">in</span> 
     190               
     191               
     192              <span class="attr">required</span> 
     193               
     194               
     195               
     196               
     197            </h4> 
     198         
     199          <div class="comments">  the coordinates of the quadrilateral</div> 
     200             
     201            <h4 id="_quadrilateral2square_param_y2in">y2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     202              <span class="attr">in</span> 
     203               
     204               
     205              <span class="attr">required</span> 
     206               
     207               
     208               
     209               
     210            </h4> 
     211         
     212          <div class="comments">  the coordinates of the quadrilateral</div> 
     213             
     214            <h4 id="_quadrilateral2square_param_x3in">x3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     215              <span class="attr">in</span> 
     216               
     217               
     218              <span class="attr">required</span> 
     219               
     220               
     221               
     222               
     223            </h4> 
     224         
     225          <div class="comments">  the coordinates of the quadrilateral</div> 
     226             
     227            <h4 id="_quadrilateral2square_param_y3in">y3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     228              <span class="attr">in</span> 
     229               
     230               
     231              <span class="attr">required</span> 
     232               
     233               
     234               
     235               
     236            </h4> 
     237         
     238          <div class="comments">  the coordinates of the quadrilateral 
     239     (see above for correspondance with the unit square). Can be 
     240     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     241     given in the anticlockwise order. 
     242</div> 
     243             
     244            <h4 id="_quadrilateral2square_param_xxin">xxin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     245              <span class="attr">in</span> 
     246               
     247               
     248              <span class="attr">required</span> 
     249               
     250               
     251               
     252               
     253            </h4> 
     254         
     255          <div class="comments"> the coordinates of the point(s) for which we want to do the 
     256     mapping. Can be scalar or array.</div> 
     257             
     258            <h4 id="_quadrilateral2square_param_yyin">yyin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     259              <span class="attr">in</span> 
     260               
     261               
     262              <span class="attr">required</span> 
     263               
     264               
     265               
     266               
     267            </h4> 
     268         
     269          <div class="comments"> the coordinates of the point(s) for which we want to do the 
     270     mapping. Can be scalar or array. 
     271</div> 
     272             
     273 
     274           
     275 
     276           
     277 
     278            <h3>Keywords</h3> 
     279             
     280            <h4 id="_quadrilateral2square_keyword_PERF">PERF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     281               
     282               
     283               
     284               
     285               
     286               
     287               
     288               
     289            </h4> 
     290         
     291            <div class="comments"></div> 
     292             
     293           
     294 
     295          <h3>Examples</h3><div class="value">  
     296 
     297     res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 
     298  
     299  
    159300 
    160301 IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 
     
    167308 IDL> inorg=quadrilateral2square(2,1,3,0,5,1,2,3,out[0,*],out[1,*]) 
    168309 IDL> tracegrille, reform(inorg[0,*],11,11), reform(inorg[1,*],11,11),color=indgen(12)*20 
    169  
    170  MODIFICATION HISTORY:</div> 
    171  
    172            
    173  
    174            
    175             <h3>Parameters</h3> 
    176          
    177              
    178             <h4 id="_quadrilateral2square_param_x0in">x0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    179                
    180                
    181                
    182                
    183                
    184                
    185                
    186                
    187             </h4> 
    188          
    189           <div class="comments"></div> 
    190              
    191             <h4 id="_quadrilateral2square_param_y0in">y0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    192                
    193                
    194                
    195                
    196                
    197                
    198                
    199                
    200             </h4> 
    201          
    202           <div class="comments"></div> 
    203              
    204             <h4 id="_quadrilateral2square_param_x1in">x1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    205                
    206                
    207                
    208                
    209                
    210                
    211                
    212                
    213             </h4> 
    214          
    215           <div class="comments"></div> 
    216              
    217             <h4 id="_quadrilateral2square_param_y1in">y1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    218                
    219                
    220                
    221                
    222                
    223                
    224                
    225                
    226             </h4> 
    227          
    228           <div class="comments"></div> 
    229              
    230             <h4 id="_quadrilateral2square_param_x2in">x2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    231                
    232                
    233                
    234                
    235                
    236                
    237                
    238                
    239             </h4> 
    240          
    241           <div class="comments"></div> 
    242              
    243             <h4 id="_quadrilateral2square_param_y2in">y2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    244                
    245                
    246                
    247                
    248                
    249                
    250                
    251                
    252             </h4> 
    253          
    254           <div class="comments"></div> 
    255              
    256             <h4 id="_quadrilateral2square_param_x3in">x3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    257                
    258                
    259                
    260                
    261                
    262                
    263                
    264                
    265             </h4> 
    266          
    267           <div class="comments"></div> 
    268              
    269             <h4 id="_quadrilateral2square_param_y3in">y3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    270                
    271                
    272                
    273                
    274                
    275                
    276                
    277                
    278             </h4> 
    279          
    280           <div class="comments"></div> 
    281              
    282             <h4 id="_quadrilateral2square_param_xxin">xxin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    283                
    284                
    285                
    286                
    287                
    288                
    289                
    290                
    291             </h4> 
    292          
    293           <div class="comments"></div> 
    294              
    295             <h4 id="_quadrilateral2square_param_yyin">yyin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    296                
    297                
    298                
    299                
    300                
    301                
    302                
    303                
    304             </h4> 
    305          
    306           <div class="comments"></div> 
    307              
    308  
    309            
    310  
    311            
    312  
    313             <h3>Keywords</h3> 
    314              
    315             <h4 id="_quadrilateral2square_keyword_PERF">PERF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    316                
    317                
    318                
    319                
    320                
    321                
    322                
    323                
    324             </h4> 
    325          
    326             <div class="comments"></div> 
    327              
    328            
    329  
    330            
    331            
    332            
    333            
    334            
    335            
    336            
    337            
    338            
    339            
    340            
    341            
     310</div> 
     311          <h3>Version history</h3> 
     312           
     313           
     314          <h4>History</h4><div class="value"> 
     315      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     316      August 2003 
     317      Based on "Digital Image Warping" by G. Wolberg 
     318      IEEE Computer Society Press, Los Alamitos, California 
     319      Chapter 3, see p 52-56 
     320      </div> 
     321           
     322           
     323          <h3>Known issues</h3> 
     324           
     325           
     326           
     327          <h4>Restrictions</h4><div class="value"> I think degenerated quadrilateral (e.g. flat of 
     328 twisted) is not work. This has to be tested. 
     329</div> 
    342330         
    343331           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_fstdrv.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_spl_fstdrv"> 
    103  
    104           <h2><a class="top" href="#container">top</a>spl_fstdrv </h2> 
    105          
    106           <p class="header"> 
    107             <span class="result">result = </span>spl_fstdrv(<span class="result"><a href="#_spl_fstdrv_param_x">x</a>, <a href="#_spl_fstdrv_param_y">y</a>, <a href="#_spl_fstdrv_param_yscd">yscd</a>, <a href="#_spl_fstdrv_param_x2">x2</a></span>)</p> 
    108          
    109           <div class="comments"> 
    110  NAME:spl_fstdrv 
    111  
    112  PURPOSE: SPL_FSTDRV returns the values of the first derivative of 
     89      <div id="file_comments"> SPL_FSTDRV returns the values of the first derivative of 
    11390 the interpolating function at the points X2i. it is a double 
    11491 precision array. 
     
    11996 of X2. The interpolation method is based on cubic spline, corrected 
    12097 in a way that interpolated value are also in ascending order 
    121  
    122  CATEGORY: 
    123  
    124  CALLING SEQUENCE: y2 =  spl_fstdrv(x, y, yscd, x2) 
    125  
    126  INPUTS: 
    127  
    128     x: An n-element (at least 2) input vector that specifies the 
     98</div> 
     99 
     100       
     101 
     102       
     103 
     104       
     105 
     106       
     107 
     108      <div id="routine_details"> 
     109         
     110 
     111        <div class="routine_details" id="_spl_fstdrv"> 
     112 
     113          <h2><a class="top" href="#container">top</a>spl_fstdrv </h2> 
     114         
     115          <p class="header"> 
     116            <span class="result">result = </span>spl_fstdrv(<span class="result"><a href="#_spl_fstdrv_param_x">x</a>, <a href="#_spl_fstdrv_param_y">y</a>, <a href="#_spl_fstdrv_param_yscd">yscd</a>, <a href="#_spl_fstdrv_param_x2">x2</a></span>)</p> 
     117         
     118          <div class="comments"> 
     119</div> 
     120 
     121          <h3>Return value</h3><div class="value">  
     122 
     123    y2: f'(x2) = y2.  
     124 
     125</div> 
     126 
     127           
     128            <h3>Parameters</h3> 
     129         
     130             
     131            <h4 id="_spl_fstdrv_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     132              <span class="attr">in</span> 
     133               
     134               
     135              <span class="attr">required</span> 
     136               
     137               
     138               
     139               
     140            </h4> 
     141         
     142          <div class="comments">  An n-element (at least 2) input vector that specifies the 
    129143    tabulate points in ascending order. 
    130  
    131     y: f(x) = y. An n-element input vector that specifies the values 
     144</div> 
     145             
     146            <h4 id="_spl_fstdrv_param_y">y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     147              <span class="attr">in</span> 
     148               
     149               
     150              <span class="attr">required</span> 
     151               
     152               
     153               
     154               
     155            </h4> 
     156         
     157          <div class="comments">  f(x) = y. An n-element input vector that specifies the values 
    132158    of the tabulated function F(Xi) corresponding to Xi. 
    133  
    134     yscd: The output from SPL_INIT for the specified X and Y. 
    135  
    136     x2: The input values for which the first derivative values are 
     159</div> 
     160             
     161            <h4 id="_spl_fstdrv_param_yscd">yscd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     162              <span class="attr">in</span> 
     163               
     164               
     165              <span class="attr">required</span> 
     166               
     167               
     168               
     169               
     170            </h4> 
     171         
     172          <div class="comments">  The output from SPL_INIT for the specified X and Y. 
     173</div> 
     174             
     175            <h4 id="_spl_fstdrv_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     176              <span class="attr">in</span> 
     177               
     178               
     179              <span class="attr">required</span> 
     180               
     181               
     182               
     183               
     184            </h4> 
     185         
     186          <div class="comments">  The input values for which the first derivative values are 
    137187    desired. X can be scalar or an array of values. 
    138  
    139  KEYWORD PARAMETERS: none 
    140  
    141  OUTPUTS:  
    142  
    143     y2: f'(x2) = y2.  
    144  
    145  COMMON BLOCKS: none 
    146  
    147  SIDE EFFECTS: ? 
    148  
    149  RESTRICTIONS: ? 
    150  
    151  EXAMPLE: 
    152  
    153  MODIFICATION HISTORY:</div> 
    154  
    155            
    156  
    157            
    158             <h3>Parameters</h3> 
    159          
    160              
    161             <h4 id="_spl_fstdrv_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    162                
    163                
    164                
    165                
    166                
    167                
    168                
    169                
    170             </h4> 
    171          
    172           <div class="comments"></div> 
    173              
    174             <h4 id="_spl_fstdrv_param_y">y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    175                
    176                
    177                
    178                
    179                
    180                
    181                
    182                
    183             </h4> 
    184          
    185           <div class="comments"></div> 
    186              
    187             <h4 id="_spl_fstdrv_param_yscd">yscd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    188                
    189                
    190                
    191                
    192                
    193                
    194                
    195                
    196             </h4> 
    197          
    198           <div class="comments"></div> 
    199              
    200             <h4 id="_spl_fstdrv_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    201                
    202                
    203                
    204                
    205                
    206                
    207                
    208                
    209             </h4> 
    210          
    211           <div class="comments"></div> 
    212              
    213  
    214            
    215  
    216            
    217  
    218            
    219            
    220            
    221            
    222            
     188</div> 
     189             
     190 
     191           
     192 
     193           
     194 
     195          <h3>Examples</h3><div class="value">  y2 =  spl_fstdrv(x, y, yscd, x2) 
     196</div> 
     197          <h3>Version history</h3> 
     198           
     199           
     200          <h4>History</h4><div class="value"> 
     201  Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005</div> 
    223202           
    224203           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_incr.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
     89      <div id="file_comments"> 
     90 
     91 Given the arrays X and Y, which tabulate a function (with the X[i] 
     92 AND Y[i] in ascending order), and given an input value X2, the 
     93 SPL_INCR function returns an interpolated value for the given values 
     94 of X2. The interpolation method is based on cubic spline, corrected 
     95 in a way that interpolated values are also monotonically increasing. 
     96</div> 
    9097 
    9198       
     
    102109           
    103110          <dt><p><a href="#_pure_concave"><span class="result">result = </span>pure_concave(<span class="result">x1, x2, y1, y2, der2, x</span>)</a></p><dt> 
    104           <dd>  NAME:spl_incr   PURPOSE:   Given the arrays X and Y, which tabulate a function (with the X[i]  AND Y[i] in ascending order), and given an input value X2, the  SPL_INCR function returns an interpolated value for the given values  of X2.</dd>         
     111          <dd> </dd>     
    105112           
    106113          <dt><p><a href="#_pure_convex"><span class="result">result = </span>pure_convex(<span class="result">x1, x2, y1, y2, der2, x</span>)</a></p><dt> 
     
    125132         
    126133          <div class="comments"> 
    127  NAME:spl_incr 
    128  
    129  PURPOSE: 
    130  
    131  Given the arrays X and Y, which tabulate a function (with the X[i] 
    132  AND Y[i] in ascending order), and given an input value X2, the 
    133  SPL_INCR function returns an interpolated value for the given values 
    134  of X2. The interpolation method is based on cubic spline, corrected 
    135  in a way that interpolated values are also monotonically increasing. 
    136  
    137  CATEGORY: 
    138  
    139  CALLING SEQUENCE: y2 =  spl_incr(x, y, x2) 
    140  
    141  INPUTS: 
    142  
    143     x: An n-element (at least 2) input vector that specifies the 
     134</div> 
     135 
     136          <h3>Return value</h3><div class="value">  
     137 
     138    y2: f(x2) = y2. Double precision array 
     139</div> 
     140 
     141           
     142            <h3>Parameters</h3> 
     143         
     144             
     145            <h4 id="_pure_concave_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     146              <span class="attr">in</span> 
     147               
     148               
     149              <span class="attr">required</span> 
     150               
     151               
     152               
     153               
     154            </h4> 
     155         
     156          <div class="comments">  An n-element (at least 2) input vector that specifies the 
    144157    tabulate points in a strict ascending order. 
    145  
    146     y: f(x) = y. An n-element input vector that specifies the values 
     158</div> 
     159             
     160            <h4 id="_pure_concave_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     161              <span class="attr">in</span> 
     162               
     163               
     164              <span class="attr">required</span> 
     165               
     166               
     167               
     168               
     169            </h4> 
     170         
     171          <div class="comments">  The input values for which the interpolated values are 
     172    desired. Its values must be strictly monotonically increasing.  
     173 
     174 
     175 
     176</div> 
     177             
     178            <h4 id="_pure_concave_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     179              <span class="attr">in</span> 
     180               
     181               
     182              <span class="attr">required</span> 
     183               
     184               
     185               
     186               
     187            </h4> 
     188         
     189          <div class="comments">  f(x) = y. An n-element input vector that specifies the values 
    147190    of the tabulated function F(Xi) corresponding to Xi. As f is 
    148191    supposed to be monotonically increasing, y values must be 
    149192    monotonically increasing. y can have equal consecutive values. 
    150  
    151     x2: The input values for which the interpolated values are 
    152     desired. Its values must be strictly monotonically increasing.  
    153  
    154  KEYWORD PARAMETERS: 
    155  
    156     YP0: The first derivative of the interpolating function at the 
    157     point X0. If YP0 is omitted, the second derivative at the 
    158     boundary is set to zero, resulting in a "natural spline." 
    159  
    160     YPN_1: The first derivative of the interpolating function at the 
    161     point Xn-1. If YPN_1 is omitted, the second derivative at the 
    162     boundary is set to zero, resulting in a "natural spline."  
    163  
    164  OUTPUTS:  
    165  
    166     y2: f(x2) = y2. Double precision array 
    167  
    168  COMMON BLOCKS: none 
    169  
    170  SIDE EFFECTS: ? 
    171  
    172  RESTRICTIONS: 
    173    It might be possible that y2[i+1]-y2[i] has very small negative 
    174    values (amplitude smaller than 1.e-6)... 
    175  
    176  EXAMPLE: 
     193</div> 
     194             
     195            <h4 id="_pure_concave_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     196               
     197               
     198               
     199               
     200               
     201               
     202               
     203               
     204            </h4> 
     205         
     206          <div class="comments"></div> 
     207             
     208            <h4 id="_pure_concave_param_der2">der2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     209               
     210               
     211               
     212               
     213               
     214               
     215               
     216               
     217            </h4> 
     218         
     219          <div class="comments"></div> 
     220             
     221            <h4 id="_pure_concave_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     222               
     223               
     224               
     225               
     226               
     227               
     228               
     229               
     230            </h4> 
     231         
     232          <div class="comments"></div> 
     233             
     234 
     235           
     236 
     237           
     238 
     239          <h3>Examples</h3><div class="value">  y2 =  spl_incr(x, y, x2) 
     240 
     241  
    177242 
    178243     n = 100L 
     
    194259     splot,c,xstyle=1,ystyle=1, yrange=[-.01,.05], ysurx=.25, petit = [1, 2, 2], /noerase 
    195260     oplot,[0, n_elements(c)], [0, 0], linestyle = 1 
    196  
    197  MODIFICATION HISTORY:</div> 
    198  
    199            
    200  
    201            
    202             <h3>Parameters</h3> 
    203          
    204              
    205             <h4 id="_pure_concave_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    206                
    207                
    208                
    209                
    210                
    211                
    212                
    213                
    214             </h4> 
    215          
    216           <div class="comments"></div> 
    217              
    218             <h4 id="_pure_concave_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    219                
    220                
    221                
    222                
    223                
    224                
    225                
    226                
    227             </h4> 
    228          
    229           <div class="comments"></div> 
    230              
    231             <h4 id="_pure_concave_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    232                
    233                
    234                
    235                
    236                
    237                
    238                
    239                
    240             </h4> 
    241          
    242           <div class="comments"></div> 
    243              
    244             <h4 id="_pure_concave_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    245                
    246                
    247                
    248                
    249                
    250                
    251                
    252                
    253             </h4> 
    254          
    255           <div class="comments"></div> 
    256              
    257             <h4 id="_pure_concave_param_der2">der2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    258                
    259                
    260                
    261                
    262                
    263                
    264                
    265                
    266             </h4> 
    267          
    268           <div class="comments"></div> 
    269              
    270             <h4 id="_pure_concave_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    271                
    272                
    273                
    274                
    275                
    276                
    277                
    278                
    279             </h4> 
    280          
    281           <div class="comments"></div> 
    282              
    283  
    284            
    285  
    286            
    287  
    288            
    289            
    290            
    291            
    292            
    293            
    294            
    295            
    296            
    297            
    298            
    299            
     261</div> 
     262          <h3>Version history</h3> 
     263           
     264           
     265          <h4>History</h4><div class="value"> 
     266  Sebastien Masson (smasson@lodyc.jussieu.fr): May-Dec 2005</div> 
     267           
     268           
     269          <h3>Known issues</h3> 
     270           
     271           
     272           
     273          <h4>Restrictions</h4><div class="value"> 
     274   It might be possible that y2[i+1]-y2[i] has very small negative 
     275   values (amplitude smaller than 1.e-6)... 
     276</div> 
    300277         
    301278           
     
    508485            </h4> 
    509486         
    510             <div class="comments"></div> 
     487            <div class="comments"> The first derivative of the interpolating function at the 
     488    point X0. If YP0 is omitted, the second derivative at the 
     489    boundary is set to zero, resulting in a "natural spline."</div> 
    511490             
    512491            <h4 id="_spl_incr_keyword_YPN_1">YPN_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    521500            </h4> 
    522501         
    523             <div class="comments"></div> 
     502            <div class="comments"> The first derivative of the interpolating function at the 
     503    point Xn-1. If YPN_1 is omitted, the second derivative at the 
     504    boundary is set to zero, resulting in a "natural spline." </div> 
    524505             
    525506           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_keep_mean.html

    r89 r101  
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_spl_keep_mean"> 
    103  
    104           <h2><a class="top" href="#container">top</a>spl_keep_mean </h2> 
    105          
    106           <p class="header"> 
    107             <span class="result">result = </span>spl_keep_mean(<span class="result"><a href="#_spl_keep_mean_param_x">x</a>, <a href="#_spl_keep_mean_param_yin">yin</a>, <a href="#_spl_keep_mean_param_x2">x2</a></span>, <a href="#_spl_keep_mean_keyword_YP0">YP0</a>=<span class="result">YP0</span>, <a href="#_spl_keep_mean_keyword_YPN_1">YPN_1</a>=<span class="result">YPN_1</span>, <a href="#_spl_keep_mean_keyword_GE0">GE0</a>=<span class="result">GE0</span>)</p> 
    108          
    109           <div class="comments"> 
    110  NAME:spl_keep_mean 
    111  
    112  PURPOSE: 
     89      <div id="file_comments"> 
    11390 
    11491 Given the arrays X and Y, which tabulate a function (with the X[i] 
     
    12097 from monthly mean and keep the monthly mean of the computed daily 
    12198 data equa to the original values) 
    122  
    123  CATEGORY: 
    124  
    125  CALLING SEQUENCE: y2 =  spl_keep_mean(x, y, x2) 
    126  
    127  INPUTS: 
    128  
    129     x: An n-element (at least 2) input vector that specifies the 
     99</div> 
     100 
     101       
     102 
     103       
     104 
     105       
     106 
     107       
     108 
     109      <div id="routine_details"> 
     110         
     111 
     112        <div class="routine_details" id="_spl_keep_mean"> 
     113 
     114          <h2><a class="top" href="#container">top</a>spl_keep_mean </h2> 
     115         
     116          <p class="header"> 
     117            <span class="result">result = </span>spl_keep_mean(<span class="result"><a href="#_spl_keep_mean_param_x">x</a>, <a href="#_spl_keep_mean_param_yin">yin</a>, <a href="#_spl_keep_mean_param_x2">x2</a></span>, <a href="#_spl_keep_mean_keyword_YP0">YP0</a>=<span class="result">YP0</span>, <a href="#_spl_keep_mean_keyword_YPN_1">YPN_1</a>=<span class="result">YPN_1</span>, <a href="#_spl_keep_mean_keyword_GE0">GE0</a>=<span class="result">GE0</span>)</p> 
     118         
     119          <div class="comments"></div> 
     120 
     121          <h3>Return value</h3><div class="value">  
     122 
     123    y2: the meean value between two consecutive values of x2. This 
     124    array has one element less than y2. y2 has double precision. 
     125</div> 
     126 
     127           
     128            <h3>Parameters</h3> 
     129         
     130             
     131            <h4 id="_spl_keep_mean_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     132              <span class="attr">in</span> 
     133               
     134               
     135              <span class="attr">required</span> 
     136               
     137               
     138               
     139               
     140            </h4> 
     141         
     142          <div class="comments">  An n-element (at least 2) input vector that specifies the 
    130143    tabulate points in a strict ascending order. 
    131  
    132     y: an array with one element less than x. y[i] represents the 
     144</div> 
     145             
     146            <h4 id="_spl_keep_mean_param_yin">yin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     147              <span class="attr">in</span> 
     148               
     149               
     150              <span class="attr">required</span> 
     151               
     152               
     153               
     154               
     155            </h4> 
     156         
     157          <div class="comments">  an array with one element less than x. y[i] represents the 
    133158    mean value between x[i] and x[i+1]. if /GE0 is activated, y must 
    134159    have positive values. 
    135  
    136     x2: The input values for which the interpolated values are 
     160</div> 
     161             
     162            <h4 id="_spl_keep_mean_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     163              <span class="attr">in</span> 
     164               
     165               
     166              <span class="attr">required</span> 
     167               
     168               
     169               
     170               
     171            </h4> 
     172         
     173          <div class="comments">  The input values for which the interpolated values are 
    137174    desired. Its values must be strictly monotonically increasing.  
    138175 
    139  KEYWORD PARAMETERS: 
    140  
    141     /GE0: to force that y2 is always GE than 0. In that case, y must 
    142     also be GE than 0. 
    143  
    144     YP0: The first derivative of the interpolating function at the 
     176</div> 
     177             
     178 
     179           
     180 
     181           
     182 
     183            <h3>Keywords</h3> 
     184             
     185            <h4 id="_spl_keep_mean_keyword_YP0">YP0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     186               
     187               
     188               
     189               
     190               
     191               
     192               
     193               
     194            </h4> 
     195         
     196            <div class="comments"> The first derivative of the interpolating function at the 
    145197    point X0. If YP0 is omitted, the second derivative at the 
    146198    boundary is set to zero, resulting in a "natural spline." 
    147  
    148     YPN_1: The first derivative of the interpolating function at the 
     199</div> 
     200             
     201            <h4 id="_spl_keep_mean_keyword_YPN_1">YPN_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     202               
     203               
     204               
     205               
     206               
     207               
     208               
     209               
     210            </h4> 
     211         
     212            <div class="comments"> The first derivative of the interpolating function at the 
    149213    point Xn-1. If YPN_1 is omitted, the second derivative at the 
    150214    boundary is set to zero, resulting in a "natural spline."  
    151  
    152  OUTPUTS:  
    153  
    154     y2: the meean value between two consecutive values of x2. This 
    155     array has one element less than y2. y2 has double precision. 
    156  
    157  COMMON BLOCKS: none 
    158  
    159  SIDE EFFECTS: ? 
    160  
    161  RESTRICTIONS: 
    162    It might be possible that y2 has very small negative values 
    163    (amplitude smaller than 1.e-6)...  
    164  
    165  
    166  EXAMPLE: 
     215</div> 
     216             
     217            <h4 id="_spl_keep_mean_keyword_GE0">GE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     218               
     219               
     220               
     221               
     222               
     223               
     224               
     225               
     226            </h4> 
     227         
     228            <div class="comments"> to force that y2 is always GE than 0. In that case, y must 
     229    also be GE than 0. 
     230</div> 
     231             
     232           
     233 
     234          <h3>Examples</h3><div class="value">  y2 =  spl_keep_mean(x, y, x2) 
     235 
     236  
    167237 
    168238    12 monthly values of precipitations into daily values: 
     
    185255    print, total(y*(x[1:n1-1]-x[0:n1-2])) 
    186256    print, total(y2*(x2[1:n2-1]-x2[0:n2-2])) 
    187  
    188  MODIFICATION HISTORY:</div> 
    189  
    190            
    191  
    192            
    193             <h3>Parameters</h3> 
    194          
    195              
    196             <h4 id="_spl_keep_mean_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    197                
    198                
    199                
    200                
    201                
    202                
    203                
    204                
    205             </h4> 
    206          
    207           <div class="comments"></div> 
    208              
    209             <h4 id="_spl_keep_mean_param_yin">yin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    210                
    211                
    212                
    213                
    214                
    215                
    216                
    217                
    218             </h4> 
    219          
    220           <div class="comments"></div> 
    221              
    222             <h4 id="_spl_keep_mean_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    223                
    224                
    225                
    226                
    227                
    228                
    229                
    230                
    231             </h4> 
    232          
    233           <div class="comments"></div> 
    234              
    235  
    236            
    237  
    238            
    239  
    240             <h3>Keywords</h3> 
    241              
    242             <h4 id="_spl_keep_mean_keyword_YP0">YP0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    243                
    244                
    245                
    246                
    247                
    248                
    249                
    250                
    251             </h4> 
    252          
    253             <div class="comments"></div> 
    254              
    255             <h4 id="_spl_keep_mean_keyword_YPN_1">YPN_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    256                
    257                
    258                
    259                
    260                
    261                
    262                
    263                
    264             </h4> 
    265          
    266             <div class="comments"></div> 
    267              
    268             <h4 id="_spl_keep_mean_keyword_GE0">GE0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    269                
    270                
    271                
    272                
    273                
    274                
    275                
    276                
    277             </h4> 
    278          
    279             <div class="comments"></div> 
    280              
    281            
    282  
    283            
    284            
    285            
    286            
    287            
    288            
    289            
    290            
    291            
    292            
    293            
    294            
     257</div> 
     258          <h3>Version history</h3> 
     259           
     260           
     261          <h4>History</h4><div class="value"> 
     262  Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005</div> 
     263           
     264           
     265          <h3>Known issues</h3> 
     266           
     267           
     268           
     269          <h4>Restrictions</h4><div class="value"> 
     270   It might be possible that y2 has very small negative values 
     271   (amplitude smaller than 1.e-6)...  
     272 
     273</div> 
    295274         
    296275           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/square2quadrilateral.html

    r89 r101  
    7272<div id="secondary_navbar"> 
    7373 
    74 <a href="spl_keep_mean.html">&lt;&lt;prev file</a> | <a href="testinterp.html">next file &gt;&gt;</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="square2quadrilateral.html" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a>&nbsp;&nbsp;&nbsp;&nbsp;summary: fields | routine&nbsp;&nbsp;&nbsp;&nbsp;details: <a href="#routine_details">routine</a> 
     74<a href="spl_keep_mean.html">&lt;&lt;prev file</a> | <a href="testinterp.html">next file &gt;&gt;</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="square2quadrilateral.html" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a>&nbsp;&nbsp;&nbsp;&nbsp;summary: fields | <a href="#routine_summary">routine</a>&nbsp;&nbsp;&nbsp;&nbsp;details: <a href="#routine_details">routine</a> 
    7575 
    7676</div> 
     
    8787      </div> 
    8888 
    89       <div id="file_comments"></div> 
    90  
    91        
    92  
    93        
    94  
    95        
    96  
    97        
    98  
    99       <div id="routine_details"> 
    100          
    101  
    102         <div class="routine_details" id="_square2quadrilateral"> 
    103  
    104           <h2><a class="top" href="#container">top</a>square2quadrilateral </h2> 
    105          
    106           <p class="header"> 
    107             <span class="result">result = </span>square2quadrilateral(<span class="result"><a href="#_square2quadrilateral_param_x0in">x0in</a>, <a href="#_square2quadrilateral_param_y0in">y0in</a>, <a href="#_square2quadrilateral_param_x1in">x1in</a>, <a href="#_square2quadrilateral_param_y1in">y1in</a>, <a href="#_square2quadrilateral_param_x2in">x2in</a>, <a href="#_square2quadrilateral_param_y2in">y2in</a>, <a href="#_square2quadrilateral_param_x3in">x3in</a>, <a href="#_square2quadrilateral_param_y3in">y3in</a>, <a href="#_square2quadrilateral_param_xxin">xxin</a>, <a href="#_square2quadrilateral_param_yyin">yyin</a></span>)</p> 
    108          
    109           <div class="comments"> 
    110  NAME:square2quadrilateral 
    111  
    112  PURPOSE:warm (or map) a unit square onto an arbitrary quadrilateral 
     89      <div id="file_comments"> warm (or map) a unit square onto an arbitrary quadrilateral 
    11390 according to the 4-point correspondences: 
    11491       (0,0) -> (x0,y0) 
     
    11996 lines in all orientations and permit quadrilateral to quadrilateral 
    12097 mappings. see ref. bellow. 
    121  
    122  CATEGORY:image/grid manipulation 
    123  
    124  CALLING SEQUENCE: 
     98</div> 
     99 
     100       
     101 
     102       
     103 
     104       
     105 
     106       
     107      <div id="routine_summary">                 
     108        <h2>Routine summary</h2> 
     109         
     110        <dl> 
     111           
     112          <dt><p><a href="#_square2quadrilateral"><span class="result">result = </span>square2quadrilateral(<span class="result">x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin</span>)</a></p><dt> 
     113          <dd> </dd>     
     114           
     115          <dt><p><a href="#_square2quadrilateral"><span class="result">result = </span>square2quadrilateral(<span class="result">x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin</span>)</a></p><dt> 
     116          <dd></dd>      
     117                 
     118        </dl> 
     119      </div> 
     120       
     121 
     122      <div id="routine_details"> 
     123         
     124 
     125        <div class="routine_details" id="_square2quadrilateral"> 
     126 
     127          <h2><a class="top" href="#container">top</a>square2quadrilateral <span class="categories"> image, grid manipulation 
     128</span></h2> 
     129         
     130          <p class="header"> 
     131            <span class="result">result = </span>square2quadrilateral(<span class="result"><a href="#_square2quadrilateral_param_x0in">x0in</a>, <a href="#_square2quadrilateral_param_y0in">y0in</a>, <a href="#_square2quadrilateral_param_x1in">x1in</a>, <a href="#_square2quadrilateral_param_y1in">y1in</a>, <a href="#_square2quadrilateral_param_x2in">x2in</a>, <a href="#_square2quadrilateral_param_y2in">y2in</a>, <a href="#_square2quadrilateral_param_x3in">x3in</a>, <a href="#_square2quadrilateral_param_y3in">y3in</a>, <a href="#_square2quadrilateral_param_xxin">xxin</a>, <a href="#_square2quadrilateral_param_yyin">yyin</a></span>)</p> 
     132         
     133          <div class="comments"> 
     134</div> 
     135 
     136           
     137 
     138           
     139            <h3>Parameters</h3> 
     140         
     141             
     142            <h4 id="_square2quadrilateral_param_x0in">x0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     143               
     144               
     145               
     146               
     147               
     148               
     149               
     150               
     151            </h4> 
     152         
     153          <div class="comments"></div> 
     154             
     155            <h4 id="_square2quadrilateral_param_y0in">y0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     156               
     157               
     158               
     159               
     160               
     161               
     162               
     163               
     164            </h4> 
     165         
     166          <div class="comments"></div> 
     167             
     168            <h4 id="_square2quadrilateral_param_x1in">x1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     169               
     170               
     171               
     172               
     173               
     174               
     175               
     176               
     177            </h4> 
     178         
     179          <div class="comments"></div> 
     180             
     181            <h4 id="_square2quadrilateral_param_y1in">y1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     182               
     183               
     184               
     185               
     186               
     187               
     188               
     189               
     190            </h4> 
     191         
     192          <div class="comments"></div> 
     193             
     194            <h4 id="_square2quadrilateral_param_x2in">x2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     195               
     196               
     197               
     198               
     199               
     200               
     201               
     202               
     203            </h4> 
     204         
     205          <div class="comments"></div> 
     206             
     207            <h4 id="_square2quadrilateral_param_y2in">y2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     208               
     209               
     210               
     211               
     212               
     213               
     214               
     215               
     216            </h4> 
     217         
     218          <div class="comments"></div> 
     219             
     220            <h4 id="_square2quadrilateral_param_x3in">x3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     221               
     222               
     223               
     224               
     225               
     226               
     227               
     228               
     229            </h4> 
     230         
     231          <div class="comments"></div> 
     232             
     233            <h4 id="_square2quadrilateral_param_y3in">y3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     234               
     235               
     236               
     237               
     238               
     239               
     240               
     241               
     242            </h4> 
     243         
     244          <div class="comments"></div> 
     245             
     246            <h4 id="_square2quadrilateral_param_xxin">xxin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     247               
     248               
     249               
     250               
     251               
     252               
     253               
     254               
     255            </h4> 
     256         
     257          <div class="comments"></div> 
     258             
     259            <h4 id="_square2quadrilateral_param_yyin">yyin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     260               
     261               
     262               
     263               
     264               
     265               
     266               
     267               
     268            </h4> 
     269         
     270          <div class="comments"></div> 
     271             
     272 
     273           
     274 
     275           
     276 
     277          <h3>Examples</h3><div class="value">  
    125278 
    126279     res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3[,xin,yin]) 
    127   
    128  INPUTS: 
    129  
    130      x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 
    131      (see above for correspondance with the unit square). Can be 
    132      scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
    133      given in the anticlockwise order. 
    134  
    135      xin,yin:the coordinates of the point(s) for which we want to do the 
    136      mapping. Can be scalar or array. 
    137  
    138  KEYWORD PARAMETERS: 
    139  
    140     /DOUBLE: use double precision to perform the computation  
    141  
    142  OUTPUTS: 
    143  
    144      (2,n) array: the new coodinates (xout, yout) of the (xin,yin) 
    145      point(s) after mapping.  
    146      If xin is a scalar, then n is equal to the number of elements of 
    147      x0. If xin is an array , then n is equal to the number of 
    148      elements of xin. 
    149      If xin and yin are omited, square2quadrilateral returns the 
    150      matrix A which is used for the inverse transformation.  
    151  
    152  COMMON BLOCKS:none 
    153  
    154  SIDE EFFECTS: 
    155  
    156  RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 
    157  twisted) is not work. This has to be tested. 
    158  
    159  EXAMPLE: 
    160  
    161  IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 
    162  IDL> tracegrille, findgen(11)*.1, findgen(11)*.1,color=indgen(12)*20 
    163  IDL> xin = (findgen(11)*.1)#replicate(1, 11) 
    164  IDL> yin = replicate(1, 11)#(findgen(11)*.1) 
    165  IDL> out = square2quadrilateral(2,1,3,0,5,1,2,3, xin, yin) 
    166  IDL> tracegrille, reform(out[0,*],11,11), reform(out[1,*],11,11),color=indgen(12)*20 
    167  
    168  MODIFICATION HISTORY:</div> 
     280 </div> 
     281           
     282           
     283           
     284           
     285           
     286           
     287           
     288           
     289           
     290           
     291           
     292         
     293           
     294           
     295           
     296           
     297           
     298           
     299           
     300         
     301           
     302         
     303        </div> 
     304         
     305 
     306        <div class="routine_details" id="_square2quadrilateral"> 
     307 
     308          <h2><a class="top" href="#container">top</a>square2quadrilateral </h2> 
     309         
     310          <p class="header"> 
     311            <span class="result">result = </span>square2quadrilateral(<span class="result"><a href="#_square2quadrilateral_param_x0in">x0in</a>, <a href="#_square2quadrilateral_param_y0in">y0in</a>, <a href="#_square2quadrilateral_param_x1in">x1in</a>, <a href="#_square2quadrilateral_param_y1in">y1in</a>, <a href="#_square2quadrilateral_param_x2in">x2in</a>, <a href="#_square2quadrilateral_param_y2in">y2in</a>, <a href="#_square2quadrilateral_param_x3in">x3in</a>, <a href="#_square2quadrilateral_param_y3in">y3in</a>, <a href="#_square2quadrilateral_param_xxin">xxin</a>, <a href="#_square2quadrilateral_param_yyin">yyin</a></span>)</p> 
     312         
     313          <div class="comments"></div> 
    169314 
    170315           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlec5j.html

    r97 r101  
    243243           
    244244           
    245            
     245          <h4>Restrictions</h4><div class="value"> appele par nlec 
     246</div> 
    246247         
    247248          <h3>Other attributes</h3> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/VECTEUR/velovect.html

    r89 r101  
    107107            VELOVECT<span class="result">, <a href="#_VELOVECT_param_U">U</a>, <a href="#_VELOVECT_param_V">V</a>, <a href="#_VELOVECT_param_X">X</a>, <a href="#_VELOVECT_param_Y">Y</a></span>, <a href="#_VELOVECT_keyword_Missing">Missing</a>=<span class="result">Missing</span>, <a href="#_VELOVECT_keyword_Length">Length</a>=<span class="result">Length</span>, <a href="#_VELOVECT_keyword_Dots">Dots</a>=<span class="result">Dots</span>, <a href="#_VELOVECT_keyword_Color">Color</a>=<span class="result">Color</span>, <a href="#_VELOVECT_keyword_CLIP">CLIP</a>=<span class="result">CLIP</span>, <a href="#_VELOVECT_keyword_NOCLIP">NOCLIP</a>=<span class="result">NOCLIP</span>, <a href="#_VELOVECT_keyword_OVERPLOT">OVERPLOT</a>=<span class="result">OVERPLOT</span>, <a href="#_VELOVECT_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p> 
    108108         
    109           <div class="comments"></div> 
     109          <div class="comments">  
     110 NAME: 
     111        VELOVECT 
     112 
     113 PURPOSE: 
     114        Produce a two-dimensional velocity field plot. 
     115 
     116        A directed arrow is drawn at each point showing the direction and  
     117        magnitude of the field. 
     118                
     119 CATEGORY: 
     120        Plotting, two-dimensional. 
     121 
     122 CALLING SEQUENCE: 
     123        VELOVECT, U, V [, X, Y] 
     124 
     125 INPUTS: 
     126        U:      The X component of the two-dimensional field.   
     127                U must be a two-dimensional array. 
     128 
     129        V:      The Y component of the two dimensional field.  Y must have 
     130                the same dimensions as X.  The vector at point [i,j] has a  
     131                magnitude of: 
     132 
     133                        (U[i,j]^2 + V[i,j]^2)^0.5 
     134 
     135                and a direction of: 
     136 
     137                        ATAN2(V[i,j],U[i,j]). 
     138 
     139 OPTIONAL INPUT PARAMETERS: 
     140        X:      Optional abcissae values.  X must be a vector with a length  
     141                equal to the first dimension of U and V. 
     142 
     143        Y:      Optional ordinate values.  Y must be a vector with a length 
     144                equal to the first dimension of U and V. 
     145 
     146 KEYWORD INPUT PARAMETERS: 
     147        COLOR:  The color index used for the plot. 
     148 
     149        DOTS:   Set this keyword to 1 to place a dot at each missing point.  
     150                Set this keyword to 0 or omit it to draw nothing for missing 
     151                points.  Has effect only if MISSING is specified. 
     152 
     153        LENGTH: Length factor.  The default of 1.0 makes the longest (U,V) 
     154                vector the length of a cell. 
     155 
     156       MISSING: Missing data value.  Vectors with a LENGTH greater 
     157                than MISSING are ignored. 
     158 
     159       OVERPLOT: Set this keyword to make VELOVECT "overplot".  That is, the 
     160               current graphics screen is not erased, no axes are drawn, and 
     161               the previously established scaling remains in effect. 
     162 
     163 
     164        Note:   All other keywords are passed directly to the PLOT procedure 
     165                and may be used to set option such as TITLE, POSITION,  
     166                NOERASE, etc. 
     167 OUTPUTS: 
     168        None. 
     169 
     170 COMMON BLOCKS: 
     171        None. 
     172 
     173 SIDE EFFECTS: 
     174        Plotting on the selected device is performed.  System 
     175        variables concerning plotting are changed. 
     176 
     177 RESTRICTIONS: 
     178        None. 
     179 
     180 PROCEDURE: 
     181        Straightforward.  Unrecognized keywords are passed to the PLOT 
     182        procedure.   
     183 
     184 MODIFICATION HISTORY: 
     185        DMS, RSI, Oct., 1983. 
     186        For Sun, DMS, RSI, April, 1989. 
     187        Added TITLE, Oct, 1990. 
     188        Added POSITION, NOERASE, COLOR, Feb 91, RES. 
     189        August, 1993.  Vince Patrick, Adv. Visualization Lab, U. of Maryland, 
     190                fixed errors in math. 
     191        August, 1993. DMS, Added _EXTRA keyword inheritance. 
     192        January, 1994, KDB. Fixed integer math which produced 0 and caused 
     193                            divide by zero errors. 
     194        December, 1994, MWR. Added _EXTRA inheritance for PLOTS and OPLOT. 
     195        June, 1995, MWR. Removed _EXTRA inheritance for PLOTS and changed 
     196                         OPLOT to PLOTS. 
     197       September, 1996, GGS. Changed denominator of x_step and y_step vars.  
     198       February, 1998, DLD.  Add support for CLIP and NO_CLIP keywords. 
     199       June, 1998, DLD.  Add support for OVERPLOT keyword.</div> 
    110200 
    111201           
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-categories.html

    r97 r101  
    116116             
    117117          </ul> 
     118        </li>        <li id="idldoc-Mapping">Mapping <span class="result">(1 routine)</span> 
     119          <ul> 
     120             
     121            <li><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">LL_NARCS_DISTANCES</a></li> 
     122             
     123          </ul> 
     124        </li>        <li id="idldoc-Maps">Maps <span class="result">(2 routines)</span> 
     125          <ul> 
     126             
     127            <li><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">Map_npoints</a></li> 
     128             
     129            <li><a href="./Interpolation/neighbor.html?format=raw#_neighbor">neighbor</a></li> 
     130             
     131          </ul> 
     132        </li>        <li id="idldoc-basic_work">basic work <span class="result">(2 routines)</span> 
     133          <ul> 
     134             
     135            <li><a href="./Interpolation/cutpar.html?format=raw#_cutpar">cutpar</a></li> 
     136             
     137            <li><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">cutsegment</a></li> 
     138             
     139          </ul> 
    118140        </li>        <li id="idldoc-calendar">calendar <span class="result">(7 routines)</span> 
    119141          <ul> 
     
    140162             
    141163          </ul> 
     164        </li>        <li id="idldoc-finding_where_is_a_point_on_a_grid">finding where is a point on a grid <span class="result">(1 routine)</span> 
     165          <ul> 
     166             
     167            <li><a href="./Interpolation/clickincell.html?format=raw#_clickincell">clickincell</a></li> 
     168             
     169          </ul> 
     170        </li>        <li id="idldoc-geography">geography <span class="result">(1 routine)</span> 
     171          <ul> 
     172             
     173            <li><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">LL_NARCS_DISTANCES</a></li> 
     174             
     175          </ul> 
     176        </li>        <li id="idldoc-grid_manipulation">grid manipulation <span class="result">(3 routines)</span> 
     177          <ul> 
     178             
     179            <li><a href="./Interpolation/inquad.html?format=raw#_inquad">inquad</a></li> 
     180             
     181            <li><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">quadrilateral2square</a></li> 
     182             
     183            <li><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></li> 
     184             
     185          </ul> 
     186        </li>        <li id="idldoc-image">image <span class="result">(2 routines)</span> 
     187          <ul> 
     188             
     189            <li><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">quadrilateral2square</a></li> 
     190             
     191            <li><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></li> 
     192             
     193          </ul> 
     194        </li>        <li id="idldoc-interpolation">interpolation <span class="result">(4 routines)</span> 
     195          <ul> 
     196             
     197            <li><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">compute_fromreg_bilinear_weigaddr</a></li> 
     198             
     199            <li><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">compute_fromreg_imoms3_weigaddr</a></li> 
     200             
     201            <li><a href="./Interpolation/fromreg.html?format=raw#_fromreg">fromreg</a></li> 
     202             
     203            <li><a href="./Interpolation/get_gridparams.html?format=raw#_get_gridparams">get_gridparams</a></li> 
     204             
     205          </ul> 
    142206        </li>        <li id="idldoc-io">io <span class="result">(2 routines)</span> 
    143207          <ul> 
     
    168232             
    169233          </ul> 
     234        </li>        <li id="idldoc-no_DO_loop">no DO loop <span class="result">(1 routine)</span> 
     235          <ul> 
     236             
     237            <li><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">inrecgrid</a></li> 
     238             
     239          </ul> 
    170240        </li>        <li id="idldoc-string">string <span class="result">(1 routine)</span> 
    171241          <ul> 
    172242             
    173243            <li><a href="./Calendar/date2string.html?format=raw#_date2string">date2string</a></li> 
     244             
     245          </ul> 
     246        </li>        <li id="idldoc-">use the wonderfull value_locate function! <span class="result">(1 routine)</span> 
     247          <ul> 
     248             
     249            <li><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">inrecgrid</a></li> 
    174250             
    175251          </ul> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-O.html

    r89 r101  
    232232        <dd>a keyword from the routine IMDISP</dd> 
    233233         
     234        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">OV1D</a></dt> 
     235        <dd>a keyword from the routine plt1d</dd> 
     236         
     237        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OV1D</a></dt> 
     238        <dd>a keyword from the routine pltt</dd> 
     239         
    234240        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">OV1D</a></dt> 
    235241        <dd>a keyword from the routine pltsc</dd> 
    236242         
    237         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OV1D</a></dt> 
    238         <dd>a keyword from the routine pltt</dd> 
    239          
    240         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">OV1D</a></dt> 
    241         <dd>a keyword from the routine plt1d</dd> 
    242          
    243243        <dt><a href="./ToBeReviewed/COULEURS/newpalette.html?format=raw#_newpalette">OVER</a></dt> 
    244244        <dd>a keyword from the routine newpalette</dd> 
    245245         
     246        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OVERPLOT</a></dt> 
     247        <dd>a keyword from the routine pltt</dd> 
     248         
     249        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">OVERPLOT</a></dt> 
     250        <dd>a keyword from the routine pltz</dd> 
     251         
     252        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">OVERPLOT</a></dt> 
     253        <dd>a keyword from the routine VELOVECT</dd> 
     254         
     255        <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">OVERPLOT</a></dt> 
     256        <dd>a keyword from the routine drawsectionbottom</dd> 
     257         
     258        <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">OVERPLOT</a></dt> 
     259        <dd>a keyword from the routine tracemask</dd> 
     260         
    246261        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">OVERPLOT</a></dt> 
    247262        <dd>a keyword from the routine plt</dd> 
    248263         
    249         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OVERPLOT</a></dt> 
    250         <dd>a keyword from the routine pltt</dd> 
    251          
    252         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">OVERPLOT</a></dt> 
    253         <dd>a keyword from the routine pltz</dd> 
    254          
    255         <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">OVERPLOT</a></dt> 
    256         <dd>a keyword from the routine VELOVECT</dd> 
    257          
    258         <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">OVERPLOT</a></dt> 
    259         <dd>a keyword from the routine drawsectionbottom</dd> 
    260          
    261         <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">OVERPLOT</a></dt> 
    262         <dd>a keyword from the routine tracemask</dd> 
    263          
    264264        <dt><a href="./Textoidl/matchdelim.html?format=raw#_Matchdelim">OpenPos</a></dt> 
    265265        <dd>a parameter from the routine ./Textoidl/matchdelim.html</dd> 
     
    274274        <dd>a keyword from the routine test</dd> 
    275275         
     276        <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">olat</a></dt> 
     277        <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 
     278         
    276279        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olat</a></dt> 
    277280        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
    278281         
    279         <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">olat</a></dt> 
    280         <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 
     282        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olat</a></dt> 
     283        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
    281284         
    282285        <dt><a href="ForOldVersion/oldcm_empty.html?format=raw">oldcm_empty.pro</a></dt> 
     
    286289        <dd>a file from the directory ./ForOldVersion</dd> 
    287290         
     291        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olonin</a></dt> 
     292        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
     293         
     294        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olonin</a></dt> 
     295        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
     296         
    288297        <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">olonin</a></dt> 
    289298        <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 
    290299         
    291         <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olonin</a></dt> 
    292         <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
    293          
    294300        <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">onemore</a></dt> 
    295301        <dd>a keyword from the routine drawcoast_e</dd> 
     
    298304        <dd>a keyword from the routine make_selection</dd> 
    299305         
     306        <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">onsphere</a></dt> 
     307        <dd>a keyword from the routine cutsegment</dd> 
     308         
    300309        <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">onsphere</a></dt> 
    301310        <dd>a keyword from the routine cutpar</dd> 
    302311         
    303         <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">onsphere</a></dt> 
    304         <dd>a keyword from the routine cutsegment</dd> 
    305          
    306312        <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply">op</a></dt> 
    307313        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> 
     
    319325        <dd>a file from the directory ./ToBeReviewed/UTILITAIRE</dd> 
    320326         
     327        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">out</a></dt> 
     328        <dd>a keyword from the routine tracecadre</dd> 
     329         
    321330        <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_ftp_post">out</a></dt> 
    322331        <dd>a keyword from the routine ftp_post</dd> 
    323332         
    324         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">out</a></dt> 
    325         <dd>a keyword from the routine tracecadre</dd> 
     333        <dt><a href="./Grid/micromeshmask.html?format=raw#_ncdf_transfer">outid</a></dt> 
     334        <dd>a parameter from the routine ./Grid/micromeshmask.html</dd> 
    326335         
    327336        <dt><a href="./Grid/smallmeshmask.html?format=raw#_ncdf_transfer">outid</a></dt> 
    328337        <dd>a parameter from the routine ./Grid/smallmeshmask.html</dd> 
    329338         
    330         <dt><a href="./Grid/micromeshmask.html?format=raw#_ncdf_transfer">outid</a></dt> 
    331         <dd>a parameter from the routine ./Grid/micromeshmask.html</dd> 
    332          
    333339        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">outline</a></dt> 
    334340        <dd>a keyword from the routine bar_plot</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-S.html

    r89 r101  
    208208        <dd>a keyword from the routine computegrid</dd> 
    209209         
     210        <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">SHIFTED</a></dt> 
     211        <dd>a keyword from the routine triangule_e</dd> 
     212         
    210213        <dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html?format=raw#_definetri_e">SHIFTED</a></dt> 
    211214        <dd>a keyword from the routine definetri_e</dd> 
    212215         
    213         <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">SHIFTED</a></dt> 
    214         <dd>a keyword from the routine triangule_e</dd> 
    215          
    216216        <dt><a href="./ToBeReviewed/STRING/strsci.html?format=raw#_StrSci">SHORT</a></dt> 
    217217        <dd>a keyword from the routine StrSci</dd> 
     
    232232        <dd>a keyword from the routine report</dd> 
    233233         
     234        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">SIN</a></dt> 
     235        <dd>a keyword from the routine plt1d</dd> 
     236         
     237        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">SIN</a></dt> 
     238        <dd>a keyword from the routine pltz</dd> 
     239         
     240        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">SIN</a></dt> 
     241        <dd>a keyword from the routine axis4pltz</dd> 
     242         
    234243        <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">SIN</a></dt> 
    235244        <dd>a keyword from the routine axe</dd> 
    236245         
    237         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">SIN</a></dt> 
    238         <dd>a keyword from the routine pltz</dd> 
    239          
    240         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">SIN</a></dt> 
    241         <dd>a keyword from the routine plt1d</dd> 
    242          
    243         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">SIN</a></dt> 
    244         <dd>a keyword from the routine axis4pltz</dd> 
     246        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">SMALL</a></dt> 
     247        <dd>a keyword from the routine placedessin</dd> 
    245248         
    246249        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/terminedessin.html?format=raw#_terminedessin">SMALL</a></dt> 
    247250        <dd>a keyword from the routine terminedessin</dd> 
    248251         
    249         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">SMALL</a></dt> 
    250         <dd>a keyword from the routine placedessin</dd> 
    251          
    252252        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">SPACE</a></dt> 
    253253        <dd>a keyword from the routine CW_BGROUP</dd> 
     
    277277        <dd>a keyword from the routine cw_domain</dd> 
    278278         
     279        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">STRICTFILL</a></dt> 
     280        <dd>a keyword from the routine label</dd> 
     281         
     282        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">STRICTFILL</a></dt> 
     283        <dd>a keyword from the routine pltz</dd> 
     284         
     285        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">STRICTFILL</a></dt> 
     286        <dd>a keyword from the routine plt</dd> 
     287         
    279288        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">STRICTFILL</a></dt> 
    280289        <dd>a keyword from the routine pltt</dd> 
    281290         
    282         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">STRICTFILL</a></dt> 
    283         <dd>a keyword from the routine pltz</dd> 
    284          
    285         <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">STRICTFILL</a></dt> 
    286         <dd>a keyword from the routine label</dd> 
    287          
    288         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">STRICTFILL</a></dt> 
    289         <dd>a keyword from the routine plt</dd> 
     291        <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">STRIDE</a></dt> 
     292        <dd>a keyword from the routine computegrid</dd> 
     293         
     294        <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">STRIDE</a></dt> 
     295        <dd>a keyword from the routine ncdf_meshread</dd> 
    290296         
    291297        <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">STRIDE</a></dt> 
    292298        <dd>a keyword from the routine xncdf_lec</dd> 
    293299         
    294         <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">STRIDE</a></dt> 
    295         <dd>a keyword from the routine computegrid</dd> 
    296          
    297         <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">STRIDE</a></dt> 
    298         <dd>a keyword from the routine ncdf_meshread</dd> 
    299          
    300300        <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">STRING</a></dt> 
    301301        <dd>a keyword from the routine CW_FIELD2</dd> 
     
    310310        <dd>a function from the file str_size.pro</dd> 
    311311         
     312        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">STY1D</a></dt> 
     313        <dd>a keyword from the routine pltsc</dd> 
     314         
     315        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">STY1D</a></dt> 
     316        <dd>a keyword from the routine pltt</dd> 
     317         
    312318        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">STY1D</a></dt> 
    313319        <dd>a keyword from the routine plt1d</dd> 
    314320         
    315         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">STY1D</a></dt> 
    316         <dd>a keyword from the routine pltsc</dd> 
    317          
    318         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">STY1D</a></dt> 
    319         <dd>a keyword from the routine pltt</dd> 
    320          
    321321        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">STYLE</a></dt> 
    322322        <dd>a keyword from the routine pltz</dd> 
     
    349349        <dd>a function from the file str_token.pro</dd> 
    350350         
     351        <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">Strcnt</a></dt> 
     352        <dd>a function from the file strcnt.pro</dd> 
     353         
    351354        <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">Strcnt</a></dt> 
    352355        <dd>a function from the file strcnt.pro</dd> 
    353356         
    354         <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">Strcnt</a></dt> 
    355         <dd>a function from the file strcnt.pro</dd> 
    356          
    357357        <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">Strtok</a></dt> 
    358358        <dd>a function from the file strtok.pro</dd> 
     
    367367        <dd>a function from the file sub_sup_idl.pro</dd> 
    368368         
     369        <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html?format=raw#_ncdf_quickwrite_helper3">s</a></dt> 
     370        <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html</dd> 
     371         
     372        <dt><a href="./ToBeReviewed/STRING/strright.html?format=raw#_strright">s</a></dt> 
     373        <dd>a parameter from the routine ./ToBeReviewed/STRING/strright.html</dd> 
     374         
    369375        <dt><a href="./ToBeReviewed/STRING/putfile.html?format=raw#_putfile">s</a></dt> 
    370376        <dd>a parameter from the routine ./ToBeReviewed/STRING/putfile.html</dd> 
    371377         
    372         <dt><a href="./ToBeReviewed/STRING/strright.html?format=raw#_strright">s</a></dt> 
    373         <dd>a parameter from the routine ./ToBeReviewed/STRING/strright.html</dd> 
    374          
    375         <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html?format=raw#_ncdf_quickwrite_helper3">s</a></dt> 
    376         <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html</dd> 
     378        <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_helper2">s</a></dt> 
     379        <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html</dd> 
    377380         
    378381        <dt><a href="./ReadWrite/idl-NetCDF/ncdf_struct_free.html?format=raw#_ncdf_struct_free">s</a></dt> 
    379382        <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_struct_free.html</dd> 
    380383         
    381         <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_helper2">s</a></dt> 
    382         <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html</dd> 
    383          
    384384        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/saveatt.html?format=raw#_saveatt">saveatt</a></dt> 
    385385        <dd>a function from the file saveatt.pro</dd> 
     
    532532        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.html</dd> 
    533533         
     534        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">small</a></dt> 
     535        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html</dd> 
     536         
    534537        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">small</a></dt> 
    535538        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html</dd> 
    536539         
    537         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">small</a></dt> 
    538         <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html</dd> 
    539          
    540540        <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">smalldraw</a></dt> 
    541541        <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre.html</dd> 
     
    595595        <dd>a function from the file square2quadrilateral.pro</dd> 
    596596         
     597        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></dt> 
     598        <dd>a function from the file square2quadrilateral.pro</dd> 
     599         
    597600        <dt><a href="Interpolation/square2quadrilateral.html?format=raw">square2quadrilateral.pro</a></dt> 
    598601        <dd>a file from the directory ./Interpolation</dd> 
    599602         
     603        <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">startpos</a></dt> 
     604        <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 
     605         
    600606        <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">startpos</a></dt> 
    601607        <dd>a parameter from the routine ./ToBeReviewed/STRING/strcnt.html</dd> 
    602608         
    603         <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">startpos</a></dt> 
    604         <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 
    605          
    606609        <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">startx</a></dt> 
    607610        <dd>a parameter from the routine ./Grid/computegrid.html</dd> 
     
    616619        <dd>a parameter from the routine ./Grid/computegrid.html</dd> 
    617620         
     621        <dt><a href="./ToBeReviewed/STRING/strwhere.html?format=raw#_strwhere">str</a></dt> 
     622        <dd>a parameter from the routine ./ToBeReviewed/STRING/strwhere.html</dd> 
     623         
    618624        <dt><a href="./ToBeReviewed/STRING/strrepl.html?format=raw#_strrepl">str</a></dt> 
    619625        <dd>a parameter from the routine ./ToBeReviewed/STRING/strrepl.html</dd> 
     
    622628        <dd>a parameter from the routine ./ToBeReviewed/STRING/lenstr.html</dd> 
    623629         
    624         <dt><a href="./ToBeReviewed/STRING/strwhere.html?format=raw#_strwhere">str</a></dt> 
    625         <dd>a parameter from the routine ./ToBeReviewed/STRING/strwhere.html</dd> 
    626          
    627630        <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_string2struct">strVal</a></dt> 
    628631        <dd>a parameter from the routine ./ToBeReviewed/STRING/string2struct.html</dd> 
     
    634637        <dd>a file from the directory ./Textoidl</dd> 
    635638         
    636         <dt><a href="ToBeReviewed/STRING/strcnt.html?format=raw">strcnt.pro</a></dt> 
    637         <dd>a file from the directory ./ToBeReviewed/STRING</dd> 
    638          
    639639        <dt><a href="Textoidl/strcnt.html?format=raw">strcnt.pro</a></dt> 
    640640        <dd>a file from the directory ./Textoidl</dd> 
    641641         
     642        <dt><a href="ToBeReviewed/STRING/strcnt.html?format=raw">strcnt.pro</a></dt> 
     643        <dd>a file from the directory ./ToBeReviewed/STRING</dd> 
     644         
     645        <dt><a href="./ToBeReviewed/STRING/str_size.html?format=raw#_STR_SIZE">string</a></dt> 
     646        <dd>a parameter from the routine ./ToBeReviewed/STRING/str_size.html</dd> 
     647         
    642648        <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#__str">string</a></dt> 
    643649        <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html</dd> 
     
    649655        <dd>a parameter from the routine ./Textoidl/str_token.html</dd> 
    650656         
    651         <dt><a href="./ToBeReviewed/STRING/str_size.html?format=raw#_STR_SIZE">string</a></dt> 
    652         <dd>a parameter from the routine ./ToBeReviewed/STRING/str_size.html</dd> 
    653          
    654657        <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_string2struct">string2struct</a></dt> 
    655658        <dd>a function from the file string2struct.pro</dd> 
     
    667670        <dd>a file from the directory ./ToBeReviewed/STRING</dd> 
    668671         
     672        <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">strn</a></dt> 
     673        <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 
     674         
    669675        <dt><a href="./Textoidl/nexttok.html?format=raw#_nexttok">strn</a></dt> 
    670676        <dd>a parameter from the routine ./Textoidl/nexttok.html</dd> 
     
    673679        <dd>a parameter from the routine ./ToBeReviewed/STRING/strcnt.html</dd> 
    674680         
    675         <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">strn</a></dt> 
    676         <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 
    677          
    678681        <dt><a href="./ToBeReviewed/STRING/strrepl.html?format=raw#_strrepl">strrepl</a></dt> 
    679682        <dd>a function from the file strrepl.pro</dd> 
     
    700703        <dd>a function from the file strtrans.pro</dd> 
    701704         
    702         <dt><a href="ToBeReviewed/STRING/strtrans.html?format=raw">strtrans.pro</a></dt> 
    703         <dd>a file from the directory ./ToBeReviewed/STRING</dd> 
    704          
    705705        <dt><a href="Textoidl/strtrans.html?format=raw">strtrans.pro</a></dt> 
    706706        <dd>a file from the directory ./Textoidl</dd> 
    707707         
     708        <dt><a href="ToBeReviewed/STRING/strtrans.html?format=raw">strtrans.pro</a></dt> 
     709        <dd>a file from the directory ./ToBeReviewed/STRING</dd> 
     710         
    708711        <dt><a href="./ToBeReviewed/STRUCTURE/extractstru.html?format=raw#_extractstru">stru</a></dt> 
    709712        <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/extractstru.html</dd> 
     
    715718        <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/mixstru.html</dd> 
    716719         
     720        <dt><a href="./ToBeReviewed/LECTURE/litchamp.html?format=raw#_litchamp">struct</a></dt> 
     721        <dd>a parameter from the routine ./ToBeReviewed/LECTURE/litchamp.html</dd> 
     722         
     723        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/restoreatt.html?format=raw#_restoreatt">struct</a></dt> 
     724        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/restoreatt.html</dd> 
     725         
    717726        <dt><a href="./ToBeReviewed/STRING/strkeywd.html?format=raw#_strkeywd">struct</a></dt> 
    718727        <dd>a parameter from the routine ./ToBeReviewed/STRING/strkeywd.html</dd> 
     
    721730        <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/struct2string.html</dd> 
    722731         
    723         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/restoreatt.html?format=raw#_restoreatt">struct</a></dt> 
    724         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/restoreatt.html</dd> 
    725          
    726         <dt><a href="./ToBeReviewed/LECTURE/litchamp.html?format=raw#_litchamp">struct</a></dt> 
    727         <dd>a parameter from the routine ./ToBeReviewed/LECTURE/litchamp.html</dd> 
    728          
    729732        <dt><a href="./ToBeReviewed/STRUCTURE/struct2string.html?format=raw#_struct2string">struct2string</a></dt> 
    730733        <dd>a function from the file struct2string.pro</dd> 
     
    757760        <dd>a keyword from the routine read_gribtable</dd> 
    758761         
     762        <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">substrn</a></dt> 
     763        <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 
     764         
    759765        <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">substrn</a></dt> 
    760766        <dd>a parameter from the routine ./ToBeReviewed/STRING/strcnt.html</dd> 
    761767         
    762         <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">substrn</a></dt> 
    763         <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 
    764          
    765768        <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickread/ncdf_quickread_helper.html?format=raw#_ncdf_quickread_getFile">suffix</a></dt> 
    766769        <dd>a keyword from the routine ncdf_quickread_getFile</dd> 
     
    778781        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield.html</dd> 
    779782         
     783        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">sz</a></dt> 
     784        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield.html</dd> 
     785         
    780786        <dt><a href="./ToBeReviewed/UTILITAIRE/fitintobox.html?format=raw#_err_mess">sz</a></dt> 
    781787        <dd>a parameter from the routine ./ToBeReviewed/UTILITAIRE/fitintobox.html</dd> 
    782788         
    783         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">sz</a></dt> 
    784         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield.html</dd> 
    785          
    786789      </dl> 
    787790       
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-W.html

    r89 r101  
    175175        <dd>a keyword from the routine dessinetri</dd> 
    176176         
     177        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">WDEPTH</a></dt> 
     178        <dd>a keyword from the routine checkfield</dd> 
     179         
     180        <dt><a href="./ToBeReviewed/UTILITAIRE/fitintobox.html?format=raw#_fitintobox">WDEPTH</a></dt> 
     181        <dd>a keyword from the routine fitintobox</dd> 
     182         
     183        <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">WDEPTH</a></dt> 
     184        <dd>a keyword from the routine section</dd> 
     185         
     186        <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">WDEPTH</a></dt> 
     187        <dd>a keyword from the routine grossemoyenne</dd> 
     188         
     189        <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">WDEPTH</a></dt> 
     190        <dd>a keyword from the routine moyenne</dd> 
     191         
     192        <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">WDEPTH</a></dt> 
     193        <dd>a keyword from the routine decoupeterre</dd> 
     194         
     195        <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">WDEPTH</a></dt> 
     196        <dd>a keyword from the routine grille</dd> 
     197         
    177198        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">WDEPTH</a></dt> 
    178199        <dd>a keyword from the routine pltz</dd> 
    179200         
    180         <dt><a href="./ToBeReviewed/UTILITAIRE/fitintobox.html?format=raw#_fitintobox">WDEPTH</a></dt> 
    181         <dd>a keyword from the routine fitintobox</dd> 
    182          
    183         <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">WDEPTH</a></dt> 
    184         <dd>a keyword from the routine section</dd> 
    185          
    186         <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">WDEPTH</a></dt> 
    187         <dd>a keyword from the routine grossemoyenne</dd> 
    188          
    189         <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">WDEPTH</a></dt> 
    190         <dd>a keyword from the routine moyenne</dd> 
    191          
    192         <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">WDEPTH</a></dt> 
    193         <dd>a keyword from the routine decoupeterre</dd> 
    194          
    195         <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">WDEPTH</a></dt> 
    196         <dd>a keyword from the routine grille</dd> 
    197          
    198         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">WDEPTH</a></dt> 
    199         <dd>a keyword from the routine checkfield</dd> 
    200          
    201201        <dt><a href="./Interpolation/fromreg.html?format=raw#_fromreg">WEIG</a></dt> 
    202202        <dd>a keyword from the routine fromreg</dd> 
     
    214214        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/vecteur.html</dd> 
    215215         
     216        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">weig</a></dt> 
     217        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
     218         
    216219        <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">weig</a></dt> 
    217220        <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-X.html

    r89 r101  
    172172      <dl> 
    173173         
     174        <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">X</a></dt> 
     175        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 
     176         
     177        <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">X</a></dt> 
     178        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 
     179         
     180        <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_A_TimeCorrelate">X</a></dt> 
     181        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 
     182         
     183        <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">X</a></dt> 
     184        <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber.html</dd> 
     185         
    174186        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">X</a></dt> 
    175187        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect.html</dd> 
     
    181193        <dd>a keyword from the routine plt1d</dd> 
    182194         
    183         <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">X</a></dt> 
    184         <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber.html</dd> 
    185          
    186         <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">X</a></dt> 
    187         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 
    188          
    189         <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_A_TimeCorrelate">X</a></dt> 
    190         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 
    191          
    192         <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">X</a></dt> 
    193         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 
     195        <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">X</a></dt> 
     196        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d.html</dd> 
    194197         
    195198        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">X</a></dt> 
    196199        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation.html</dd> 
    197200         
    198         <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">X</a></dt> 
    199         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d.html</dd> 
    200          
    201201        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">X0</a></dt> 
    202202        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
     
    208208        <dd>a keyword from the routine initncdf</dd> 
    209209         
     210        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XINDEX</a></dt> 
     211        <dd>a keyword from the routine checktypeminmax</dd> 
     212         
    210213        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">XINDEX</a></dt> 
    211214        <dd>a keyword from the routine domdef</dd> 
    212215         
    213         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XINDEX</a></dt> 
    214         <dd>a keyword from the routine checktypeminmax</dd> 
    215          
    216216        <dt><a href="./ToBeReviewed/COULEURS/xlct.html?format=raw#_XLCT_PSAVE">XLCT_PSAVE</a></dt> 
    217217        <dd>a procedure from the file xlct.pro</dd> 
     
    262262        <dd>a procedure from the file xpal.pro</dd> 
    263263         
     264        <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">XSEUIL</a></dt> 
     265        <dd>a keyword from the routine drawcoast_e</dd> 
     266         
    264267        <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html?format=raw#_drawcoast_c">XSEUIL</a></dt> 
    265268        <dd>a keyword from the routine drawcoast_c</dd> 
    266269         
    267         <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">XSEUIL</a></dt> 
    268         <dd>a keyword from the routine drawcoast_e</dd> 
     270        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">XSIZE</a></dt> 
     271        <dd>a keyword from the routine CW_BGROUP</dd> 
    269272         
    270273        <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">XSIZE</a></dt> 
     
    274277        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
    275278         
    276         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">XSIZE</a></dt> 
    277         <dd>a keyword from the routine CW_BGROUP</dd> 
    278          
    279279        <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">XSTRIDE</a></dt> 
    280280        <dd>a keyword from the routine tracegrille</dd> 
     
    313313        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 
    314314         
     315        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x</a></dt> 
     316        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     317         
     318        <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">x</a></dt> 
     319        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 
     320         
     321        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x</a></dt> 
     322        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     323         
     324        <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x</a></dt> 
     325        <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 
     326         
     327        <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply_product">x</a></dt> 
     328        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> 
     329         
     330        <dt><a href="./ToBeReviewed/PLOTS/reinitplt.html?format=raw#_reinitplt">x</a></dt> 
     331        <dd>a keyword from the routine reinitplt</dd> 
     332         
     333        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">x</a></dt> 
     334        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot.html</dd> 
     335         
     336        <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x</a></dt> 
     337        <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 
     338         
     339        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">x</a></dt> 
     340        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 
     341         
     342        <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x</a></dt> 
     343        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     344         
     345        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">x</a></dt> 
     346        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 
     347         
     348        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">x</a></dt> 
     349        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date.html</dd> 
     350         
     351        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x</a></dt> 
     352        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
     353         
    315354        <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">x</a></dt> 
    316355        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri.html</dd> 
    317356         
    318         <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x</a></dt> 
    319         <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 
    320          
    321         <dt><a href="./ToBeReviewed/PLOTS/reinitplt.html?format=raw#_reinitplt">x</a></dt> 
    322         <dd>a keyword from the routine reinitplt</dd> 
    323          
    324         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x</a></dt> 
    325         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    326          
    327         <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">x</a></dt> 
    328         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date.html</dd> 
    329          
    330         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x</a></dt> 
    331         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    332          
    333         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">x</a></dt> 
    334         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot.html</dd> 
    335          
    336         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">x</a></dt> 
    337         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 
    338          
    339         <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x</a></dt> 
    340         <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 
    341          
    342         <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x</a></dt> 
    343         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    344          
    345         <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x</a></dt> 
    346         <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
    347          
    348         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">x</a></dt> 
    349         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 
    350          
    351         <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">x</a></dt> 
    352         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 
    353          
    354         <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply_product">x</a></dt> 
    355         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> 
     357        <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">x0</a></dt> 
     358        <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
    356359         
    357360        <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">x0</a></dt> 
    358361        <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 
    359362         
    360         <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">x0</a></dt> 
    361         <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
     363        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x0in</a></dt> 
     364        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    362365         
    363366        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x0in</a></dt> 
     
    367370        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
    368371         
     372        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">x1</a></dt> 
     373        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
     374         
    369375        <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">x1</a></dt> 
    370376        <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 
    371377         
    372         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x1</a></dt> 
    373         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    374          
    375         <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">x1</a></dt> 
    376         <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
    377          
    378378        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x1</a></dt> 
    379379        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
     
    382382        <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
    383383         
     384        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x1</a></dt> 
     385        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     386         
    384387        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x1</a></dt> 
    385388        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     
    388391        <dd>a parameter from the routine ./Interpolation/inrecgrid.html</dd> 
    389392         
     393        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x1in</a></dt> 
     394        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     395         
     396        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x1in</a></dt> 
     397        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     398         
    390399        <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">x1in</a></dt> 
    391400        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
    392401         
    393         <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x1in</a></dt> 
    394         <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    395          
    396         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x2</a></dt> 
    397         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    398          
    399402        <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">x2</a></dt> 
    400403        <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
    401404         
     405        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x2</a></dt> 
     406        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     407         
     408        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x2</a></dt> 
     409        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
     410         
     411        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x2</a></dt> 
     412        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     413         
     414        <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x2</a></dt> 
     415        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     416         
     417        <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x2</a></dt> 
     418        <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 
     419         
    402420        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">x2</a></dt> 
    403421        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
    404422         
    405         <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x2</a></dt> 
    406         <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
    407          
    408423        <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x2</a></dt> 
    409424        <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 
    410425         
    411         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x2</a></dt> 
    412         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    413          
    414         <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x2</a></dt> 
    415         <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 
    416          
    417         <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x2</a></dt> 
    418         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     426        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x2in</a></dt> 
     427        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    419428         
    420429        <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">x2in</a></dt> 
     
    436445        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
    437446         
     447        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x3in</a></dt> 
     448        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     449         
    438450        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x4</a></dt> 
    439451        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
     
    448460        <dd>a procedure from the file buildinit.pro</dd> 
    449461         
     462        <dt><a href="./ToBeReviewed/HOPE/computehopegrid.html?format=raw#_computehopegrid">xaxis</a></dt> 
     463        <dd>a parameter from the routine ./ToBeReviewed/HOPE/computehopegrid.html</dd> 
     464         
    450465        <dt><a href="./ToBeReviewed/HOPE/findlineandpointtype.html?format=raw#_findlineandpointtype">xaxis</a></dt> 
    451466        <dd>a parameter from the routine ./ToBeReviewed/HOPE/findlineandpointtype.html</dd> 
    452467         
    453         <dt><a href="./ToBeReviewed/HOPE/computehopegrid.html?format=raw#_computehopegrid">xaxis</a></dt> 
    454         <dd>a parameter from the routine ./ToBeReviewed/HOPE/computehopegrid.html</dd> 
    455          
    456468        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html?format=raw#_xcreateanim">xcreateanim</a></dt> 
    457469        <dd>a procedure from the file xcreateanim.pro</dd> 
     
    481493        <dd>a file from the directory ./ToBeReviewed/UTILITAIRE</dd> 
    482494         
     495        <dt><a href="./Interpolation/imoms3.html?format=raw#_imoms3">xin</a></dt> 
     496        <dd>a parameter from the routine ./Interpolation/imoms3.html</dd> 
     497         
     498        <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">xin</a></dt> 
     499        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd> 
     500         
    483501        <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">xin</a></dt> 
    484502        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask.html</dd> 
    485503         
    486         <dt><a href="./Interpolation/imoms3.html?format=raw#_imoms3">xin</a></dt> 
    487         <dd>a parameter from the routine ./Interpolation/imoms3.html</dd> 
    488          
    489         <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">xin</a></dt> 
    490         <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd> 
    491          
    492504        <dt><a href="ToBeReviewed/COULEURS/xlct.html?format=raw">xlct.pro</a></dt> 
    493505        <dd>a file from the directory ./ToBeReviewed/COULEURS</dd> 
     
    562574        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    563575         
     576        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">xxin</a></dt> 
     577        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     578         
    564579        <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">xxin</a></dt> 
    565580        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-Y.html

    r89 r101  
    172172      <dl> 
    173173         
     174        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">Y</a></dt> 
     175        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect.html</dd> 
     176         
     177        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">Y</a></dt> 
     178        <dd>a keyword from the routine plt1d</dd> 
     179         
    174180        <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">Y</a></dt> 
    175181        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 
    176182         
    177         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">Y</a></dt> 
    178         <dd>a keyword from the routine plt1d</dd> 
    179          
    180183        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">Y</a></dt> 
    181184        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation.html</dd> 
    182185         
    183         <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">Y</a></dt> 
    184         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect.html</dd> 
    185          
    186186        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">Y0</a></dt> 
    187187        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
     
    214214        <dd>a keyword from the routine CW_BGROUP</dd> 
    215215         
     216        <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">YP0</a></dt> 
     217        <dd>a keyword from the routine spl_keep_mean</dd> 
     218         
    216219        <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">YP0</a></dt> 
    217220        <dd>a keyword from the routine spl_incr</dd> 
    218221         
    219         <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">YP0</a></dt> 
    220         <dd>a keyword from the routine spl_keep_mean</dd> 
    221          
    222222        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">YPAD</a></dt> 
    223223        <dd>a keyword from the routine CW_BGROUP</dd> 
     
    235235        <dd>a keyword from the routine drawcoast_e</dd> 
    236236         
     237        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">YSIZE</a></dt> 
     238        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
     239         
     240        <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">YSIZE</a></dt> 
     241        <dd>a keyword from the routine CW_FIELD2</dd> 
     242         
    237243        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">YSIZE</a></dt> 
    238244        <dd>a keyword from the routine CW_BGROUP</dd> 
    239245         
    240         <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">YSIZE</a></dt> 
    241         <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
    242          
    243         <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">YSIZE</a></dt> 
    244         <dd>a keyword from the routine CW_FIELD2</dd> 
    245          
    246246        <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">YSTRIDE</a></dt> 
    247247        <dd>a keyword from the routine tracegrille</dd> 
    248248         
     249        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">YT</a></dt> 
     250        <dd>a keyword from the routine pltt</dd> 
     251         
    249252        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">YT</a></dt> 
    250253        <dd>a keyword from the routine checktypeminmax</dd> 
    251254         
    252         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">YT</a></dt> 
    253         <dd>a keyword from the routine pltt</dd> 
    254          
    255255        <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">YXASPECT</a></dt> 
    256256        <dd>a keyword from the routine calibre</dd> 
     
    262262        <dd>a keyword from the routine ncdf_timeget</dd> 
    263263         
     264        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">YZ</a></dt> 
     265        <dd>a keyword from the routine pltz</dd> 
     266         
    264267        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">YZ</a></dt> 
    265268        <dd>a keyword from the routine checktypeminmax</dd> 
    266269         
    267         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">YZ</a></dt> 
    268         <dd>a keyword from the routine pltz</dd> 
    269          
    270270        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">Y_SCROLL_SIZE</a></dt> 
    271271        <dd>a keyword from the routine CW_BGROUP</dd> 
     
    274274        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 
    275275         
     276        <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">y</a></dt> 
     277        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri.html</dd> 
     278         
     279        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y</a></dt> 
     280        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
     281         
     282        <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">y</a></dt> 
     283        <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 
     284         
     285        <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">y</a></dt> 
     286        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     287         
     288        <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">y</a></dt> 
     289        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 
     290         
    276291        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">y</a></dt> 
    277292        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 
    278293         
     294        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">y</a></dt> 
     295        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 
     296         
    279297        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">y</a></dt> 
    280298        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot.html</dd> 
    281299         
    282         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">y</a></dt> 
    283         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 
    284          
    285         <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">y</a></dt> 
    286         <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 
    287          
    288         <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">y</a></dt> 
    289         <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri.html</dd> 
    290          
    291         <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">y</a></dt> 
    292         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    293          
    294300        <dt><a href="./ToBeReviewed/PLOTS/reinitplt.html?format=raw#_reinitplt">y</a></dt> 
    295301        <dd>a keyword from the routine reinitplt</dd> 
    296302         
    297         <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y</a></dt> 
    298         <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
    299          
    300         <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">y</a></dt> 
    301         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 
     303        <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y0</a></dt> 
     304        <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
    302305         
    303306        <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">y0</a></dt> 
    304307        <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 
    305308         
    306         <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y0</a></dt> 
    307         <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
     309        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y0in</a></dt> 
     310        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    308311         
    309312        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y0in</a></dt> 
     
    313316        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
    314317         
     318        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y1</a></dt> 
     319        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     320         
     321        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">y1</a></dt> 
     322        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     323         
     324        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y1</a></dt> 
     325        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
     326         
     327        <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y1</a></dt> 
     328        <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
     329         
     330        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y1</a></dt> 
     331        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
     332         
    315333        <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">y1</a></dt> 
    316334        <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 
    317335         
    318         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y1</a></dt> 
    319         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    320          
    321         <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y1</a></dt> 
    322         <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
    323          
    324         <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y1</a></dt> 
    325         <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
    326          
    327         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">y1</a></dt> 
    328         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    329          
    330         <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y1</a></dt> 
    331         <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
    332          
    333336        <dt><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">y1d</a></dt> 
    334337        <dd>a parameter from the routine ./Interpolation/inrecgrid.html</dd> 
    335338         
     339        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y1in</a></dt> 
     340        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     341         
    336342        <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">y1in</a></dt> 
    337343        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
     
    340346        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    341347         
     348        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y2</a></dt> 
     349        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
     350         
     351        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y2</a></dt> 
     352        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
     353         
    342354        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">y2</a></dt> 
    343355        <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    344356         
    345         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y2</a></dt> 
    346         <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 
    347          
    348         <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y2</a></dt> 
    349         <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 
     357        <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y2</a></dt> 
     358        <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
    350359         
    351360        <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y2</a></dt> 
    352361        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
    353362         
    354         <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y2</a></dt> 
    355         <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 
     363        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y2in</a></dt> 
     364        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
    356365         
    357366        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y2in</a></dt> 
     
    367376        <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 
    368377         
     378        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y3in</a></dt> 
     379        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     380         
    369381        <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">y3in</a></dt> 
    370382        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
     
    382394        <dd>a parameter from the routine ./ToBeReviewed/HOPE/findlineandpointtype.html</dd> 
    383395         
     396        <dt><a href="./Calendar/leapyr.html?format=raw#_leapyr">year</a></dt> 
     397        <dd>a parameter from the routine ./Calendar/leapyr.html</dd> 
     398         
    384399        <dt><a href="./Calendar/daysinmonth.html?format=raw#_daysinmonth">year</a></dt> 
    385400        <dd>a parameter from the routine ./Calendar/daysinmonth.html</dd> 
     
    388403        <dd>a parameter from the routine ./ToBeReviewed/CALENDRIER/caldat.html</dd> 
    389404         
    390         <dt><a href="./Calendar/leapyr.html?format=raw#_leapyr">year</a></dt> 
    391         <dd>a parameter from the routine ./Calendar/leapyr.html</dd> 
    392          
    393405        <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">yf</a></dt> 
    394406        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e.html</dd> 
     
    397409        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c.html</dd> 
    398410         
     411        <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">yin</a></dt> 
     412        <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 
     413         
     414        <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">yin</a></dt> 
     415        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd> 
     416         
    399417        <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">yin</a></dt> 
    400418        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask.html</dd> 
    401419         
    402         <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">yin</a></dt> 
    403         <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd> 
    404          
    405         <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">yin</a></dt> 
    406         <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 
    407          
    408420        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">ym</a></dt> 
    409421        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 
     
    415427        <dd>a keyword from the routine bar_plot</dd> 
    416428         
     429        <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">yyin</a></dt> 
     430        <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 
     431         
    417432        <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">yyin</a></dt> 
    418433        <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index.html

    r89 r101  
    193193        <dd>a keyword from the routine write_oasis</dd> 
    194194         
     195        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_GETPOS">ASPECT</a></dt> 
     196        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
     197         
    195198        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">ASPECT</a></dt> 
    196199        <dd>a keyword from the routine IMDISP</dd> 
    197200         
    198         <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_GETPOS">ASPECT</a></dt> 
    199         <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 
    200          
    201201        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">ASPECT</a></dt> 
    202202        <dd>a keyword from the routine IMDISP_IMSIZE</dd> 
    203203         
     204        <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">ATT</a></dt> 
     205        <dd>a keyword from the routine ncdf_lec</dd> 
     206         
    204207        <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">ATT</a></dt> 
    205208        <dd>a keyword from the routine xncdf_lec</dd> 
    206209         
    207         <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">ATT</a></dt> 
    208         <dd>a keyword from the routine ncdf_lec</dd> 
    209          
    210210        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">AXIS</a></dt> 
    211211        <dd>a keyword from the routine IMDISP</dd> 
     
    220220        <dd>a function from the file a_correlate2d.pro</dd> 
    221221         
     222        <dt><a href="./ToBeReviewed/MATRICE/cmset_op.html?format=raw#_cmset_op">a</a></dt> 
     223        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmset_op.html</dd> 
     224         
     225        <dt><a href="./ToBeReviewed/MATRICE/union.html?format=raw#_union">a</a></dt> 
     226        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/union.html</dd> 
     227         
    222228        <dt><a href="./ToBeReviewed/MATRICE/inter.html?format=raw#_inter">a</a></dt> 
    223229        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/inter.html</dd> 
    224230         
    225         <dt><a href="./ToBeReviewed/MATRICE/cmset_op.html?format=raw#_cmset_op">a</a></dt> 
    226         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmset_op.html</dd> 
     231        <dt><a href="./ToBeReviewed/MATRICE/different.html?format=raw#_different">a</a></dt> 
     232        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/different.html</dd> 
     233         
     234        <dt><a href="./ToBeReviewed/CALCULS/determ2.html?format=raw#_determ2">a</a></dt> 
     235        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/determ2.html</dd> 
    227236         
    228237        <dt><a href="./ToBeReviewed/MATRICE/cmset_op.html?format=raw#_cmset_op_uniq">a</a></dt> 
    229238        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmset_op.html</dd> 
    230239         
    231         <dt><a href="./ToBeReviewed/MATRICE/union.html?format=raw#_union">a</a></dt> 
    232         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/union.html</dd> 
    233          
    234         <dt><a href="./ToBeReviewed/CALCULS/determ2.html?format=raw#_determ2">a</a></dt> 
    235         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/determ2.html</dd> 
    236          
    237         <dt><a href="./ToBeReviewed/MATRICE/different.html?format=raw#_different">a</a></dt> 
    238         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/different.html</dd> 
    239          
    240240        <dt><a href="./ToBeReviewed/MATRICE/colle.html?format=raw#_colle">a0</a></dt> 
    241241        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/colle.html</dd> 
     
    325325        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
    326326         
     327        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">addr  PRO compute_fromreg_imoms3_weigaddr</a></dt> 
     328        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
     329         
    327330        <dt><a href="./ToBeReviewed/STRING/strrepl.html?format=raw#_strrepl">agument1</a></dt> 
    328331        <dd>a parameter from the routine ./ToBeReviewed/STRING/strrepl.html</dd> 
     
    337340        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
    338341         
     342        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">alatin</a></dt> 
     343        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
     344         
    339345        <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">alatin</a></dt> 
    340346        <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 
     
    352358        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
    353359         
     360        <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">alonin</a></dt> 
     361        <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 
     362         
    354363        <dt><a href="./Interpolation/angle.html?format=raw#_angle">angle</a></dt> 
    355364        <dd>a procedure from the file angle.pro</dd> 
     
    376385        <dd>a parameter from the routine ./Interpolation/ll_narcs_distances.html</dd> 
    377386         
     387        <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">argspro</a></dt> 
     388        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xxx.html</dd> 
     389         
    378390        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">argspro</a></dt> 
    379391        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html</dd> 
    380392         
    381         <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">argspro</a></dt> 
    382         <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xxx.html</dd> 
    383          
    384393        <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply">array</a></dt> 
    385394        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html

    r97 r101  
    265265<tr> 
    266266<td class="docroutine"><a href="./Interpolation/angle.html?format=raw#_angle">angle</a></td> 
    267 <td class="docstat notdoc">not documented</td> 
    268 </tr> 
    269  
    270 </table><a href="./Interpolation/clickincell.html?format=raw">./Interpolation/clickincell.pro</a> 
    271 <table> 
    272  
    273 <tr> 
    274 <td class="docroutine"><a href="./Interpolation/clickincell.html?format=raw#_clickincell">clickincell</a></td> 
    275267<td class="docstat partialdoc">partially documented</td> 
    276268</tr> 
     
    313305<tr> 
    314306<td class="docroutine"><a href="./Interpolation/extrapolate.html?format=raw#_extrapolate">extrapolate</a></td> 
    315 <td class="docstat notdoc">not documented</td> 
     307<td class="docstat partialdoc">partially documented</td> 
    316308</tr> 
    317309 
     
    337329<tr> 
    338330<td class="docroutine"><a href="./Interpolation/imoms3.html?format=raw#_imoms3">imoms3</a></td> 
    339 <td class="docstat notdoc">not documented</td> 
     331<td class="docstat partialdoc">partially documented</td> 
    340332</tr> 
    341333 
     
    356348</tr> 
    357349 
    358 </table><a href="./Interpolation/ll_narcs_distances.html?format=raw">./Interpolation/ll_narcs_distances.pro</a> 
    359 <table> 
    360  
    361 <tr> 
    362 <td class="docroutine"><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">LL_NARCS_DISTANCES</a></td> 
    363 <td class="docstat partialdoc">partially documented</td> 
    364 </tr> 
    365  
    366350</table><a href="./Interpolation/map_npoints.html?format=raw">./Interpolation/map_npoints.pro</a> 
    367351<table> 
     
    388372</tr> 
    389373 
    390 </table><a href="./Interpolation/spl_fstdrv.html?format=raw">./Interpolation/spl_fstdrv.pro</a> 
    391 <table> 
    392  
    393 <tr> 
    394 <td class="docroutine"><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">spl_fstdrv</a></td> 
    395 <td class="docstat partialdoc">partially documented</td> 
    396 </tr> 
    397  
    398374</table><a href="./Interpolation/spl_incr.html?format=raw">./Interpolation/spl_incr.pro</a> 
    399375<table> 
     
    411387<tr> 
    412388<td class="docroutine"><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">spl_incr</a></td> 
    413 <td class="docstat notdoc">not documented</td> 
    414 </tr> 
    415  
    416 </table><a href="./Interpolation/spl_keep_mean.html?format=raw">./Interpolation/spl_keep_mean.pro</a> 
    417 <table> 
    418  
    419 <tr> 
    420 <td class="docroutine"><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">spl_keep_mean</a></td> 
    421389<td class="docstat partialdoc">partially documented</td> 
    422390</tr> 
     
    430398</tr> 
    431399 
    432 </table><a href="./Interpolation/testinterp.html?format=raw">./Interpolation/testinterp.pro</a> 
    433 <table> 
    434  
    435 <tr> 
    436 <td class="docroutine"><a href="./Interpolation/testinterp.html?format=raw#_testinterp">testinterp</a></td> 
     400<tr> 
     401<td class="docroutine"><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></td> 
    437402<td class="docstat notdoc">not documented</td> 
    438403</tr> 
     
    21892154<tr> 
    21902155<td class="docroutine"><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">VELOVECT</a></td> 
    2191 <td class="docstat notdoc">not documented</td> 
     2156<td class="docstat partialdoc">partially documented</td> 
    21922157</tr> 
    21932158 
  • trunk/SRC/Documentation/idldoc_html_output/overview.html

    r97 r101  
    356356        <tr> 
    357357          <td>Routines/methods</td> 
    358           <td class="value">         755</td> 
     358          <td class="value">         756</td> 
    359359        </tr> 
    360360        <tr> 
    361361          <td>Lines of code</td> 
    362           <td class="value">       55778</td> 
     362          <td class="value">       55663</td> 
    363363        </tr> 
    364364      </table> 
  • trunk/SRC/Documentation/idldoc_html_output/search.js

    r97 r101  
    2828a[26] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", "    NAME:n48gaussian     PURPOSE:compute the latitudes of the n48 gaussian grid  See:   http: www ecmwf int products data technical gaussian n48FIS html     CATEGORY:grid     CALLING SEQUENCE:lat n48gaussian      INPUTS:None     KEYWORD PARAMETERS:None     OUTPUTS:a 1d array     COMMON BLOCKS:None     SIDE EFFECTS:None     RESTRICTIONS:None     EXAMPLE:     MODIFICATION HISTORY:        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n48gaussian              latitude   reduced     regular  latitude             number     points      points                              n48         1          20         192   88 57216                  2          25         192   86 72253                  3          36         192   84 86197                  4          40         192   82 99894                  5          45         192   81 13497                  6          50         192   79 27055                  7          60         192   77 40588                  8          60         192   75 54106                  9          72         192   73 67613                  10          75         192   71 81113                  11          80         192   69 94608                  12          90         192   68 08099                  13          96         192   66 21587                  14         100         192   64 35073                  15         108         192   62 48557                  16         120         192   60 62039                  17         120         192   58 75520                  18         120         192   56 89001                  19         128         192   55 02480                  20         135         192   53 15959                  21         144         192   51 29437                  22         144         192   49 42915                  23         160         192   47 56392                  24         160         192   45 69869                  25         160         192   43 83345                  26         160         192   41 96822                  27         160         192   40 10297                  28         180         192   38 23773                  29         180         192   36 37249                  30         180         192   34 50724                  31         180         192   32 64199                  32         180         192   30 77674                  33         192         192   28 91149                  34         192         192   27 04623                  35         192         192   25 18098                  36         192         192   23 31573                  37         192         192   21 45047                  38         192         192   19 58521                  39         192         192   17 71996                  40         192         192   15 85470                  41         192         192   13 98944                  42         192         192   12 12418                  43         192         192   10 25892                  44         192         192    8 39366                  45         192         192    6 52840                  46         192         192    4 66314                  47         192         192    2 79788                  48         192         192    0 93262      n48   reform n48  4  48   over    n48   reform n48 3     over    n48    n48   reverse n48     return  n48 end"); 
    2929a[27] = new Array("./Grid/n80gaussian.html", "n80gaussian.pro", "", "    NAME:n80gaussian     PURPOSE:compute the latitudes of the n80 gaussian grid  See:   http: www ecmwf int products data technical gaussian n80FIS html     CATEGORY:grid     CALLING SEQUENCE:lat n80gaussian      INPUTS:None     KEYWORD PARAMETERS:None     OUTPUTS:a 1d array     COMMON BLOCKS:None     SIDE EFFECTS:None     RESTRICTIONS:None     EXAMPLE:     MODIFICATION HISTORY:        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n80gaussian              latitude   reduced     regular  latitude             number     points      points                              n80         1          18         320   89 14152                  2          25         320   88 02943                  3          36         320   86 91077                  4          40         320   85 79063                  5          45         320   84 66992                  6          54         320   83 54895                  7          60         320   82 42782                  8          64         320   81 30659                  9          72         320   80 18531                  10          72         320   79 06398                  11          80         320   77 94262                  12          90         320   76 82124                  13          96         320   75 69984                  14         100         320   74 57843                  15         108         320   73 45701                  16         120         320   72 33558                  17         120         320   71 21414                  18         128         320   70 09269                  19         135         320   68 97124                  20         144         320   67 84978                  21         144         320   66 72833                  22         150         320   65 60686                  23         160         320   64 48540                  24         160         320   63 36393                  25         180         320   62 24246                  26         180         320   61 12099                  27         180         320   59 99952                  28         192         320   58 87804                  29         192         320   57 75657                  30         200         320   56 63509                  31         200         320   55 51361                  32         216         320   54 39214                  33         216         320   53 27066                  34         216         320   52 14917                  35         225         320   51 02769                  36         225         320   49 90621                  37         240         320   48 78473                  38         240         320   47 66325                  39         240         320   46 54176                  40         256         320   45 42028                  41         256         320   44 29879                  42         256         320   43 17731                  43         256         320   42 05582                  44         288         320   40 93434                  45         288         320   39 81285                  46         288         320   38 69137                  47         288         320   37 56988                  48         288         320   36 44839                  49         288         320   35 32691                  50         288         320   34 20542                  51         288         320   33 08393                  52         288         320   31 96244                  53         300         320   30 84096                  54         300         320   29 71947                  55         300         320   28 59798                  56         300         320   27 47649                  57         320         320   26 35500                  58         320         320   25 23351                  59         320         320   24 11203                  60         320         320   22 99054                  61         320         320   21 86905                  62         320         320   20 74756                  63         320         320   19 62607                  64         320         320   18 50458                  65         320         320   17 38309                  66         320         320   16 26160                  67         320         320   15 14011                  68         320         320   14 01862                  69         320         320   12 89713                  70         320         320   11 77564                  71         320         320   10 65415                  72         320         320    9 53266                  73         320         320    8 41117                  74         320         320    7 28968                  75         320         320    6 16819                  76         320         320    5 04670                  77         320         320    3 92521                  78         320         320    2 80372                  79         320         320    1 68223                  80         320         320    0 56074      n80   reform n80  4  80   over    n80   reform n80 3     over    n80    n80   reverse n80     return  n80 end"); 
    30 a[28] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", "          NAME:ncdf_meshread     PURPOSE:read NetCDF meshmask file created by OPA     CATEGORY:grid reading     CALLING SEQUENCE:ncdf_meshread   filename       INPUTS:        filename: the name of the meshmask file to read  Default is      meshmask nc  if this name does not contain any   and if      iodirectory keyword is not specify  then the common variable      iodir will be use to define the mesh file path     KEYWORD PARAMETERS:        GLAMBOUNDARY:a 2 elements vector   lon1 lon2  the longitute      boundaries that should be used to visualize the data         lon2   lon1        lon2   lon1 le 360      key_shift will be automaticaly defined according to GLAMBOUNDARY          CHECKDAT: Suppressed  Use micromeshmask pro to create an      appropriate meshmask         ONEARTH   0 or 1: to force the manual definition of      key_onearth  to specify if the data are on earth   use longitude       latitude etc  By default  key_onearth   1       note that ONEARTH   0 forces PERIODIC   0  SHIFT   0 and is      cancelling GLAMBOUNDARY        PERIODIC   0 or 1: to force the manual definition of      key_periodic  By default  key_periodic is automaticaly      computed by using the first line of glamt         SHIFT   : to force the manual definition of key_shift  By      debault  key_shift is automaticaly computed according to the      glamboundary  when defined  by using the first line of glamt  if      key_periodic 0 then in any case key_shift   0          STRCALLING: a string containing the calling command used to call      computegrid  this is used by xxx pro         STRIDE   : a 3 elements vector to specify the stride in x  y  z      direction  Default definition is key_stride  The resulting value      will be stored in the common  cm_4mesh  variable key_stride       OUTPUTS:none     COMMON BLOCKS: cm_4mesh  cm_4data  cm_4cal     SIDE EFFECTS: define and or use common variables from                  cm_4mesh  cm_4data  cm_4cal     RESTRICTIONS:      ixminmesh ixmaxmesh iyminmesh iymaxmesh izminmesh izmaxmesh must    be defined febore calling ncdf_meshread  if some of those value    are equal to  1 they will be automatically defined      EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         12 1999   July 2004  Sebastien Masson: Several modifications  micromeshmask    clean partial steps  clean use of key_stride  automatic definition   of key_shift      Oct  2004  Sebastien Masson: add PERIODIC and SHIFT   Aug  2005  Sebastien Masson: some cleaning   english          PRO ncdf_meshread  filename  GLAMBOUNDARY   glamboundary  CHECKDAT   checkdat                       ONEARTH   onearth  GETDIMENSIONS   getdimensions                       PERIODIC   periodic  SHIFT   shift  STRIDE   stride                       STRCALLING   strcalling  _EXTRA   ex      cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       tempsun   systime 1             for key_performance   IF keyword_set CHECKDAT  THEN BEGIN     print    The keyword CHECKDAT has been suppressed  it could create bugs      print    Remove it from the call of ncdf_meshread      print    Please use smallmeshmask pro or micromeshmask pro to create a       print    meshmask that has manageable size      return   ENDIF     find meshfile name and open it      def de filename par defaut   IF n_params  EQ 0 then filename    meshmask nc    meshname   isafile file   filename  iodirectory   iodir  _EXTRA   ex    meshname   meshname 0      noticebase   xnotice Reading file  C  meshname C     if the meshmask is on tape archive   get it back   IF  version OS_FAMILY EQ  unix  THEN spawn   file  meshname     dev null    cdfid   ncdf_open meshname    contient   ncdf_inquire cdfid      dimensions     ncdf_diminq  cdfid   x  name  jpiglo   ncdf_diminq  cdfid   y  name  jpjglo   listdims   strlowcase ncdf_listdims cdfid    IF  where listdims EQ  z 0  NE  1 THEN ncdf_diminq  cdfid   z  name  jpkglo ELSE BEGIN      dimid    where strmid listdims  0  5  EQ  depth 0      IF dimid NE  1 THEN ncdf_diminq  cdfid  dimid  name  jpkglo ELSE BEGIN        report   We could not find the vertical dimension  its name must be z or start with depth        stop     ENDELSE    ENDELSE      if keyword_set getdimensions  then begin     widget_control  noticebase  bad_id   nothing   destroy     ncdf_close   cdfid     return   endif     check that all i xyz min ax mesh are well defined     if n_elements ixminmesh  EQ 0 THEN ixminmesh   0   if n_elements ixmaxmesh  EQ 0 then ixmaxmesh   jpiglo 1   if ixminmesh EQ  1 THEN ixminmesh   0   IF ixmaxmesh EQ  1 then ixmaxmesh   jpiglo 1   if n_elements iyminmesh  EQ 0 THEN iyminmesh   0   IF n_elements iymaxmesh  EQ 0 then iymaxmesh   jpjglo 1   if iyminmesh EQ  1 THEN iyminmesh   0   IF iymaxmesh EQ  1 then iymaxmesh   jpjglo 1   if n_elements izminmesh  EQ 0 THEN izminmesh   0   IF n_elements izmaxmesh  EQ 0 then izmaxmesh   jpkglo 1   if izminmesh EQ  1 THEN izminmesh   0   IF izmaxmesh EQ  1 then izmaxmesh   jpkglo 1   definition of jpi jpj jpj   jpi      long ixmaxmesh ixminmesh 1    jpj      long iymaxmesh iyminmesh 1    jpk      long izmaxmesh izminmesh 1      check onearth and its consequences     IF n_elements onearth  EQ 0 THEN key_onearth   1     ELSE key_onearth   keyword_set onearth     IF NOT key_onearth THEN BEGIN     periodic   0     shift   0   ENDIF     automatic definition of key_periodic     IF n_elements periodic  EQ 0 THEN BEGIN     IF jpi GT 1 THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE       xaxis    xaxis 720  MOD 360       xaxis   xaxis sort xaxis        key_periodic    xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2                         GE  xaxis 0 360      ENDIF ELSE key_periodic   0   ENDIF ELSE key_periodic   keyword_set periodic      automatic definition of key_shift     IF n_elements shift  EQ 0 THEN BEGIN     key_shift   long testvar var   key_shift     key_shift will be defined according to the first line of glamt      if keyword_set glamboundary  AND jpi GT 1 AND key_periodic EQ 1       THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE   xaxis between glamboundary 0  and glamboundary 1        xaxis   xaxis MOD 360       smaller   where xaxis LT glamboundary 0        if smaller 0  NE  1 then xaxis smaller    xaxis smaller 360       bigger   where xaxis GE glamboundary 1        if bigger 0  NE  1 then xaxis bigger    xaxis bigger 360          key_shift    where xaxis EQ min xaxis 0        IF key_shift NE 0 THEN BEGIN          key_shift   jpi key_shift         xaxis   shift xaxis  key_shift        ENDIF         IF array_equal sort xaxis  lindgen jpi  NE 1 THEN BEGIN         print   the x axis  1st line of glamt  is not sorted in the inceasing order after the automatic definition of key_shift          print   please use the keyword shift  and periodic  to suppress the automatic definition of key_shift  and key_periodic  and define by hand a more suitable value          widget_control  noticebase  bad_id   nothing   destroy         return       ENDIF        ENDIF ELSE key_shift   0   ENDIF ELSE key_shift   long shift key_periodic EQ 1      check key_stride and related things     if n_elements stride  eq 3 then key_stride   stride   if n_elements key_stride  LE 2 then key_stride    1  1  1    key_stride   1l   long key_stride    IF total key_stride  NE 3  THEN BEGIN     IF key_shift NE 0 THEN BEGIN   for explanation  see header of read_ncdf_varget pro       jpiright   key_shift       jpileft   jpi   key_shift      key_stride 0 1 key_shift 1  MOD key_stride 0          jpi    jpiright 1 key_stride 0 1     jpileft 1 key_stride 0 1      ENDIF ELSE jpi    jpi 1 key_stride 0 1     jpj    jpj 1 key_stride 1 1     jpk    jpk 1 key_stride 2 1   ENDIF     default definitions to be able to use read_ncdf_varget     default definitions to be able to use read_ncdf_varget   ixmindtasauve   testvar var   ixmindta    iymindtasauve   testvar var   iymindta    izmindtasauve   testvar var   izmindta      ixmindta   0l   iymindta   0l   izmindta   0l     jpt   1   time   1   firsttps   0     firstx   0   lastx   jpi 1   firsty   0   lasty   jpj 1   firstz   0   lastz   jpk 1   nx   jpi   ny   jpj   nz   1   izminmeshsauve   izminmesh   izminmesh   0     2d arrays:     list the 2d variables that must be read   namevar    glamt   glamu   glamv   glamf                    gphit   gphiu   gphiv   gphif                    e1t   e1u   e1v   e1f                    e2t   e2u   e2v   e2f    for the variables related to the partial steps   allvarname    ncdf_listvars cdfid    IF  where allvarname EQ  hdept 0  NE  1 THEN BEGIN     key_partialstep   1     namevar    namevar   hdept   hdepw    ENDIF ELSE BEGIN     key_partialstep   0     hdept    1     hdepw    1   ENDELSE   for compatibility with old versions of meshmask partial steps   IF  where allvarname EQ  e3tp 0  NE  1 THEN       namevar    namevar   e3tp   e3wp  ELSE BEGIN      e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3t_ps 0  NE  1     THEN namevar    namevar   e3t_ps   e3w_ps   ELSE BEGIN      e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3u_ps 0  NE  1     THEN namevar    namevar   e3u_ps   e3v_ps  ELSE BEGIN      e3u_ps    1     e3v_ps    1   ENDELSE     read all the 2d variables     for i   0  n_elements namevar 1 do begin     varcontient   ncdf_varinq cdfid  namevar i      name   varcontient name  read_ncdf_varget     commande   namevar i float res      rien   execute commande    ENDFOR   for compatibility with old versions of meshmask partial steps   change e3 tw p to e3 tw _ps   IF n_elements e3tp  NE 0 THEN e3t_ps   temporary e3tp    IF n_elements e3wp  NE 0 THEN e3w_ps   temporary e3wp    in the kase of key_stride ne  1  1  1  redefine f points   coordinates: they must be in the middle of 3 T points   if key_stride 0  NE 1 OR key_stride 1  NE 1 then BEGIN   we must recompute glamf and gphif      IF jpi GT 1 THEN BEGIN        if  keyword_set key_onearth  AND keyword_set xnotsorted            OR  keyword_set key_periodic  AND key_irregular  then BEGIN         stepxf    glamt   720  MOD 360         stepxf   shift stepxf   1   1    stepxf         stepxf      stepxf   stepxf   360   stepxf   360            stepxf   min abs stepxf  dimension   3          IF NOT keyword_set key_periodic  THEN             stepxf jpi 1      stepxf jpi 2          ENDIF ELSE BEGIN         stepxf   shift glamt   1   1    glamt         IF keyword_set key_periodic  THEN             stepxf jpi 1      360   stepxf jpi 1              ELSE stepxf jpi 1      stepxf jpi 2          ENDELSE       IF jpj GT 1 THEN BEGIN          stepxf  jpj 1    stepxf  jpj 2          stepxf jpi 1  jpj 1    stepxf jpi 2  jpj 2        ENDIF       glamf   glamt   0 5   stepxf     ENDIF ELSE glamf   glamt   0 5     IF jpj GT 1 THEN BEGIN    we must compute stepyf: y distance between T i j  T i 1 j 1        stepyf   shift gphit   1   1    gphit       stepyf  jpj 1    stepyf  jpj 2        IF jpi GT 1 THEN BEGIN         if NOT keyword_set key_periodic  THEN             stepyf jpi 1      stepyf jpi 2            stepyf jpi 1  jpj 1    stepyf jpi 2  jpj 2        ENDIF        gphif   gphit   0 5   stepyf     ENDIF ELSE gphif   gphit   0 5   ENDIF     3d arrays:     nz   jpk   izminmesh   izminmeshsauve     listdims   ncdf_listdims cdfid    micromask    where listdims EQ  y_m 0      varcontient   ncdf_varinq cdfid   tmask    name   varcontient name   IF micromask NE  1 THEN BEGIN   keep original values     iyminmeshtrue   iyminmesh     key_stridetrue   key_stride     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue   the mask is stored as the bit values of the byte array  along the y   dimension  see micromeshmask pro    we must modify several parameters       iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1     key_stride    key_stride 0  1  key_stride 2   read_ncdf_varget     tmask   bytarr jpi  jpj  jpk    now we must get back the mask   loop on the level to save memory  the loop is short and  thus    should be fast enough      FOR k   0  jpk 1 DO BEGIN       zzz   transpose res    k        zzz   reform binary zzz  8 ny  nx   over        zzz   transpose temporary zzz        zzz   zzz  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN BEGIN           IF float strmid version release 0 3  LT 5 6 THEN BEGIN         nnny    size zzz 2          yind   key_stridetrue 1 lindgen nnny 1 key_stridetrue 1 1          tmask    k    temporary zzz  yind           ENDIF ELSE tmask    k    temporary zzz  0: :key_stridetrue 1        ENDIF ELSE tmask    k    temporary zzz      ENDFOR   ENDIF ELSE BEGIN  read_ncdf_varget     tmask   byte res    ENDELSE   boudary conditions used to compute umask    varcontient   ncdf_varinq cdfid   umask    name   varcontient name   nx   1L   firstx   jpi 1   lastx   jpi 1   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     umaskred   reform binary res  8 ny  jpk   over      umaskred   umaskred yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN umaskred   temporary umaskred yind      ENDIF ELSE BEGIN  read_ncdf_varget     umaskred   reform byte res   over    ENDELSE   boudary conditions used to compute fmask  1    varcontient   ncdf_varinq cdfid   fmask    name   varcontient name   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     fmaskredy   reform binary res  8 ny  jpk   over      fmaskredy   fmaskredy yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN fmaskredy   temporary fmaskredy yind      ENDIF ELSE BEGIN  read_ncdf_varget     fmaskredy   reform byte res   over      fmaskredy   temporary fmaskredy  MOD 2   ENDELSE   boudary conditions used to compute vmask   varcontient   ncdf_varinq cdfid   vmask    name   varcontient name   nx   jpi   firstx   0L   lastx   jpi 1L   ny   1L   firsty   jpj 1   lasty   jpj 1   IF micromask NE  1 THEN BEGIN     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue     iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1  read_ncdf_varget     vmaskred   transpose temporary res   1  0  2      vmaskred   reform binary vmaskred  8 ny  nx  nz   over      vmaskred   transpose temporary vmaskred   1  0  2      vmaskred   reform vmaskred  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8      ENDIF ELSE BEGIN  read_ncdf_varget     vmaskred   reform byte res   over    ENDELSE   boudary conditions used to compute fmask  2    varcontient   ncdf_varinq cdfid   fmask    name   varcontient name   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     fmaskredx   transpose temporary res   1  0  2      fmaskredx   reform binary fmaskredx  8 ny  nx  nz   over      fmaskredx   transpose temporary fmaskredx   1  0  2      fmaskredx   reform fmaskredx  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8          iyminmesh   iyminmeshtrue     key_stride   key_stridetrue   ENDIF ELSE BEGIN  read_ncdf_varget     fmaskredx   reform byte res   over      fmaskredx   fmaskredx MOD 2   ENDELSE     1d arrays     namevar    e3t   e3w   gdept   gdepw    for i   0  n_elements namevar 1 do begin     varcontient   ncdf_varinq cdfid  namevar i      CASE n_elements varcontient dim  OF       4:BEGIN         commande    ncdf_varget cdfid namevar i namevar i                        offset    0 0 izminmesh 0  count    1 1 jpk 1          if key_stride 2  NE 1 then commande   commande  stride 1 1 key_stride 2 1        END        2:BEGIN         commande    ncdf_varget cdfid namevar i namevar i                        offset    izminmesh 0  count    jpk 1          if key_stride 2  NE 1 then commande   commande  stride key_stride 2        END        1:BEGIN         commande    ncdf_varget cdfid namevar i namevar i                        offset    izminmesh  count    jpk          if key_stride 2  NE 1 then commande   commande  stride key_stride 2        END     ENDCASE     rien   execute commande      commande   namevar i float namevar i      rien   execute commande      commande    if size namevar i   n_dimension  gt 0 then  namevar i    reform namevar i   over      rien   execute commande    ENDFOR     ncdf_close   cdfid     Apply Glamboudary     if keyword_set glamboundary  AND key_onearth then BEGIN     if glamboundary 0  NE glamboundary 1  then BEGIN       glamt   glamt MOD 360       smaller   where glamt LT glamboundary 0        if smaller 0  NE  1 then glamt smaller    glamt smaller 360       bigger   where glamt GE glamboundary 1        if bigger 0  NE  1 then glamt bigger    glamt bigger 360       glamu   glamu MOD 360       smaller   where glamu LT glamboundary 0        if smaller 0  NE  1 then glamu smaller    glamu smaller 360       bigger   where glamu GE glamboundary 1        if bigger 0  NE  1 then glamu bigger    glamu bigger 360       glamv   glamv MOD 360       smaller   where glamv LT glamboundary 0        if smaller 0  NE  1 then glamv smaller    glamv smaller 360       bigger   where glamv GE glamboundary 1        if bigger 0  NE  1 then glamv bigger    glamv bigger 360       glamf   glamf MOD 360       smaller   where glamf LT glamboundary 0        if smaller 0  NE  1 then glamf smaller    glamf smaller 360       bigger   where glamf GE glamboundary 1        if bigger 0  NE  1 then glamf bigger    glamf bigger 360       toosmall   where glamu EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamu toosmall    glamu toosmall    360       toosmall   where glamf EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamf toosmall    glamf toosmall    360     endif   endif     make sure we do have 2d arrays when jpj eq 1     IF jpj EQ 1 THEN BEGIN      glamt   reform glamt  jpi  jpj   over      gphit   reform gphit  jpi  jpj   over      e1t   reform e1t  jpi  jpj   over      e2t   reform e2t  jpi  jpj   over      glamu   reform glamu  jpi  jpj   over      gphiu   reform gphiu  jpi  jpj   over      e1u   reform e1u  jpi  jpj   over      e2u   reform e2u  jpi  jpj   over      glamv   reform glamv  jpi  jpj   over      gphiv   reform gphiv  jpi  jpj   over      e1v   reform e1v  jpi  jpj   over      e2v   reform e2v  jpi  jpj   over      glamf   reform glamf  jpi  jpj   over      gphif   reform gphif  jpi  jpj   over      e1f   reform e1f  jpi  jpj   over      e2f   reform e2f  jpi  jpj   over      IF keyword_set key_partialstep  THEN BEGIN       hdept   reform hdept  jpi  jpj   over        hdepw   reform hdepw  jpi  jpj   over        e3t_ps   reform e3t_ps  jpi  jpj   over        e3w_ps   reform e3w_ps  jpi  jpj   over      ENDIF    ENDIF     ixmindta   ixmindtasauve   iymindta   iymindtasauve   izmindta   izmindtasauve     widget_control  noticebase  bad_id   nothing   destroy     key_yreverse   0   key_zreverse   0   key_gridtype    c        grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN      IF n_elements ccmeshparameters  EQ 0 THEN strcalling    ncdf_meshread        ELSE strcalling   ccmeshparameters filename   ENDIF    IF n_elements glamt  GE 2 THEN BEGIN     glaminfo   moment glamt      IF finite glaminfo 2  EQ 0 THEN glaminfo   glaminfo 0:1      gphiinfo   moment gphit      IF finite gphiinfo 2  EQ 0 THEN gphiinfo   gphiinfo 0:1    ENDIF ELSE BEGIN      glaminfo   glamt     gphiinfo   gphit   ENDELSE    ccmeshparameters    filename:strcalling                glaminfo:float string glaminfo  format    E11 4                gphiinfo:float string gphiinfo  format    E11 4                jpiglo:jpiglo  jpjglo:jpjglo  jpkglo:jpkglo               jpi:jpi  jpj:jpj  jpk:jpk               ixminmesh:ixminmesh  ixmaxmesh:ixmaxmesh               iyminmesh:iyminmesh  iymaxmesh:iymaxmesh               izminmesh:izminmesh  izmaxmesh:izmaxmesh               key_shift:key_shift  key_periodic:key_periodic               key_stride:key_stride  key_gridtype:key_gridtype               key_yreverse:key_yreverse  key_zreverse:key_zreverse               key_partialstep:key_partialstep  key_onearth:key_onearth      if keyword_set key_performance  THEN       print   time ncdf_meshread  systime 1 tempsun         updateold      return  end"); 
     30a[28] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", "          NAME:ncdf_meshread     PURPOSE:read NetCDF meshmask file created by OPA     CATEGORY:grid reading     CALLING SEQUENCE:ncdf_meshread   filename       INPUTS:        filename: the name of the meshmask file to read  Default is      meshmask nc  if this name does not contain any   and if      iodirectory keyword is not specify  then the common variable      iodir will be use to define the mesh file path     KEYWORD PARAMETERS:        GLAMBOUNDARY:a 2 elements vector   lon1 lon2  the longitute      boundaries that should be used to visualize the data         lon2   lon1        lon2   lon1 le 360      key_shift will be automaticaly defined according to GLAMBOUNDARY          CHECKDAT: Suppressed  Use micromeshmask pro to create an      appropriate meshmask         ONEARTH   0 or 1: to force the manual definition of      key_onearth  to specify if the data are on earth   use longitude       latitude etc  By default  key_onearth   1       note that ONEARTH   0 forces PERIODIC   0  SHIFT   0 and is      cancelling GLAMBOUNDARY        PERIODIC   0 or 1: to force the manual definition of      key_periodic  By default  key_periodic is automaticaly      computed by using the first line of glamt         SHIFT   : to force the manual definition of key_shift  By      debault  key_shift is automaticaly computed according to the      glamboundary  when defined  by using the first line of glamt  if      key_periodic 0 then in any case key_shift   0          STRCALLING: a string containing the calling command used to call      computegrid  this is used by xxx pro         STRIDE   : a 3 elements vector to specify the stride in x  y  z      direction  Default definition is key_stride  The resulting value      will be stored in the common  cm_4mesh  variable key_stride       OUTPUTS:none     COMMON BLOCKS: cm_4mesh  cm_4data  cm_4cal     SIDE EFFECTS: define and or use common variables from                  cm_4mesh  cm_4data  cm_4cal     RESTRICTIONS:      ixminmesh ixmaxmesh iyminmesh iymaxmesh izminmesh izmaxmesh must    be defined febore calling ncdf_meshread  if some of those value    are equal to  1 they will be automatically defined      EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         12 1999   July 2004  Sebastien Masson: Several modifications  micromeshmask    clean partial steps  clean use of key_stride  automatic definition   of key_shift      Oct  2004  Sebastien Masson: add PERIODIC and SHIFT   Aug  2005  Sebastien Masson: some cleaning   english          PRO ncdf_meshread  filename  GLAMBOUNDARY   glamboundary  CHECKDAT   checkdat                       ONEARTH   onearth  GETDIMENSIONS   getdimensions                       PERIODIC   periodic  SHIFT   shift  STRIDE   stride                       STRCALLING   strcalling  _EXTRA   ex      cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       tempsun   systime 1             for key_performance   IF keyword_set CHECKDAT  THEN BEGIN     print    The keyword CHECKDAT has been suppressed  it could create bugs      print    Remove it from the call of ncdf_meshread      print    Please use smallmeshmask pro or micromeshmask pro to create a       print    meshmask that has manageable size      return   ENDIF     find meshfile name and open it      def de filename par defaut   IF n_params  EQ 0 then filename    meshmask nc    meshname   isafile file   filename  iodirectory   iodir  _EXTRA   ex    meshname   meshname 0      noticebase   xnotice Reading file  C  meshname C     if the meshmask is on tape archive   get it back   IF  version OS_FAMILY EQ  unix  THEN spawn   file  meshname     dev null    cdfid   ncdf_open meshname    contient   ncdf_inquire cdfid      dimensions     ncdf_diminq  cdfid   x  name  jpiglo   ncdf_diminq  cdfid   y  name  jpjglo   listdims   strlowcase ncdf_listdims cdfid    IF  where listdims EQ  z 0  NE  1 THEN ncdf_diminq  cdfid   z  name  jpkglo ELSE BEGIN      dimid    where strmid listdims  0  5  EQ  depth 0      IF dimid NE  1 THEN ncdf_diminq  cdfid  dimid  name  jpkglo ELSE BEGIN        report   We could not find the vertical dimension  its name must be z or start with depth        stop     ENDELSE    ENDELSE      if keyword_set getdimensions  then begin     widget_control  noticebase  bad_id   nothing   destroy     ncdf_close   cdfid     return   endif     check that all i xyz min ax mesh are well defined     if n_elements ixminmesh  EQ 0 THEN ixminmesh   0   if n_elements ixmaxmesh  EQ 0 then ixmaxmesh   jpiglo 1   if ixminmesh EQ  1 THEN ixminmesh   0   IF ixmaxmesh EQ  1 then ixmaxmesh   jpiglo 1   if n_elements iyminmesh  EQ 0 THEN iyminmesh   0   IF n_elements iymaxmesh  EQ 0 then iymaxmesh   jpjglo 1   if iyminmesh EQ  1 THEN iyminmesh   0   IF iymaxmesh EQ  1 then iymaxmesh   jpjglo 1   if n_elements izminmesh  EQ 0 THEN izminmesh   0   IF n_elements izmaxmesh  EQ 0 then izmaxmesh   jpkglo 1   if izminmesh EQ  1 THEN izminmesh   0   IF izmaxmesh EQ  1 then izmaxmesh   jpkglo 1   definition of jpi jpj jpj   jpi      long ixmaxmesh ixminmesh 1    jpj      long iymaxmesh iyminmesh 1    jpk      long izmaxmesh izminmesh 1      check onearth and its consequences     IF n_elements onearth  EQ 0 THEN key_onearth   1     ELSE key_onearth   keyword_set onearth     IF NOT key_onearth THEN BEGIN     periodic   0     shift   0   ENDIF     automatic definition of key_periodic     IF n_elements periodic  EQ 0 THEN BEGIN     IF jpi GT 1 THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE       xaxis    xaxis 720  MOD 360       xaxis   xaxis sort xaxis        key_periodic    xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2                         GE  xaxis 0 360      ENDIF ELSE key_periodic   0   ENDIF ELSE key_periodic   keyword_set periodic      automatic definition of key_shift     IF n_elements shift  EQ 0 THEN BEGIN     key_shift   long testvar var   key_shift     key_shift will be defined according to the first line of glamt      if keyword_set glamboundary  AND jpi GT 1 AND key_periodic EQ 1       THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE   xaxis between glamboundary 0  and glamboundary 1        xaxis   xaxis MOD 360       smaller   where xaxis LT glamboundary 0        if smaller 0  NE  1 then xaxis smaller    xaxis smaller 360       bigger   where xaxis GE glamboundary 1        if bigger 0  NE  1 then xaxis bigger    xaxis bigger 360          key_shift    where xaxis EQ min xaxis 0        IF key_shift NE 0 THEN BEGIN          key_shift   jpi key_shift         xaxis   shift xaxis  key_shift        ENDIF         IF array_equal sort xaxis  lindgen jpi  NE 1 THEN BEGIN         print   the x axis  1st line of glamt  is not sorted in the inceasing order after the automatic definition of key_shift          print   please use the keyword shift  and periodic  to suppress the automatic definition of key_shift  and key_periodic  and define by hand a more suitable value          widget_control  noticebase  bad_id   nothing   destroy         return       ENDIF        ENDIF ELSE key_shift   0   ENDIF ELSE key_shift   long shift key_periodic EQ 1      check key_stride and related things     if n_elements stride  eq 3 then key_stride   stride   if n_elements key_stride  LE 2 then key_stride    1  1  1    key_stride   1l   long key_stride    IF total key_stride  NE 3  THEN BEGIN     IF key_shift NE 0 THEN BEGIN   for explanation  see header of read_ncdf_varget pro       jpiright   key_shift       jpileft   jpi   key_shift      key_stride 0 1 key_shift 1  MOD key_stride 0          jpi    jpiright 1 key_stride 0 1     jpileft 1 key_stride 0 1      ENDIF ELSE jpi    jpi 1 key_stride 0 1     jpj    jpj 1 key_stride 1 1     jpk    jpk 1 key_stride 2 1   ENDIF     default definitions to be able to use read_ncdf_varget     default definitions to be able to use read_ncdf_varget   ixmindtasauve   testvar var   ixmindta    iymindtasauve   testvar var   iymindta    izmindtasauve   testvar var   izmindta      ixmindta   0l   iymindta   0l   izmindta   0l     jpt   1   time   1   firsttps   0     firstx   0   lastx   jpi 1   firsty   0   lasty   jpj 1   firstz   0   lastz   jpk 1   nx   jpi   ny   jpj   nz   1   izminmeshsauve   izminmesh   izminmesh   0     2d arrays:     list the 2d variables that must be read   namevar    glamt   glamu   glamv   glamf                    gphit   gphiu   gphiv   gphif                    e1t   e1u   e1v   e1f                    e2t   e2u   e2v   e2f    for the variables related to the partial steps   allvarname    ncdf_listvars cdfid    IF  where allvarname EQ  hdept 0  NE  1 THEN BEGIN     key_partialstep   1     namevar    namevar   hdept   hdepw    ENDIF ELSE BEGIN     key_partialstep   0     hdept    1     hdepw    1   ENDELSE   for compatibility with old versions of meshmask partial steps   IF  where allvarname EQ  e3tp 0  NE  1 THEN       namevar    namevar   e3tp   e3wp  ELSE BEGIN      e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3t_ps 0  NE  1     THEN namevar    namevar   e3t_ps   e3w_ps   ELSE BEGIN      e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3u_ps 0  NE  1     THEN namevar    namevar   e3u_ps   e3v_ps  ELSE BEGIN      e3u_ps    1     e3v_ps    1   ENDELSE     read all the 2d variables     for i   0  n_elements namevar 1 do begin     varcontient   ncdf_varinq cdfid  namevar i      name   varcontient name  read_ncdf_varget     commande   namevar i float res      rien   execute commande    ENDFOR   for compatibility with old versions of meshmask partial steps   change e3 tw p to e3 tw _ps   IF n_elements e3tp  NE 0 THEN e3t_ps   temporary e3tp    IF n_elements e3wp  NE 0 THEN e3w_ps   temporary e3wp    in the kase of key_stride ne  1  1  1  redefine f points   coordinates: they must be in the middle of 3 T points   if key_stride 0  NE 1 OR key_stride 1  NE 1 then BEGIN   we must recompute glamf and gphif      IF jpi GT 1 THEN BEGIN        if  keyword_set key_onearth  AND keyword_set xnotsorted            OR  keyword_set key_periodic  AND key_irregular  then BEGIN         stepxf    glamt   720  MOD 360         stepxf   shift stepxf   1   1    stepxf         stepxf      stepxf   stepxf   360   stepxf   360            stepxf   min abs stepxf  dimension   3          IF NOT keyword_set key_periodic  THEN             stepxf jpi 1      stepxf jpi 2          ENDIF ELSE BEGIN         stepxf   shift glamt   1   1    glamt         IF keyword_set key_periodic  THEN             stepxf jpi 1      360   stepxf jpi 1              ELSE stepxf jpi 1      stepxf jpi 2          ENDELSE       IF jpj GT 1 THEN BEGIN          stepxf  jpj 1    stepxf  jpj 2          stepxf jpi 1  jpj 1    stepxf jpi 2  jpj 2        ENDIF       glamf   glamt   0 5   stepxf     ENDIF ELSE glamf   glamt   0 5     IF jpj GT 1 THEN BEGIN    we must compute stepyf: y distance between T i j  T i 1 j 1        stepyf   shift gphit   1   1    gphit       stepyf  jpj 1    stepyf  jpj 2        IF jpi GT 1 THEN BEGIN         if NOT keyword_set key_periodic  THEN             stepyf jpi 1      stepyf jpi 2            stepyf jpi 1  jpj 1    stepyf jpi 2  jpj 2        ENDIF        gphif   gphit   0 5   stepyf     ENDIF ELSE gphif   gphit   0 5   ENDIF     3d arrays:     nz   jpk   izminmesh   izminmeshsauve     listdims   ncdf_listdims cdfid    micromask    where listdims EQ  y_m 0      varcontient   ncdf_varinq cdfid   tmask    name   varcontient name   IF micromask NE  1 THEN BEGIN   keep original values     iyminmeshtrue   iyminmesh     key_stridetrue   key_stride     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue   the mask is stored as the bit values of the byte array  along the y   dimension  see micromeshmask pro    we must modify several parameters       iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1     key_stride    key_stride 0  1  key_stride 2   read_ncdf_varget     tmask   bytarr jpi  jpj  jpk    now we must get back the mask   loop on the level to save memory  the loop is short and  thus    should be fast enough      FOR k   0  jpk 1 DO BEGIN       zzz   transpose res    k        zzz   reform binary zzz  8 ny  nx   over        zzz   transpose temporary zzz        zzz   zzz  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN BEGIN           IF float strmid version release 0 3  LT 5 6 THEN BEGIN         nnny    size zzz 2          yind   key_stridetrue 1 lindgen nnny 1 key_stridetrue 1 1          tmask    k    temporary zzz  yind           ENDIF ELSE tmask    k    temporary zzz  0: :key_stridetrue 1        ENDIF ELSE tmask    k    temporary zzz      ENDFOR   ENDIF ELSE BEGIN  read_ncdf_varget     tmask   byte res    ENDELSE   boudary conditions used to compute umask    varcontient   ncdf_varinq cdfid   umask    name   varcontient name   nx   1L   firstx   jpi 1   lastx   jpi 1   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     umaskred   reform binary res  8 ny  jpk   over      umaskred   umaskred yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN umaskred   temporary umaskred yind      ENDIF ELSE BEGIN  read_ncdf_varget     umaskred   reform byte res   over    ENDELSE   boudary conditions used to compute fmask  1    varcontient   ncdf_varinq cdfid   fmask    name   varcontient name   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     fmaskredy   reform binary res  8 ny  jpk   over      fmaskredy   fmaskredy yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN fmaskredy   temporary fmaskredy yind      ENDIF ELSE BEGIN  read_ncdf_varget     fmaskredy   reform byte res   over      fmaskredy   temporary fmaskredy  MOD 2   ENDELSE   boudary conditions used to compute vmask   varcontient   ncdf_varinq cdfid   vmask    name   varcontient name   nx   jpi   firstx   0L   lastx   jpi 1L   ny   1L   firsty   jpj 1   lasty   jpj 1   IF micromask NE  1 THEN BEGIN     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue     iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1  read_ncdf_varget     IF jpk EQ 1 THEN res   reform res  jpi  1  jpk   over      vmaskred   transpose temporary res   1  0  2      vmaskred   reform binary vmaskred  8 ny  nx  nz   over      vmaskred   transpose temporary vmaskred   1  0  2      vmaskred   reform vmaskred  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8      ENDIF ELSE BEGIN  read_ncdf_varget     vmaskred   reform byte res   over    ENDELSE   boudary conditions used to compute fmask  2    varcontient   ncdf_varinq cdfid   fmask    name   varcontient name   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     IF jpk EQ 1 THEN res   reform res  jpi  1  jpk   over      fmaskredx   transpose temporary res   1  0  2      fmaskredx   reform binary fmaskredx  8 ny  nx  nz   over      fmaskredx   transpose temporary fmaskredx   1  0  2      fmaskredx   reform fmaskredx  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8          iyminmesh   iyminmeshtrue     key_stride   key_stridetrue   ENDIF ELSE BEGIN  read_ncdf_varget     fmaskredx   reform byte res   over      fmaskredx   fmaskredx MOD 2   ENDELSE     1d arrays     namevar    e3t   e3w   gdept   gdepw    for i   0  n_elements namevar 1 do begin     varcontient   ncdf_varinq cdfid  namevar i      CASE n_elements varcontient dim  OF       4:BEGIN         commande    ncdf_varget cdfid namevar i namevar i                        offset    0 0 izminmesh 0  count    1 1 jpk 1          if key_stride 2  NE 1 then commande   commande  stride 1 1 key_stride 2 1        END        2:BEGIN         commande    ncdf_varget cdfid namevar i namevar i                        offset    izminmesh 0  count    jpk 1          if key_stride 2  NE 1 then commande   commande  stride key_stride 2        END        1:BEGIN         commande    ncdf_varget cdfid namevar i namevar i                        offset    izminmesh  count    jpk          if key_stride 2  NE 1 then commande   commande  stride key_stride 2        END     ENDCASE     rien   execute commande      commande   namevar i float namevar i      rien   execute commande      commande    if size namevar i   n_dimension  gt 0 then  namevar i    reform namevar i   over      rien   execute commande    ENDFOR     ncdf_close   cdfid     Apply Glamboudary     if keyword_set glamboundary  AND key_onearth then BEGIN     if glamboundary 0  NE glamboundary 1  then BEGIN       glamt   glamt MOD 360       smaller   where glamt LT glamboundary 0        if smaller 0  NE  1 then glamt smaller    glamt smaller 360       bigger   where glamt GE glamboundary 1        if bigger 0  NE  1 then glamt bigger    glamt bigger 360       glamu   glamu MOD 360       smaller   where glamu LT glamboundary 0        if smaller 0  NE  1 then glamu smaller    glamu smaller 360       bigger   where glamu GE glamboundary 1        if bigger 0  NE  1 then glamu bigger    glamu bigger 360       glamv   glamv MOD 360       smaller   where glamv LT glamboundary 0        if smaller 0  NE  1 then glamv smaller    glamv smaller 360       bigger   where glamv GE glamboundary 1        if bigger 0  NE  1 then glamv bigger    glamv bigger 360       glamf   glamf MOD 360       smaller   where glamf LT glamboundary 0        if smaller 0  NE  1 then glamf smaller    glamf smaller 360       bigger   where glamf GE glamboundary 1        if bigger 0  NE  1 then glamf bigger    glamf bigger 360       toosmall   where glamu EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamu toosmall    glamu toosmall    360       toosmall   where glamf EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamf toosmall    glamf toosmall    360     endif   endif     make sure we do have 2d arrays when jpj eq 1     IF jpj EQ 1 THEN BEGIN      glamt   reform glamt  jpi  jpj   over      gphit   reform gphit  jpi  jpj   over      e1t   reform e1t  jpi  jpj   over      e2t   reform e2t  jpi  jpj   over      glamu   reform glamu  jpi  jpj   over      gphiu   reform gphiu  jpi  jpj   over      e1u   reform e1u  jpi  jpj   over      e2u   reform e2u  jpi  jpj   over      glamv   reform glamv  jpi  jpj   over      gphiv   reform gphiv  jpi  jpj   over      e1v   reform e1v  jpi  jpj   over      e2v   reform e2v  jpi  jpj   over      glamf   reform glamf  jpi  jpj   over      gphif   reform gphif  jpi  jpj   over      e1f   reform e1f  jpi  jpj   over      e2f   reform e2f  jpi  jpj   over      IF keyword_set key_partialstep  THEN BEGIN       hdept   reform hdept  jpi  jpj   over        hdepw   reform hdepw  jpi  jpj   over        e3t_ps   reform e3t_ps  jpi  jpj   over        e3w_ps   reform e3w_ps  jpi  jpj   over      ENDIF    ENDIF     ixmindta   ixmindtasauve   iymindta   iymindtasauve   izmindta   izmindtasauve     widget_control  noticebase  bad_id   nothing   destroy     key_yreverse   0   key_zreverse   0   key_gridtype    c        grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN      IF n_elements ccmeshparameters  EQ 0 THEN strcalling    ncdf_meshread        ELSE strcalling   ccmeshparameters filename   ENDIF    IF n_elements glamt  GE 2 THEN BEGIN     glaminfo   moment glamt      IF finite glaminfo 2  EQ 0 THEN glaminfo   glaminfo 0:1      gphiinfo   moment gphit      IF finite gphiinfo 2  EQ 0 THEN gphiinfo   gphiinfo 0:1    ENDIF ELSE BEGIN      glaminfo   glamt     gphiinfo   gphit   ENDELSE    ccmeshparameters    filename:strcalling                glaminfo:float string glaminfo  format    E11 4                gphiinfo:float string gphiinfo  format    E11 4                jpiglo:jpiglo  jpjglo:jpjglo  jpkglo:jpkglo               jpi:jpi  jpj:jpj  jpk:jpk               ixminmesh:ixminmesh  ixmaxmesh:ixmaxmesh               iyminmesh:iyminmesh  iymaxmesh:iymaxmesh               izminmesh:izminmesh  izmaxmesh:izmaxmesh               key_shift:key_shift  key_periodic:key_periodic               key_stride:key_stride  key_gridtype:key_gridtype               key_yreverse:key_yreverse  key_zreverse:key_zreverse               key_partialstep:key_partialstep  key_onearth:key_onearth      if keyword_set key_performance  THEN       print   time ncdf_meshread  systime 1 tempsun         updateold      return  end"); 
    3131a[29] = new Array("./Grid/restoreboxparam.html", "restoreboxparam.pro", "", "          NAME: restoreboxparam     PURPOSE: restore all the zoom parameters  defined by calling domdef             perviously defined by saveboxparam     CATEGORY:     CALLING SEQUENCE: restoreboxparam  filename      INPUTS: filename a scalar string defining the file name      KEYWORD PARAMETERS: none     OUTPUTS:none     COMMON BLOCKS:  cm_4mesh and  cm_demomode_used if we are in demo mode     SIDE EFFECTS: call def_myuniquetmpdir  if myuniquetmpdir is undefined:                    define  create and add it to  path     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         July 2005         PRO restoreboxparam  filename  cm_4mesh     IF lmgr demo  EQ 1 THEN BEGIN   if we are in demo mode  we cannot save the parameters in a temporary file   cm_demomode_used        lon1   boxzoomparam bound 0       lon2   boxzoomparam bound 1       lat1   boxzoomparam bound 2       lat2   boxzoomparam bound 3       vert1   boxzoomparam bound 4       vert2   boxzoomparam bound 5       firstxt   boxzoomparam indexes 0       lastxt   boxzoomparam indexes 1       firstyt   boxzoomparam indexes 2       lastyt   boxzoomparam indexes 3       firstxu   boxzoomparam indexes 4       lastxu   boxzoomparam indexes 5       firstyu   boxzoomparam indexes 6       lastyu   boxzoomparam indexes 7       firstxv   boxzoomparam indexes 8       lastxv   boxzoomparam indexes 9       firstyv   boxzoomparam indexes 10       lastyv   boxzoomparam indexes 11       firstxf   boxzoomparam indexes 12       lastxf   boxzoomparam indexes 13       firstyf   boxzoomparam indexes 14       lastyf   boxzoomparam indexes 15       firstzt   boxzoomparam indexes 16       lastzt   boxzoomparam indexes 17       firstzw   boxzoomparam indexes 18       lastzw   boxzoomparam indexes 19       nxt   boxzoomparam indexes 20       nyt   boxzoomparam indexes 21       nxu   boxzoomparam indexes 22       nyu   boxzoomparam indexes 23       nxv   boxzoomparam indexes 24       nyv   boxzoomparam indexes 25       nxf   boxzoomparam indexes 26       nyf   boxzoomparam indexes 27       nzt   boxzoomparam indexes 28       nzw   boxzoomparam indexes 29       key_irregular   boxzoomparam key         boxzoomparam    1      ENDIF ELSE BEGIN         restore  myuniquetmpdir   filename       file_delete  myuniquetmpdir   filename      ENDELSE       updateold     return end     "); 
    3232a[30] = new Array("./Grid/saveboxparam.html", "saveboxparam.pro", "", "          NAME: saveboxparam     PURPOSE: save all the zoom parameters  defined by calling domdef             in a file  using save command  located in myuniquetmpdir             common variable defined by def_myuniquetmpdir      CATEGORY:     CALLING SEQUENCE: saveboxparam  filename      INPUTS: filename a scalar string defining the file name      KEYWORD PARAMETERS: none     OUTPUTS:none     COMMON BLOCKS:  cm_4mesh and  cm_demomode_used if we are in demo mode     SIDE EFFECTS: call def_myuniquetmpdir  if myuniquetmpdir is undefined:                    define  create and add it to  path     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         June 2005         PRO saveboxparam  filename  cm_4mesh     def_myuniquetmpdir     IF lmgr demo  EQ 1 THEN BEGIN   if we are in demo mode  we cannot save the parameters in a temporary file   cm_demomode_used         boxzoomparam    bound: lon1  lon2  lat1  lat2  vert1  vert2             indexes: firstxt  lastxt  firstyt  lastyt            firstxu  lastxu  firstyu  lastyu            firstxv  lastxv  firstyv  lastyv            firstxf  lastxf  firstyf  lastyf            firstzt  lastzt  firstzw  lastzw            nxt  nyt  nxu  nyu  nxv  nyv  nxf  nyf  nzt  nzw             key:key_irregular       ENDIF ELSE BEGIN         save  lon1  lon2  lat1  lat2  vert1  vert2            firstxt  lastxt  firstyt  lastyt            firstxu  lastxu  firstyu  lastyu            firstxv  lastxv  firstyv  lastyv            firstxf  lastxf  firstyf  lastyf            firstzt  lastzt  firstzw  lastzw            nxt  nyt  nxu  nyu  nxv  nyv  nxf  nyf  nzt  nzw            key_irregular  filename   myuniquetmpdir   filename      ENDELSE     return end"); 
    3333a[31] = new Array("./Grid/smallmeshmask.html", "smallmeshmask.pro", "", "    NAME: smallmeshmask pro     PURPOSE: reduce the size of the NetCDF meshmask created by OPA by   using byte format for the masks and the foat format for the other   fields      CATEGORY:for OPA meshmask files     CALLING SEQUENCE: smallmeshmask  ncfilein  ncfileout      INPUTS:         ncfilein:        1  the name of the meshmask file to be reduced  In that case         there is only one meshmask file          OR          2  the xxx part in the names: xxx mesh_hgr nc xxx mesh_zgr nc        xxx mask nc  In that case  the meshmask is split into 3 files           ncfileout: the name of the reduced meshmask file  default        definition is smallmeshmask nc     KEYWORD PARAMETERS:        IODIR:to define the files path      OUTPUTS: no     COMMON BLOCKS: no     EXAMPLE:      IDL  meshdir d1fes2 raid2 smasson DATA ORCA05       IDL  smallmeshmask   meshmask_ORCA_R05 nc iodir meshdir     MODIFICATION HISTORY:        July 2004 Sebastien Masson  smasson lodyc jussieu fr        PRO ncdf_transfer  inid  outid  inname  outname   IF n_elements outname  EQ 0 THEN outname   inname   ncdf_varget  inid  inname  zzz   ncdf_varput  outid  outname  float reform zzz   over    RETURN END   PRO smallmeshmask  ncfilein  ncfileout  IODIR   iodir     filein   isafile FILE   ncfilein  IODIR   iodir   NEW    test    findfile filein 0    IF test EQ   THEN BEGIN     filein_hgr    findfile filein mesh_hgr nc 0      filein_zgr    findfile filein mesh_zgr nc 0      filein_msk    findfile filein mask nc 0      IF filein_hgr EQ   OR filein_zgr EQ   OR filein_msk EQ    THEN BEGIN       print   meshmask file s  not found        print  filein  does not exist        print  filein mesh_hgr nc does not exist        print  filein mesh_zgr nc does not exist        print  filein mask nc does not exist        return     ENDIF   ENDIF ELSE filein   test       get the horizontal dimensions   IF n_elements filein_hgr  NE 0  THEN cdfid   ncdf_open filein_hgr      ELSE cdfid   ncdf_open filein     ncdf_diminq  cdfid   x  name  jpi   ncdf_diminq  cdfid   y  name  jpj   get the vertical dimensions   IF n_elements filein_zgr  NE 0  THEN BEGIN     ncdf_close  cdfid     cdfid   ncdf_open filein_zgr    ENDIF   listdims   strlowcase ncdf_listdims cdfid    IF  where listdims EQ  z 0  NE  1 THEN ncdf_diminq  cdfid   z  name  jpk ELSE BEGIN      dimid    where strmid listdims  0  5  EQ  depth 0      IF dimid NE  1 THEN ncdf_diminq  cdfid  dimid  name  jpk ELSE BEGIN        report   We could not find the vertical dimension  its name must be z or start with depth        return     ENDELSE    ENDELSE    get the variables list related to the partial steps   varlist_ps   ncdf_listvars cdfid    varlist_ps   strtrim strlowcase varlist_ps  2            define the output file     IF n_elements ncfileout  EQ 0  THEN ncfileout    smallmeshmask nc       cdfidout   ncdf_create isafile FILE   ncfileout  IODIR   iodir   NEW   clobber    ncdf_control  cdfidout   nofill   dimension   dimidx   ncdf_dimdef cdfidout   x  jpi    dimidy   ncdf_dimdef cdfidout   y  jpj    dimidz   ncdf_dimdef cdfidout   z  jpk    global attributs   ncdf_attput  cdfidout   IDL_Program_Name   smallmeshmask pro   GLOBAL   ncdf_attput  cdfidout   Creation_Date  systime   GLOBAL   declaration des variables   varid   lonarr 20    horizontal variables   hgrlist    glamt   glamu   glamv   glamf                    gphit   gphiu   gphiv   gphif                    e1t   e1u   e1v   e1f                    e2t   e2u   e2v   e2f    FOR h   0  n_elements hgrlist 1 DO       varid h    ncdf_vardef cdfidout  hgrlist h   dimidx  dimidy   float    vertical variables   zgrlist    e3t   e3w   gdept   gdepw    FOR z   0  n_elements zgrlist 1 DO       varid 16 z    ncdf_vardef cdfidout  zgrlist z   dimidz   float    variables related to the partial steps   IF  where varlist_ps EQ  hdept 0  NE  1 THEN       varid    varid  ncdf_vardef cdfidout   hdept   dimidx  dimidy   float    IF  where varlist_ps EQ  hdepw 0  NE  1 THEN       varid    varid  ncdf_vardef cdfidout   hdepw   dimidx  dimidy   float    old variable name  keep for compatibility with old run  Change e3tp to e3t_ps   IF  where varlist_ps EQ  e3tp 0  NE  1 THEN       varid    varid  ncdf_vardef cdfidout   e3t_ps   dimidx  dimidy   float    old variable name  keep for compatibility with old run  Change e3wp to e3w_ps   IF  where varlist_ps EQ  e3wp 0  NE  1 THEN       varid    varid  ncdf_vardef cdfidout   e3w_ps   dimidx  dimidy   float      IF  where varlist_ps EQ  e3t_ps 0  NE  1 THEN       varid    varid  ncdf_vardef cdfidout   e3t_ps   dimidx  dimidy   float    IF  where varlist_ps EQ  e3w_ps 0  NE  1 THEN       varid    varid  ncdf_vardef cdfidout   e3w_ps   dimidx  dimidy   float      IF  where varlist_ps EQ  e3u_ps 0  NE  1 THEN         varid    varid  ncdf_vardef cdfidout   e3u_ps   dimidx  dimidy   float      IF  where varlist_ps EQ  e3v_ps 0  NE  1 THEN         varid    varid  ncdf_vardef cdfidout   e3v_ps   dimidx  dimidy   float    mask variable   msklist    tmask   umask   vmask   fmask    FOR m   0  n_elements msklist 1 DO       varid    varid  ncdf_vardef cdfidout  msklist m                                       dimidx  dimidy  dimidz   byte        ncdf_control  cdfidout   endef       get the horizontal variables     IF n_elements filein_hgr  NE 0  THEN BEGIN     ncdf_close  cdfid     cdfid   ncdf_open filein_hgr    ENDIF     FOR h   0  n_elements hgrlist 1 DO       ncdf_transfer  cdfid  cdfidout  hgrlist h      get the vertical variables     IF n_elements filein_zgr  NE 0  THEN BEGIN     ncdf_close  cdfid     cdfid   ncdf_open filein_zgr    ENDIF     FOR z   0  n_elements zgrlist 1 DO       ncdf_transfer  cdfid  cdfidout  zgrlist z    partial step variables    IF  where varlist_ps EQ  hdept 0  NE  1 THEN       ncdf_transfer  cdfid  cdfidout   hdept    IF  where varlist_ps EQ  hdepw 0  NE  1 THEN       ncdf_transfer  cdfid  cdfidout   hdepw    IF  where varlist_ps EQ  e3tp 0  NE  1 THEN       ncdf_transfer  cdfid  cdfidout   e3tp   e3t_ps    IF  where varlist_ps EQ  e3wp 0  NE  1 THEN       ncdf_transfer  cdfid  cdfidout   e3wp   e3w_ps    IF  where varlist_ps EQ  e3t_ps 0  NE  1 THEN       ncdf_transfer  cdfid  cdfidout   e3t_ps    IF  where varlist_ps EQ  e3w_ps 0  NE  1 THEN       ncdf_transfer  cdfid  cdfidout   e3w_ps      IF  where varlist_ps EQ  e3u_ps 0  NE  1 THEN         ncdf_transfer  cdfid  cdfidout   e3u_ps      IF  where varlist_ps EQ  e3v_ps 0  NE  1 THEN         ncdf_transfer  cdfid  cdfidout   e3v_ps      mask     IF n_elements filein_msk  NE 0  THEN BEGIN     ncdf_close  cdfid     cdfid   ncdf_open filein_msk    ENDIF   loop on the vertical levels to limit the memory use   FOR k   0  jpk 1 DO BEGIN     FOR m   0  3 DO BEGIN       CASE  ncdf_varinq cdfid  msklist m ndims OF         3:ncdf_varget  cdfid  msklist m  zzz  offset    0  0  k              count    jpi  jpj  1          4:ncdf_varget  cdfid  msklist m  zzz  offset    0  0  k  0              count    jpi  jpj  1  1        ENDCASE       ncdf_varput  cdfidout  msklist m  byte temporary zzz              offset    0  0  k  count    jpi  jpj  1      ENDFOR   ENDFOR       ncdf_close  cdfid   ncdf_close  cdfidout    RETURN END"); 
    34 a[32] = new Array("./Interpolation/angle.html", "angle.pro", "", "      NAME:angle pro  fom angle F v 2 2 in OPA8 2      PURPOSE:Compute angles between grid lines and direction of the North     CALLING SEQUENCE:        angle  fileocemesh  gcosu  gsinu  gcosv  gsinv  gcost  gsint     INPUTS:       fileocemesh a netcdf file that contains  at least :          glamu  gphiu: longitudes and latitudes at U points          glamv  gphiv: longitudes and latitudes at V points          glamf  gphif: longitudes and latitudes at F points     KEYWORD PARAMETERS:        IODIRECTORY: the directory path where is located fileocemesh         DOUBLE: use double precision  default is float      OUTPUTS:         gsinu gcosu : sinus and cosinus of the angle          gsinv gcosv   between north south direction          gsint gcost   and the j direction of the mesh                        RESTRICTIONS: to compute the lateral boundary conditions  we assume   that:         1  the first line is similar to the second line              gcosu  0    gcosu  1                gsinu  0    gsinu  1          2  the grid follows OPA x periodicity rule  first column is       equal to the next to last column              gcosv 0      gcosv jpj 2                 gsinv 0      gsinv jpj 2          MODIFICATION HISTORY:               Original :  96 07  O  Marti                      98 06  G  Madec          Feb 2005: IDL adaptation S  Masson           fsnspp: north stereographic polar projection FUNCTION fsnspp  plam  pphi  DOUBLE   double   IF keyword_set double  THEN BEGIN     a   2 d   tan   dpi 4 d    dpi 180 d pphi 2 d       x   cos   dpi 180 d plam     a     y   sin   dpi 180 d plam     a   ENDIF ELSE BEGIN     a   2    tan   pi 4     pi 180 float pphi 2        x   cos   pi 180 float plam      a     y   sin   pi 180 float plam      a       ENDELSE   RETURN   x:x  y:y  END       PRO angle  fileocemesh  gcosu  gsinu  gcosv  gsinv  gcost  gsint                IODIRECTORY   iodirectory  DOUBLE   double     0  read oceanic grid parameters         IF keyword_set IODIRECTORY  THEN BEGIN     IF  strpos iodirectory reverse_search  NE  strlen iodirectory 1  THEN         iodirectory   iodirectory    ENDIF ELSE iodirectory       fileoce   iodirectory fileocemesh     fileoce   findfile fileoce  count   okfile    IF okfile NE 1 THEN BEGIN     print   the file  fileoce  is not found  we stop      stop   ENDIF     cdfido   ncdf_open fileoce 0    ncdf_varget  cdfido   glamt  glamt   ncdf_varget  cdfido   glamu  glamu   ncdf_varget  cdfido   glamv  glamv   ncdf_varget  cdfido   glamf  glamf   ncdf_varget  cdfido   gphit  gphit   ncdf_varget  cdfido   gphiu  gphiu   ncdf_varget  cdfido   gphiv  gphiv   ncdf_varget  cdfido   gphif  gphif   ncdf_close  cdfido     glamt   reform glamt   over    glamu   reform glamu   over    glamv   reform glamv   over    glamf   reform glamf   over    gphit   reform gphit   over    gphiu   reform gphiu   over    gphiv   reform gphiv   over    gphif   reform gphif   over    jpj    size glamf   dimension 1      I  Compute the cosinus and sinus        computation done on the north stereographic polar plan         north pole direction   modulous  at t point    znpt   fsnspp  glamt  gphit  DOUBLE   double     glamt    1   gphit    1  free memory   znpt x     znpt x   znpt y     znpt y   znnpt   znpt x znpt x   znpt y znpt y       north pole direction   modulous  at u point    znpu   fsnspp  glamu  gphiu  DOUBLE   double     glamu    1   gphiu    1  free memory   znpu x     znpu x   znpu y     znpu y   znnpu   znpu x znpu x   znpu y znpu y       north pole direction   modulous  at v point    znpv   fsnspp  glamv  gphiv  DOUBLE   double     znpv00   znpv   znpv01   fsnspp  shift glamv  0  1  shift gphiv  0  1  DOUBLE   double     glamv    1   gphiv    1  free memory   znpv x     znpv x   znpv y     znpv y   znnpv   znpv x znpv x   znpv y znpv y       f point   znpf00   fsnspp  glamf  gphif  DOUBLE   double     znpf01   fsnspp  shift glamf  0  1  shift gphif  0  1  DOUBLE   double     znpf10   fsnspp  shift glamf  1  0  shift gphif  1  0  DOUBLE   double     glamf    1   gphif    1  free memory       j direction: v point segment direction  t point    zxvvt   znpv00 x   znpv01 x   zyvvt   znpv00 y   znpv01 y   zmnpvt   sqrt   temporary znnpt      zxvvt zxvvt   zyvvt zyvvt        znpv00    1  free memory   znpv01    1  free memory   IF keyword_set double  THEN zmnpvt   1 e 14   zmnpvt     ELSE zmnpvt   1 e 6   zmnpvt        j direction: f point segment direction  u point    zxffu   znpf00 x   znpf01 x   zyffu   znpf00 y   znpf01 y   zmnpfu   sqrt   temporary znnpu      zxffu zxffu   zyffu zyffu        znpf01    1  free memory   IF keyword_set double  THEN zmnpfu   1 e 14   zmnpfu     ELSE zmnpfu   1 e 6   zmnpfu        i direction: f point segment direction  v point    zxffv   znpf00 x   znpf10 x   zyffv   znpf00 y   znpf10 y    znpf00    1    znpf10    1  free memory   zmnpfv   sqrt   temporary znnpv      zxffv zxffv   zyffv zyffv        IF keyword_set double  THEN zmnpfv   1 e 14   zmnpfv     ELSE zmnpfv   1 e 6   zmnpfv        cosinus and sinus using scalar and vectorial products   gsint     znpt x zyvvt   znpt y zxvvt     zmnpvt   gcost     znpt x zxvvt   znpt y zyvvt     zmnpvt       cosinus and sinus using scalar and vectorial products   gsinu     znpu x zyffu   znpu y zxffu     zmnpfu   gcosu     znpu x zxffu   znpu y zyffu     zmnpfu       cosinus and sinus using scalar and vectorial products          caution  rotation of 90 degres    gsinv      znpv x zxffv   znpv y zyffv     zmnpfv   gcosv     znpv x zyffv   znpv y zxffv     zmnpfv     II  Geographic mesh               bad   where abs glamf shift glamf  0  1  LT 1 e 8          IF bad 0  NE  1 THEN BEGIN           gcosu bad    1            gsinu bad    0          ENDIF         bad   where abs gphif shift gphif  1  0  LT 1 e 8          IF bad 0  NE  1 THEN BEGIN           gcosv bad    1            gsinv bad    0          ENDIF     III  Lateral boundary conditions         gcost  0    gcost  1     gsint  0    gsint  1     gcosu  0    gcosu  1     gsinu  0    gsinu  1     gcosv 0      gcosv jpj 2      gsinv 0      gsinv jpj 2        RETURN END"); 
    35 a[33] = new Array("./Interpolation/clickincell.html", "clickincell.pro", "", "    NAME:clickincell     PURPOSE: click on a map and find in which cell the click was     CATEGORY:finding where is a point on a grid     CALLING SEQUENCE:         res   clickincell        Click with the left button to select a cell  Clicking one more       time in the same cell remove the cell from the selection        Click on the right button to quit        INPUTS:None     KEYWORD PARAMETERS:         CELLTYPE    T   W   U   V  or  F : This this the type of point       that is located in the center of the cell which the click is       located  default is T type of cell  with corner defined by F       points           DRAWCELL: to draw the cell in which we clicked         COLOR   the color used to draw the cells  Clicking one more       time in the same cell will draw the cell with the white color           ORIGINAL: to get the position of the cell regarding the original       grid  with no key_shift  ixminmesh  iyminmesh           IJ: see outpus         _EXTRA: to pass extra keywords to inquad and plot  when  drawcell      OUTPUTS:       the the index of the selected cells regarding to the grid which       is in memory in the variable of the common  If  ij keyword is       activated give 2D array  2  n  which are the i j position of the       n selected cells       COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:       IDL  plt  findgen jpi jpj nodata map 90 0 0 ortho     IDL  print  clickincell draw color 150 xy      MODIFICATION HISTORY:        Sebastien Masson  smasson lodyc jussieu fr         August 2003     FUNCTION clickincell  CELLTYPE   celltype  DRAWCELL   drawcell  COLOR   color  ORIGINAL   original  IJ   ij  _EXTRA   extra  common     initialization   cellnum    1L   selected   0     Cell list   get the grid parameter according to celltype   oldgrid   vargrid   IF NOT keyword_set celltype  THEN celltype    T    CASE strupcase celltype  OF      T :vargrid    F       W :vargrid    F       U :vargrid    V       V :vargrid    U       F :vargrid    T    ENDCASE   grille   1  glam  gphi   1  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz   vargrid   oldgrid   define the corner of the cells in the clockwise direction   IF keyword_set key_periodic  AND nx EQ jpi THEN BEGIN     x1   glam  0:ny 2      y1   gphi  0:ny 2      x2   glam  1:ny 1      y2   gphi  1:ny 1      x3   shift glam  1:ny 1   1  0      y3   shift gphi  1:ny 1   1  0      x4   shift glam  0:ny 2   1  0      y4   shift gphi  0:ny 2   1  0    ENDIF ELSE BEGIN     x1   glam 0:nx 2  0:ny 2      y1   gphi 0:nx 2  0:ny 2      x2   glam 0:nx 2  1:ny 1      y2   gphi 0:nx 2  1:ny 1      x3   glam 1:nx 1  1:ny 1      y3   gphi 1:nx 1  1:ny 1      x4   glam 1:nx 1  0:ny 2      y4   gphi 1:nx 1  0:ny 2    ENDELSE   glam    1   free memory   gphi    1   free memory     get mousse position on the reference map   cursor  x  y   data   up     while  mouse button ne 4  do BEGIN     IF finite x finite x  EQ 0 THEN GOTO  outwhile       case  mouse button of       1:BEGIN   What is the longitude          WHILE x GT  x range 1  DO x   x 360         WHILE x LT  x range 0  DO x   x 360         IF x GT  x range 1  THEN GOTO  outwhile         IF y GT  y range 1  THEN GOTO  outwhile         IF y LT  y range 0  THEN GOTO  outwhile           cell   inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4                            onsphere  _extra   extra            IF cell 0  EQ  1 OR n_elements cell  GT 1 THEN GOTO  outwhile         cell   cell 0          already    where cellnum EQ cell 0          IF already EQ  1 THEN BEGIN           cellnum    cellnum  cell            selected    selected  1            already   n_elements selected 1          ENDIF ELSE selected already    1 selected already          IF keyword_set drawcell  THEN BEGIN           oplot   x1 cell  x2 cell  x3 cell  x4 cell  x1 cell                   y1 cell  y2 cell  y3 cell  y4 cell  y1 cell                  color   color selected already                   d n_colors   255 1 selected already                  _extra   extra         ENDIF       END       2:                          middle button       ELSE:     ENDCASE       get mousse position on the reference map outwhile:     cursor  x  y   data   up   ENDWHILE     good   where selected NE 0    IF good 0  EQ  1 THEN RETURN   1      cellnum   cellnum good      yy   cellnum nx 1 key_periodic nx EQ jpi    xx   cellnum MOD  nx 1 key_periodic nx EQ jpi      CASE strupcase celltype  OF      T :BEGIN       xx   xx firstx 1       yy   yy firsty 1     END      W :BEGIN       xx   xx firstx 1       yy   yy firsty 1     END      U :BEGIN       xx   xx firstx       yy   yy firsty 1     END      V :BEGIN       xx   xx firstx 1       yy   yy firsty     END      F :BEGIN       xx   xx firstx       yy   yy firsty     END   ENDCASE     bad   where xx GE jpi    IF bad 0  NE  1 THEN BEGIN     xx bad    xx bad jpi     yy bad    yy bad 1   ENDIF   bad   where yy GE jpj    IF bad 0  NE  1 THEN stop     IF keyword_set original  THEN BEGIN     xx   xx key_shift     bad   where xx LT 0      IF bad 0  NE  1 THEN xx bad    xx bad jpi     xx   xx MOD jpi     xx   xx  ixminmesh     yy   yy iyminmesh   ENDIF     ncell   n_elements xx     IF keyword_set ij  THEN       RETURN   reform xx  1  ncell   over                   reform yy  1  ncell   over       IF keyword_set original  THEN RETURN  xx jpiglo yy     ELSE RETURN  xx jpi yy  END "); 
    36 a[34] = new Array("./Interpolation/compute_fromreg_bilinear_weigaddr.html", "compute_fromreg_bilinear_weigaddr.pro", "", "    NAME: compute_fromreg_bilinear_weigaddr     PURPOSE: compute the weight and address neede to interpolate data from a             regular grid  to any grid using the bilinear method        CATEGORY:interpolation     CALLING SEQUENCE:        compute_fromreg_bilinear_weigaddr  alon  alat  olon  olat  weig  addr     INPUTS:       lonin and latin: longitude latitude of the input data        lonout and latout: longitude latitude of the output data      KEYWORD PARAMETERS:           NONORTHERNLINE and  NOSOUTHERNLINE: activate if you don t whant to take into            account the northen southern line of the input data when perfoming the            interpolation      OUTPUTS:        weig  addr: 2D arrays  weig and addr are the weight and addresses used to       perform the interpolation:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over      COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:       the input grid must be a  regular grid  defined as a grid for which each       lontitudes lines have the same latitude and each latitudes columns have the       same longitude        We supposed the data are located on a sphere  with a periodicity along       the longitude        points located out of the southern and northern boundaries are interpolated       using a linear interpolation only along the longitudinal direction       EXAMPLE:      MODIFICATION HISTORY:    November 2005: Sebastien Masson  smasson lodyc jussieu fr                PRO compute_fromreg_bilinear_weigaddr  alonin  alatin  olonin  olat  weig  addr       NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline     compile_opt strictarr  strictarrsubs      alon   alonin   alat   alatin   olon   olonin     jpia   n_elements alon    jpja   n_elements alat      jpio    size olon   dimensions 0    jpjo    size olon   dimensions 1      alon   minalon   min alon   max   maxalon    IF maxalon minalon GE 360  THEN stop   alon must be monotonically increasing   IF array_equal sort alon  lindgen jpia  NE 1 THEN BEGIN      shiftx    where alon EQ min alon 0      alon   shift alon  shiftx      IF array_equal sort alon  lindgen jpia  NE 1 THEN stop   ENDIF ELSE shiftx   0   for longitude periodic bondary condition we add the fist   column on the right side of the array and    alon    alon  alon 0 360    jpia   jpia 1L   alat   revy   alat 0  GT alat 1    IF revy THEN alat   reverse alat    alat must be monotonically increasing   IF array_equal sort alat  lindgen jpja  NE 1 THEN stop     if keyword_set nonorthernline  then BEGIN      jpja   jpja   1L     alat   alat 0: jpja 1L    ENDIF   if keyword_set nosouthernline  then BEGIN      alat   alat 1: jpja 1L      jpja   jpja   1L   ENDIF   olon between minalon et minalon 360   out   where olon LT minalon    WHILE out 0  NE  1 DO BEGIN     olon out    olon out 360      out   where olon LT minalon    ENDWHILE   out   where olon GE minalon 360    WHILE out 0  NE  1 DO BEGIN     olon out    olon out  360      out   where olon GE minalon 360    ENDWHILE   make sure that all values of olon are located within values of alon   IF min olon  max   ma  LT minalon THEN stop   IF ma GE minalon 360  THEN stop     we want to do biliear interpolation   for each ocean point  we must   find in which atm cell it is located    if the ocean point is out of the atm grid  we use closest neighbor   interpolation      for each T point of oce grid  we find in which armospheric cell it is   located    As the atmospheric grid is regular  we can use inrecgrid instead   of inquad    pos   inrecgrid olon  olat  alon 0:jpia 2L  alat 0:jpja 2L                        checkout    alon jpia 1L  alat jpja 1L   output2d    checks    for longitude  each ocean points must be located in atm cell    IF  where pos 0    EQ  1 0  NE  1 THEN stop   no ocean point should be located westward of the left bondary of the   atm cell in which it is supposed to be located    IF total olon LT alon pos 0    NE 0 THEN stop   no ocean point should be located eastward of the right bondary of the   atm cell in which it is supposed to be located    IF total olon GT alon pos 0   1  NE 0 THEN stop     we use bilinear interpolation     we change the coordinates of each ocean points to fit into a   rectangle defined by:       y2                                                                     y1         x1          x2        X    x x1 x2 x1       Y    y y1 y2 y1      indx   pos 0      indy    temporary pos 1      points located out of the atmospheric grid too much northward or southward    bad   where indy EQ  1    indy   0   indy     IF max indx  GT jpia 2 THEN stop   checks    IF max indy  GT jpja 2 THEN stop   checks    x coordinates of the atm cell    x1   alon indx    x2   alon indx 1    new x coordinates of the ocean points in each cell   divi   temporary x2 x1   glamnew    olon x1 temporary divi    x1    1   free memory    olon    1   free memory    y coordinates of the atm cell    y1   alat indy    y2   alat indy 1                  new y coordinates of the ocean points in each cell   divi   temporary y2 y1   zero   where divi EQ 0    IF zero 0  NE  1 THEN divi zero    1    gphinew    olat y1 temporary divi    y1    1   free memory    checks    IF min glamnew  LT 0 THEN stop   IF max glamnew  GT 1 THEN stop     weight and address array used for bilinear interpolation    xaddr   lonarr 4  jpio jpjo    xaddr 0      indx     xaddr 1      indx   1L   xaddr 2      indx   1L   xaddr 3      indx        yaddr   lonarr 4  jpio jpjo    yaddr 0      indy   yaddr 1      indy   yaddr 2      indy   1L   yaddr 3      indy   1L   compute the weight for the bilinear interpolation    weig   fltarr 4  jpio jpjo    weig 0       1 glamnew     1 gphinew    weig 1          glamnew     1 gphinew    weig 2          glamnew        gphinew   weig 3       1 glamnew        gphinew    free memory   gphinew    1   IF bad 0  EQ  1 THEN glamnew    1 ELSE glamnew    temporary glamnew bad    we work now on the  bad  points   linear interpolation only along the longitudinal direction   IF bad 0  NE  1 THEN BEGIN     ybad   olat bad    the ocean points that are not located into an atm cell should be   located northward of the northern boudary of the atm grid         or southward of the southern boudary of the atm grid      IF total ybad GE min alat  AND ybad LE max alat  GE 1 THEN stop       weig 0  bad     1 glamnew      weig 1  bad    temporary glamnew      weig 2  bad    0      weig 3  bad    0      south   where ybad LT alat 0      IF south 0  NE  1 THEN yaddr  bad temporary south    0L     north   where ybad GT alat jpja 1      IF north 0  NE  1 THEN yaddr  bad temporary north    0L     ybad    1   bad    1   free memory   ENDIF   check totalweight   1   totalweig   abs 1 total weig  1    IF  where temporary totalweig  GE 1 e 5 0  NE  1 THEN stop     come back to the original atm grid without longitudinal overlap      jpia   jpia 1L   xaddr   temporary xaddr  MOD jpia   take into account shiftx if needed   IF shiftx NE 0 THEN xaddr    temporary xaddr    shiftx  MOD jpia   take into account nosouthernline and nonorthernline   if keyword_set nosouthernline  then BEGIN     yaddr   temporary yaddr    1L     jpja   jpja   1L   ENDIF   if keyword_set nonorthernline  then jpja   jpja   1L   take into account revy if needed   IF revy EQ 1 THEN yaddr   jpja   1L   temporary yaddr                                addr   temporary yaddr jpia   temporary xaddr       return end "); 
    37 a[35] = new Array("./Interpolation/compute_fromreg_imoms3_weigaddr.html", "compute_fromreg_imoms3_weigaddr.pro", "", "    NAME: compute_fromreg_imoms3_weigaddr     PURPOSE: compute the weight and address neede to interpolate data from a             regular grid  to any grid using the imoms3 method        CATEGORY:interpolation     CALLING SEQUENCE:        compute_fromreg_imoms3_weigaddr  alon  alat  olon  olat  weig  addr     INPUTS:       lonin and latin: longitude latitude of the input data        lonout and latout: longitude latitude of the output data      KEYWORD PARAMETERS:           NONORTHERNLINE and  NOSOUTHERNLINE: activate if you don t whant to take into            account the northen southern line of the input data when perfoming the            interpolation      OUTPUTS:        weig  addr: 2D arrays  weig and addr are the weight and addresses used to       perform the interpolation:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over      COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:       the input grid must be a  regular rectangular grid  defined as a grid for       which each lontitudes lines have the same latitude and each latitudes columns       have the same longitude        We supposed the data are located on a sphere  with a periodicity along       the longitude        points located between the first last 2 lines are interpolated       using a imoms3 interpolation along the longitudinal direction and linear       interpolation along the latitudinal direction       points located out of the southern and northern boundaries are interpolated       using a imoms3 interpolation only along the longitudinal direction       EXAMPLE:      MODIFICATION HISTORY:    November 2005: Sebastien Masson  smasson lodyc jussieu fr      March 2006: works for rectangular grids           PRO compute_fromreg_imoms3_weigaddr  alonin  alatin  olonin  olat  weig  addr                                          NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline     compile_opt strictarr  strictarrsubs      alon   alonin   alat   alatin   olon   olonin     jpia   n_elements alon    jpja   n_elements alat      jpio    size olon   dimensions 0    jpjo    size olon   dimensions 1      alon   minalon   min alon   max   maxalon    IF maxalon minalon GE 360  THEN stop   alon must be monotonically increasing   IF array_equal sort alon  lindgen jpia  NE 1 THEN BEGIN      shiftx    where alon EQ min alon 0      alon   shift alon  shiftx      IF array_equal sort alon  lindgen jpia  NE 1 THEN stop   ENDIF ELSE shiftx   0   alon is it regularly spaced    step   alon shift alon  1    step 0    step 0    360    IF total step step 0  GE 1 e 6  NE 0 THEN noregx   1   we extend the longitude range of alon   easy interpolation even   near minalon et maxalon    toadd   10 jpia 360 1   alon    alon jpia toadd:jpia 1 360  alon  alon 0:toadd 1 360    jpia   jpia 2 toadd   alat   revy   alat 0  GT alat 1    IF revy THEN alat   reverse alat    alat must be monotonically increasing   IF array_equal sort alat  lindgen jpja  NE 1 THEN stop   alat is it regularly spaced    step   alat shift alat  1    step   step 1:jpja   1L    IF total step step 0  GE 1 e 6  NE 0 THEN noregy   1     if keyword_set nonorthernline  then BEGIN      jpja   jpja   1L     alat   alat 0: jpja 1L    ENDIF   if keyword_set nosouthernline  then BEGIN      alat   alat 1: jpja 1L      jpja   jpja   1L   ENDIF   olon between minalon et minalon 360   out   where olon LT minalon    WHILE out 0  NE  1 DO BEGIN     olon out    olon out 360      out   where olon LT minalon    ENDWHILE   out   where olon GE minalon 360    WHILE out 0  NE  1 DO BEGIN     olon out    olon out  360      out   where olon GE minalon 360    ENDWHILE   make sure that all values of olon are located within values of alon   IF min olon  max   ma  LT minalon THEN stop   IF ma GE minalon 360  THEN stop     xaddr   lonarr 16  jpio jpjo    yaddr   lonarr 16  jpio jpjo    weig   fltarr 16  jpio jpjo      indexlon   value_locate alon  olon    IF total alon indexlon  GT olon  NE 0 THEN stop   IF total alon indexlon   1L  LE olon  NE 0 THEN stop   IF  where indexlon LE 1L      0  NE  1 THEN stop   IF  where indexlon GE jpia 3L 0  NE  1 THEN stop   indexlat   value_locate alat  olat      for the ocean points located below the atm line    jpja 2 and above the line 1   for those points we can always find 16 neighbors   imoms interpolation along longitude and latitude     short   where indexlat LT jpja 2L AND indexlat GE 1L    ilon   indexlon short    ilat   indexlat short       IF NOT keyword_set noregy  THEN BEGIN      delta   alat ilat 1L alat ilat      IF max abs delta delta 0  GE 1 e 6 THEN stop     delta   delta 0        d0    alat ilat 1L olat short delta     IF min d0  max   ma  LE  2 THEN stop     IF ma GT  1 THEN stop     wy0   imoms3 temporary d0      d1    alat ilat    olat short delta     IF min d1  max   ma  LE  1 THEN stop     IF ma GT 0 THEN stop     wy1   imoms3 temporary d1      d2    alat ilat 1L olat short delta     IF min d2  max   ma  LE 0 THEN stop     IF ma GT 1 THEN stop       wy2   imoms3 temporary d2      d3    alat ilat 2L olat short delta     IF min d3  max   ma  LE 1 THEN stop     IF ma GT 2 THEN stop       wy3   imoms3 temporary d3    ENDIF ELSE BEGIN      nele   n_elements short      wy0   fltarr nele      wy1   fltarr nele      wy2   fltarr nele      wy3   fltarr nele      FOR i   0L  nele 1 DO BEGIN       IF i MOD 10000 EQ 0 THEN print  i       newlat   spl_incr alat ilat i 1L:ilat i 2L   1  0  1  2  olat short i        IF newlat LE 0 THEN stop       IF newlat GT 1 THEN stop       wy0 i    imoms3 newlat 1        wy1 i    imoms3 newlat        wy2 i    imoms3 1 newlat        wy3 i    imoms3 2 newlat      ENDFOR   ENDELSE      mi   min wy0 wy1 wy2 wy3  max   ma    IF abs mi 1  GE 1 e 6 THEN stop   IF abs ma 1  GE 1 e 6 THEN stop     IF NOT keyword_set noregx  THEN BEGIN      delta   alon ilon alon ilon 1L      IF max abs delta delta 0  GE 1 e 6 THEN stop     delta   delta 0        d0    alon ilon 1L olon short delta     IF min d0  max   ma  LE  2 THEN stop     IF ma GT  1 THEN stop     wx0   imoms3 temporary d0      d1    alon ilon    olon short delta     IF min d1  max   ma  LE  1 THEN stop     IF ma GT 0 THEN stop     wx1   imoms3 temporary d1      d2    alon ilon 1L olon short delta     IF min d2  max   ma  LE 0 THEN stop     IF ma GT 1 THEN stop     wx2   imoms3 temporary d2      d3    alon ilon 2L olon short delta     IF min d3  max   ma  LE 1 THEN stop     IF ma GT 2 THEN stop       wx3   imoms3 temporary d3    ENDIF ELSE BEGIN      nele   n_elements short      wx0   fltarr nele      wx1   fltarr nele      wx2   fltarr nele      wx3   fltarr nele      FOR i   0L  nele 1 DO BEGIN       IF i MOD 10000 EQ 0 THEN print  i       newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i        IF newlon LE 0 THEN stop       IF newlon GT 1 THEN stop       wx0 i    imoms3 newlon 1        wx1 i    imoms3 newlon        wx2 i    imoms3 1 newlon        wx3 i    imoms3 2 newlon      ENDFOR   ENDELSE      mi   min wx0 wx1 wx2 wx3  max   ma    IF abs mi 1  GE 1 e 6 THEN stop   IF abs ma 1  GE 1 e 6 THEN stop     line 0   xaddr 0  short    ilon   1L   xaddr 1  short    ilon     xaddr 2  short    ilon   1L   xaddr 3  short    ilon   2L   yaddr 0  short    ilat   1L   yaddr 1  short    yaddr 0  short    yaddr 2  short    yaddr 0  short    yaddr 3  short    yaddr 0  short    weig 0  short    wx0   wy0   weig 1  short    wx1   wy0   weig 2  short    wx2   wy0   weig 3  short    wx3   wy0   line 1   xaddr 4  short    ilon   1L   xaddr 5  short    ilon     xaddr 6  short    ilon   1L   xaddr 7  short    ilon   2L   yaddr 4  short    ilat     yaddr 5  short    ilat     yaddr 6  short    ilat     yaddr 7  short    ilat     weig 4  short    wx0   wy1   weig 5  short    wx1   wy1   weig 6  short    wx2   wy1   weig 7  short    wx3   wy1   line 2   xaddr 8  short    ilon   1L   xaddr 9  short    ilon     xaddr 10  short    ilon   1L   xaddr 11  short    ilon   2L   yaddr 8  short    ilat   1L   yaddr 9  short    yaddr 8  short    yaddr 10  short    yaddr 8  short    yaddr 11  short    yaddr 8  short    weig 8  short    wx0   wy2   weig 9  short    wx1   wy2   weig 10  short    wx2   wy2   weig 11  short    wx3   wy2   line 3   xaddr 12  short    ilon   1L   xaddr 13  short    ilon     xaddr 14  short    ilon   1L   xaddr 15  short    ilon   2L   yaddr 12  short    ilat   2L   yaddr 13  short    yaddr 12  short    yaddr 14  short    yaddr 12  short    yaddr 15  short    yaddr 12  short    weig 12  short    wx0   wy3   weig 13  short    wx1   wy3   weig 14  short    wx2   wy3   weig 15  short    wx3   wy3     mi   min total weig  short  1  max   ma    IF abs mi 1  GE 1 e 6 THEN stop   IF abs ma 1  GE 1 e 6 THEN stop     for the ocean points located between the atm lines    jpja 2 and jpja 1 or between the atm lines 0 and 1   linear interpolation between line 1 and line 2     short   where indexlat EQ jpja 2L OR indexlat EQ 0    IF short 0  NE  1 THEN BEGIN     ilon   indexlon short      ilat   indexlat short        delta   alat ilat 1L alat ilat      IF NOT keyword_set noregy  THEN BEGIN        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0       ENDIF        d1    alat ilat    olat short delta     IF min d1  max   ma  LE  1 THEN stop     IF ma GT 0 THEN stop     wy1   1  temporary d1      d2    alat ilat 1L olat short delta     IF min d2  max   ma  LE 0 THEN stop     IF ma GT 1 THEN stop       wy2   1  temporary d2        mi   min wy1 wy2  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   but imoms3 along the longitude     IF NOT keyword_set noregx  THEN BEGIN        delta   alon ilon alon ilon 1L        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0          d0    alon ilon 1L olon short delta       IF min d0  max   ma  LE  2 THEN stop       IF ma GT  1 THEN stop       wx0   imoms3 temporary d0        d1    alon ilon    olon short delta       IF min d1  max   ma  LE  1 THEN stop       IF ma GT 0 THEN stop       wx1   imoms3 temporary d1        d2    alon ilon 1L olon short delta       IF min d2  max   ma  LE 0 THEN stop       IF ma GT 1 THEN stop       wx2   imoms3 temporary d2        d3    alon ilon 2L olon short delta       IF min d3  max   ma  LE 1 THEN stop       IF ma GT 2 THEN stop         wx3   imoms3 temporary d3      ENDIF ELSE BEGIN        nele   n_elements short        wx0   fltarr nele        wx1   fltarr nele        wx2   fltarr nele        wx3   fltarr nele        FOR i   0L  nele 1 DO BEGIN         IF i MOD 10000 EQ 0 THEN print  i         newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i          IF newlon LE 0 THEN stop         IF newlon GT 1 THEN stop         wx0 i    imoms3 newlon 1          wx1 i    imoms3 newlon          wx2 i    imoms3 1 newlon          wx3 i    imoms3 2 newlon        ENDFOR     ENDELSE        mi   min wx0 wx1 wx2 wx3  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   line 1     xaddr 0  short    ilon   1L     xaddr 1  short    ilon       xaddr 2  short    ilon   1L     xaddr 3  short    ilon   2L     yaddr 0  short    ilat       yaddr 1  short    ilat       yaddr 2  short    ilat       yaddr 3  short    ilat       weig 0  short    wx0   wy1     weig 1  short    wx1   wy1     weig 2  short    wx2   wy1     weig 3  short    wx3   wy1   line 2     xaddr 4  short    ilon   1L     xaddr 5  short    ilon       xaddr 6  short    ilon   1L     xaddr 7  short    ilon   2L     yaddr 4  short    ilat   1L     yaddr 5  short    yaddr 4  short      yaddr 6  short    yaddr 4  short      yaddr 7  short    yaddr 4  short      weig 4  short    wx0   wy2     weig 5  short    wx1   wy2     weig 6  short    wx2   wy2     weig 7  short    wx3   wy2       mi   min total weig  short  1  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop     ENDIF     for the ocean points located below the line 0   Interpolation only along the longitude      short   where indexlat EQ  1    IF short 0  NE  1 THEN BEGIN     ilon   indexlon short        IF NOT keyword_set noregx  THEN BEGIN        delta   alon ilon alon ilon 1L        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0          d0    alon ilon 1L olon short delta       IF min d0  max   ma  LE  2 THEN stop       IF ma GT  1 THEN stop       wx0   imoms3 temporary d0        d1    alon ilon    olon short delta       IF min d1  max   ma  LE  1 THEN stop       IF ma GT 0 THEN stop       wx1   imoms3 temporary d1        d2    alon ilon 1L olon short delta       IF min d2  max   ma  LE 0 THEN stop       IF ma GT 1 THEN stop       wx2   imoms3 temporary d2        d3    alon ilon 2L olon short delta       IF min d3  max   ma  LE 1 THEN stop       IF ma GT 2 THEN stop         wx3   imoms3 temporary d3      ENDIF ELSE BEGIN        nele   n_elements short        wx0   fltarr nele        wx1   fltarr nele        wx2   fltarr nele        wx3   fltarr nele        FOR i   0L  nele 1 DO BEGIN         IF i MOD 10000 EQ 0 THEN print  i         newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i          IF newlon LE 0 THEN stop         IF newlon GT 1 THEN stop         wx0 i    imoms3 newlon 1          wx1 i    imoms3 newlon          wx2 i    imoms3 1 newlon          wx3 i    imoms3 2 newlon        ENDFOR     ENDELSE        mi   min wx0 wx1 wx2 wx3  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   line 1     xaddr 0  short    ilon   1L     xaddr 1  short    ilon       xaddr 2  short    ilon   1L     xaddr 3  short    ilon   2L     yaddr 0:3  short    0      weig 0  short    wx0     weig 1  short    wx1     weig 2  short    wx2     weig 3  short    wx3       mi   min total weig  short  1  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop     ENDIF     for the ocean points located above jpia 1    Interpolation only along the longitude      short   where indexlat EQ jpja 1L    IF short 0  NE  1 THEN BEGIN     ilon   indexlon short        IF NOT keyword_set noregx  THEN BEGIN        delta   alon ilon alon ilon 1L        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0          d0    alon ilon 1L olon short delta       IF min d0  max   ma  LE  2 THEN stop       IF ma GT  1 THEN stop       wx0   imoms3 temporary d0        d1    alon ilon    olon short delta       IF min d1  max   ma  LE  1 THEN stop       IF ma GT 0 THEN stop       wx1   imoms3 temporary d1        d2    alon ilon 1L olon short delta       IF min d2  max   ma  LE 0 THEN stop       IF ma GT 1 THEN stop       wx2   imoms3 temporary d2        d3    alon ilon 2L olon short delta       IF min d3  max   ma  LE 1 THEN stop       IF ma GT 2 THEN stop         wx3   imoms3 temporary d3      ENDIF ELSE BEGIN        nele   n_elements short        wx0   fltarr nele        wx1   fltarr nele        wx2   fltarr nele        wx3   fltarr nele        FOR i   0L  nele 1 DO BEGIN         IF i MOD 10000 EQ 0 THEN print  i         newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i          IF newlon LE 0 THEN stop         IF newlon GT 1 THEN stop         wx0 i    imoms3 newlon 1          wx1 i    imoms3 newlon          wx2 i    imoms3 1 newlon          wx3 i    imoms3 2 newlon        ENDFOR     ENDELSE        mi   min wx0 wx1 wx2 wx3  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   line 1     xaddr 0  short    ilon 1L     xaddr 1  short    ilon       xaddr 2  short    ilon 1L     xaddr 3  short    ilon 2L     yaddr 0:3  short    jpja 1L     weig 0  short    wx0     weig 1  short    wx1     weig 2  short    wx2     weig 3  short    wx3       mi   min total weig  short  1  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop     ENDIF     Come back to the original index of atm grid without longitudinal overlap        xaddr   temporary xaddr    toadd   jpia   jpia   2 toadd   make sure all values are ge 0   xaddr   temporary xaddr    jpia   range the values between 0 and jpia 1   xaddr   temporary xaddr  mod jpia     take into account shiftx if needed   IF shiftx NE 0 THEN xaddr    temporary xaddr    shiftx  MOD jpia   take into account nosouthernline and nonorthernline   if keyword_set nosouthernline  then BEGIN     yaddr   temporary yaddr    1L     jpja   jpja   1L   ENDIF   if keyword_set nonorthernline  then jpja   jpja   1L   take into account revy if needed   IF revy EQ 1 THEN yaddr   jpja   1L   temporary yaddr                               addr   temporary yaddr jpia temporary xaddr       RETURN END"); 
    38 a[36] = new Array("./Interpolation/cutpar.html", "cutpar.pro", "", "    NAME: cutpar     PURPOSE: cut p parallelogram s  into p n 2 parallelograms     CATEGORY: basic work     CALLING SEQUENCE:res   cutpar x0  y0  x1  y1  x2  y2  x3  y3  n      INPUTS:         x0 y0 1d arrays of p elements  giving the edge positions  The         edges must be given as in plot to traw the parallelogram   see         example          n: each parallelogram will be cutted in n 2 pieces     KEYWORD PARAMETERS:               endpoints: see outputs              onsphere: to specify that the points are located on a           sphere  In this case  x and y corresponds to longitude and           latitude in degrees      OUTPUTS:           defaut: 3d array 2 n 2 p  giving the center position of each          piece of the parallelograms           endpoints: 3d array 2 n 1 2 p  giving the edge positions          of each piece of the parallelograms     COMMON BLOCKS: no     SIDE EFFECTS: need cutsegment pro     RESTRICTIONS:       EXAMPLE:     x0    2 6 2    y0    0 2 6    x1    3 8 4    y1    4 4 6    x2    1 6 4    y2    5 6 8    x3    0 4 2    y3    1 4 8    n   4   splot   0 10   0 10  xstyle   1  ystyle   1 nodata   for i 0 2 do oplot   x0 i x1 i x2 i x3 i x0 i y0 i y1 i y2 i y3 i y0 i    res cutpar x0  y0  x1  y1  x2  y2  x3  y3  n    for i 0 2 do oplot   res 0 i   res 1 i  color   20 10 i  psym   1  thick   3     MODIFICATION HISTORY:             S  Masson  smasson lodyc jussieu fr              July 5th  2002   FUNCTION cutpar  x0  y0  x1  y1  x2  y2  x3  y3  n  endpoints   endpoints  onsphere   onsphere   is it a parallelogram    eps   1e 4   IF total abs x0 x2 2 x1 x3 2  GE eps  GT 0       OR total abs y0 y2 2 y1 y3 2  GE eps  GT 0       THEN stop  print   NOT a parallelogram    x0 npar    npar   n_elements x0     firstborder 2 n keyword_set endpoints npar    firstborder   cutsegment x0  y0  x1  y1  n                                endpoints   endpoints  onsphere   onsphere    thirdborder   cutsegment x3  y3  x2  y2  n                                endpoints   endpoints  onsphere   onsphere    res 2 n keyword_set endpoints n keyword_set endpoints npar    res   cutsegment firstborder 0      firstborder 1                             thirdborder 0      thirdborder 1                             n  endpoints   endpoints  onsphere   onsphere    free memory   firstborder    1   thirdborder    1   reform the result   res   reform res  2   n keyword_set endpoints 2  npar   overwrite     RETURN  res END"); 
    39 a[37] = new Array("./Interpolation/cutsegment.html", "cutsegment.pro", "", "    NAME: cutsegment     PURPOSE: cut p segments into p n equal parts     CATEGORY: basic work     CALLING SEQUENCE: res   cutsegment x0  y0  x1  y1  n      INPUTS:            x0 y0 and x1 y1  1d arrays of p elements  the coordinates of           the endpoints of the p segmements           n: the number of pieces we want to cut each segment     KEYWORD PARAMETERS:              endpoints: see ouputs              onsphere: to specify that the points are located on a           sphere  In this case  x and y corresponds to longitude and           latitude in degrees      OUTPUTS:          defaut: a 3d array  2 n p  that gives the coordinates of the          middle of the cutted segments           if  endpoints  a 3d array  2 n 1 p  that gives the          coordinates of the endpoints of the cutted segments      COMMON BLOCKS: no     SIDE EFFECTS: no     RESTRICTIONS:       EXAMPLE:      IDL  x0 2 5     IDL  y0 5 1     IDL  x1 9 3     IDL  y1 1 8     IDL  res cutsegment x0  y0  x1  y1  10     IDL  splot   0 10   0 10  xstyle   1  ystyle   1 nodata    IDL  oplot   x0 0  x1 0   y0 0  y1 0     IDL  oplot   res 0 0   res 1 0  color   20  psym   1  thick   3    IDL  oplot   x0 1  x1 1   y0 1  y1 1     IDL  oplot   res 0 1   res 1 1  color   40  psym   1  thick   3     MODIFICATION HISTORY:             S  Masson  smasson lodyc jussieu fr              July 5th  2002   FUNCTION cutsegment  x0  y0  x1  y1  n  endpoints   endpoints  onsphere   onsphere   number of segment   nseg   n_elements x0     number of point to find on each segment   n2find   n keyword_set endpoints       IF keyword_set onsphere  THEN BEGIN   save the inputs arrays     x0in   temporary x0      y0in   temporary y0      x1in   temporary x1      y1in   temporary y1      sp_cood    transpose x0in transpose y0in replicate 1  1  nseg      rect_coord   CV_COORD FROM_SPHERE   temporary sp_cood   TO_RECT   DEGREES      x0   rect_coord 0        y0   rect_coord 1        z0   rect_coord 2        rect_coord    1  free memory     sp_cood    transpose x1in transpose y1in replicate 1  1  nseg      rect_coord   CV_COORD FROM_SPHERE   temporary sp_cood   TO_RECT   DEGREES      x1   rect_coord 0        y1   rect_coord 1        z1   rect_coord 2        rect_coord    1  free memory   ENDIF     resx   replicate 1  n2find x0    resx   temporary resx 1 n findgen n2find                                     5 1 keyword_set endpoints x1 x0    resx    temporary resx      resy   replicate 1  n2find y0    resy   temporary resy 1 n findgen n2find                                     5 1 keyword_set endpoints y1 y0    resy    temporary resy     IF keyword_set onsphere  THEN BEGIN     resz   replicate 1  n2find z0      resz   temporary resz 1 n findgen n2find                                       5 1 keyword_set endpoints z1 z0      resz    temporary resz       rec_cood    transpose temporary resx  transpose temporary resy                      transpose temporary resz      res   CV_COORD FROM_RECT   temporary rec_cood   TO_SPHERE   DEGREES    restore the input arrays     x0   temporary x0in      y0   temporary y0in      x1   temporary x1in      y1   temporary y1in    ENDIF ELSE res    transpose temporary resx  transpose temporary resy     res   reform res 0:1    2  n2find  nseg   overwrite     RETURN  res END"); 
    40 a[38] = new Array("./Interpolation/extrapolate.html", "extrapolate.pro", "", "FUNCTION extrapolate  zinput  maskinput  nb_iteration  x_periodic   x_periodic  MINVAL   minval  MAXVAL   maxval     compile_opt strictarr  strictarrsubs      extrapolate data  zinput  where maskinput eq 0 by filling step by   step the coastline points with the mean value of the 8 neighbourgs      check the number of iteration used in the extrapolation    IF n_elements nb_iteration  EQ 0 THEN nb_iteration   10 E20   IF nb_iteration EQ 0 THEN return  zinput   nx    size zinput 1    ny    size zinput 2    take care of the boundary conditions       for the x direction  we put 2 additional columns at the left and   right side of the array     for the y direction  we put 2 additional lines at the bottom and   top side of the array     These changes allow us to use shift function without taking care of   the x and y periodicity      ztmp   bytarr nx 2  ny 2    ztmp 1:nx  1:ny    byte maskinput    msk   temporary ztmp      ztmp   replicate 1 e20  nx 2  ny 2    ztmp 1:nx  1:ny    zinput   if keyword_set x_periodic  then begin     ztmp 0  1:ny    zinput nx 1        ztmp nx 1  1:ny    zinput 0      ENDIF   remove NaN points if there is some    nan   where finite ztmp  EQ 0  cnt_nan    IF cnt_nan NE 0 THEN ztmp temporary nan    1 e20   z   temporary ztmp    nx2   nx 2   ny2   ny 2       extrapolation      sqrtinv   1 sqrt 2      cnt   1   When we look for the coast line  we don t whant to select the   borderlines of the array    we force the value of the mask for   those lines    msk 0      1b   msk nx 1      1b   msk  0    1b   msk  ny 1    1b   find the land points   land   where msk EQ 0  cnt_land      WHILE cnt LE nb_iteration AND cnt_land NE 0 DO BEGIN     find the coast line points      Once the land points list has been found  we change back the the   mask values for the boundary conditions      msk 0      0b     msk nx 1      0b     msk  0    0b     msk  ny 1    0b     if keyword_set x_periodic  then begin       msk 0      msk nx          msk nx 1      msk 1        endif     we compute the weighted number of sea neighbourgs    those 4 neighbours have a weight of 1:                                          those 4 neighbours have a weight of 1 sqrt 2 :                                        As we make sure that none of the land points are located on the   border of the array  we can compute the weight without shift    faster        weight   msk land 1 msk land 1 msk land nx2 msk land nx2                  sqrtinv msk land nx2 1 msk land nx2 1                            msk land nx2 1 msk land nx2 1    list all the points that have sea neighbourgs     ok   where weight GT 0    the coastline points     coast   land ok    their weighted number of sea neighbourgs      weight   weight temporary ok      fill the coastine points       z   temporary z msk       zcoast   z 1 coast z 1 coast z nx2 coast z nx2 coast                  1 sqrt 2 z nx2 1 coast z nx2 1 coast                               z nx2 1 coast z nx2 1 coast            IF n_elements minval  NE 0 THEN zcoast   minval   temporary zcoast      IF n_elements maxval  NE 0 THEN zcoast   temporary zcoast   we force the value of the mask for   those lines      msk 0      1b     msk nx 1      1b     msk  0    1b     msk  ny 1    1b   find the land points     land   where msk EQ 0  cnt_land      ENDWHILE     we return the original size of the array        return  z 1:nx  1:ny  END  "); 
    41 a[39] = new Array("./Interpolation/fromreg.html", "fromreg.pro", "", "    NAME: fromreg     PURPOSE: interpolate data from a  regular rectangular grid  to any grid      2 metods availables: bilinear and imoms3      A  regular rectangular grid  is defined as a grid for which each lontitudes lines have      the same latitude and each latitudes columns have the same longitude         CATEGORY:interpolation     CALLING SEQUENCE: dataout   fromreg method  datain   lonin  latin  lonout  latout      INPUTS:      method: a string defining the interpolation method                must be  bilinear  or  imoms3       datain: a 2D array the input data to interpolate      lonin and latin: longitude latitude of the input data  optionals if              WEIG and ADDR keywords used       lonout and latout: longitude latitude of the output data  optionals if              WEIG and ADDR keywords used      KEYWORD PARAMETERS:          WEIG  ADDR: 2D arrays  weig and addr are the weight and addresses used to       perform the interpolation:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over        Those keywords can be set to named variables into which the values will be       copied when the current routine exits  Next  they can be used to perform       the interpolation whithout computing again those 2 parameters  In that       case  lonin  latin  lonout and latout are not necessary           NONORTHERNLINE and  NOSOUTHERNLINE: activate if you don t whant to take into            account the northen southern line of the input data when perfoming the            interpolation      OUTPUTS: 2D array: the interpolated data     COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:We supposed the data are located on a sphere  with a periodicity along                the longitude      EXAMPLE:         topa   fromreg bilinear  tncep  xncep  yncep  glamt  gphit       or       t1opa   fromreg bilinear  t1ncep  xncep  yncep  glamt  gphit  WEIG   a  ADDR   b     help  a  b    t2opa   fromreg bilinear  t2ncep  xncep  WEIG   a  ADDR   b      MODIFICATION HISTORY:    November 2005: Sebastien Masson  smasson lodyc jussieu fr                FUNCTION fromreg  method  datain  lonin  latin  lonout  latout                       WEIG   weig  ADDR   addr                       NONORTHERNLINE   nonorthernline                       NOSOUTHERNLINE   nosouthernline     compile_opt strictarr  strictarrsubs      IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     atmospheric grid parameters       alon   lonin     alat   latin     get_gridparams  alon  alat  jpia  jpja  1   double     Oceanic grid parameters       olon   lonout     olat   latout     get_gridparams  olon  olat  jpio  jpjo  2   double     Compute weight and address       CASE method OF        bilinear :compute_fromreg_bilinear_weigaddr  alon  alat  olon  olat  weig  addr  NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline        imoms3 :  compute_fromreg_imoms3_weigaddr    alon  alat  olon  olat  weig  addr  NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline       ELSE:BEGIN          print    unknown interpolation method  we stop          stop       ENDELSE     ENDCASE   ENDIF     dataout   total weig datain addr  1    dataout   reform dataout  jpio  jpjo   over      RETURN  dataout END"); 
    42 a[40] = new Array("./Interpolation/get_gridparams.html", "get_gridparams.pro", "", "    NAME: get_gridparams     PURPOSE:      1  extract from a NetCDF file the longitude  latidude  and their dimensions        and make sure it is 1D or 2D arrays           or 2  given longitude and latitude arrays get their dimensions and make sure         they are 1D or 2D arrays      CATEGORY:for interpolations tools     CALLING SEQUENCE:      1  get_gridparams  file  lonname  latname  lon  lat  jpi  jpj  n_dimensions     or      2  get_gridparams  lon  lat  jpi  jpj  n_dimensions     INPUTS:     1      file: the name of the netcdf file    loname: the name of the variable that contains the longitude in the NetCDF file    latname: the name of the variable that contains the latitude in the NetCDF file     or      2  lon and lat: 1d or 2D arrays defining longitudes and latitudes        Note that these arrays are also outputs and can therefore be modified      KEYWORD PARAMETERS: none     OUTPUTS:    lon the variable that will contain the longitudes    lat the variable that will contain the latitudes    jpi the number of points in the longitudinal direction    jpj the number of points in the latitudinal direction    n_dimensions: 1 or 2 to specify if lon and lat should be 1D  jpi or jpj       arrays or 2D arrays  jpi jpj  Note that of  n_dimensions   1  then the      grid must be regular  each longitudes must be the same for all latitudes      and each latitudes should be the sae for all longitudes       COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:       EXAMPLE:       1  ncdf_get_gridparams   coordinates_ORCA_R05 nc   glamt   gphit                   olon  olat  jpio  jpjo  2     2  ncdf_get_gridparams  olon  olat  jpio  jpjo  2     MODIFICATION HISTORY:    November 2005: Sebastien Masson  smasson lodyc jussieu fr                 PRO get_gridparams  in1    in2    in3      in4  in5  in6  in7  in8  DOUBLE   double                    file  lonname  latname  lon  lat  jpi  jpj  n_dimensions                     lon    lat    jpi      jpj  n_dimensions     CASE n_params  OF     8:BEGIN   get longitude and latitude       IF file_test in1  EQ 0 THEN BEGIN          print   file     in1     does not exist          stop       ENDIF       cdfido   ncdf_open in1        ncdf_varget  cdfido  in2  lon       ncdf_varget  cdfido  in3  lat       ncdf_close  cdfido        n_dimensions   in8     END     5:BEGIN        lon   temporary in1        lat   temporary in2        n_dimensions   in5     END     ELSE:BEGIN        print   Bad nimber of input parameters        stop     end   ENDCASE     sizelon   size lon    sizelat   size lat    CASE 1 OF      lon and lat are 1D arrays       sizelon 0  EQ 1 AND sizelat 0  EQ 1:BEGIN    get jpi and jpj       jpi   sizelon 1        jpj   sizelat 1    make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:         2:BEGIN   make lon and lat 2D arrays           lon   temporary lon    replicate 1  jpj            lat   replicate 1  jpi    temporary lat          END         ELSE:stop       ENDCASE     END     lon is 2D array and lat is 1D array       sizelon 0  EQ 2 AND sizelat 0  EQ 1:BEGIN    get jpi and jpj       jpi   sizelon 1        jpj   sizelon 2        IF jpj NE n_elements lat  THEN stop   make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:BEGIN            IF array_equal lon  lon  0    replicate 1  jpj  NE 1 THEN BEGIN              print   Longitudes are not the same for all latitudes  imposible to extract a 1D array of the longitudes              stop           ENDIF           lon   lon  0          END         2:lat   replicate 1  jpi    temporary lat          ELSE:stop       ENDCASE     END     lon is 1D array and lat is 2D array       sizelon 0  EQ 1 AND sizelat 0  EQ 2:BEGIN    get jpi and jpj       jpi   sizelat 1        jpj   sizelat 2        IF jpi NE n_elements lon  THEN stop   make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:BEGIN            IF array_equal lat  replicate 1  jpi    lat 0    NE 1 THEN BEGIN              print   Latitudes are not the same for all longitudes  imposible to extract a 1D array of the latitudes              stop           ENDIF           lat   reform lat 0            END         2:lon   temporary lon    replicate 1  jpj          ELSE:stop       ENDCASE     END     lon and lat are 2D arrays       sizelon 0  EQ 2 AND sizelat 0  EQ 2:BEGIN    get jpi and jpj       IF array_equal sizelon 1:2  sizelat 1:2  NE 1 THEN stop       jpi   sizelon 1        jpj   sizelon 2          make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:BEGIN            IF array_equal lon  lon  0    replicate 1  jpj  NE 1 THEN BEGIN              print   Longitudes are not the same for all latitudes  imposible to extract a 1D array of the longitudes              stop           ENDIF           lon   lon  0            IF array_equal lat  replicate 1  jpi    reform lat 0    NE 1 THEN BEGIN              print   Latitudes are not the same for all longitudes  imposible to extract a 1D array of the latitudes              stop           ENDIF         lat   reform lat 0            END         2:         ELSE:stop       ENDCASE     END     lon and lat are not 1D and or 2D arrays       ELSE:stop   ENDCASE       double keyword     if keyword_set double  then BEGIN      lon   double temporary lon      lat   double temporary lat    ENDIF     give back the right outparameters       CASE n_params  OF     8:BEGIN       in4   temporary lon        in5   temporary lat        in6   temporary jpi        in7   temporary jpj      END     5:BEGIN       in1   temporary lon        in2   temporary lat        in3   temporary jpi        in4   temporary jpj      END   ENDCASE    return END"); 
    43 a[41] = new Array("./Interpolation/imoms3.html", "imoms3.pro", "", "FUNCTION imoms3  xin    x   abs xin    y   fltarr n_elements x      test1   where x LT 1    IF test1 0  NE  1 THEN BEGIN     xtmp   x test1      y test1    0 5 xtmp xtmp xtmp  xtmp xtmp  0 5 xtmp   1   ENDIF   test1   where x LT 2 AND x GE 1    IF test1 0  NE  1 THEN BEGIN     xtmp   x test1      y test1     1 6 xtmp xtmp xtmp   xtmp xtmp    11 6 xtmp   1   ENDIF    RETURN  y END"); 
    44 a[42] = new Array("./Interpolation/inquad.html", "inquad.pro", "", "    NAME:inquad     PURPOSE: to find if an  x y  point is in a quadrilateral  x1 x2 x3 x4      CATEGORY:grid manipulation     CALLING SEQUENCE:         res   inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4      INPUTS:         x y: the coordinates of the point we want to know where it       is  Must be a scalar if  onsphere activated else can be scalar       or array           x1  y1  x2  y2  x3  y3  x4  y4: the coordinates of the       quadrilateral given in the CLOCKWISE order  Scalar or array      KEYWORD PARAMETERS:         DOUBLE: use double precision to perform the computation          ONSPHERE: to specify that the quadilateral are on a sphere and      that teir coordinates are longitude latitude coordinates  In this      case  est west periodicity  poles singularity and other pbs      related to longitude latitude coordinates are managed      automatically          ZOOMRADIUS:the zoom  circle centred on the  x y  with a radius of      zoomradius degree where we look for the the quadrilateral which     contains the  x y  point  used for the satellite projection      when  onsphere is activated  Default is 4 and seems to be the      minimum which can be used  Can be increase if the cell size is      larger than 5 degrees             NOPRINT: to suppress the print messages      OUTPUTS:        res  a n element vector  Where n is the number of elements of      x  res i j means that the point number i is located in the      quadrilateral number j with  0   j   n_elements x0 1      COMMON BLOCKS:none     SIDE EFFECTS:     RESTRICTIONS: I think degenerated quadrilateral  e g  flat of   twisted  is not work  This has to be tested      EXAMPLE:           x   1 1  2  6  7  3          y   1 1  3  3  4  7          x1   1 0 4 2          y1   1 1 4 8          x2   1 1 6 4          y2   1 5 6 8          x3   1 3 8 4          y3   1 4 4 6          x4   1 2 6 2          y4   1 0 2 6          splot   0 10   0 10  xstyle   1  ystyle   1 nodata         for i 0 2 do oplot   x4 i x1 i x2 i x3 i x4 i y4 i y1 i y2 i y3 i y4 i          oplot  x  y  color   20  psym   1  thick   2         print  inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4           On a sphere see clickincell pro      MODIFICATION HISTORY:        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on Convert_clic_ij pro written by Gurvan Madec      FUNCTION inquad  x  y  x1  y1  x2  y2  x3  y3  x4  y4  ONSPHERE   onsphere   DOUBLE   double  ZOOMRADIUS   zoomradius  NOPRINT   noprint  NEWCOORD   newcoord       ntofind   n_elements x    nquad   n_elements x2      IF keyword_set onsphere  THEN BEGIN   save the inputs parameters     xin   x     yin   y     x1in   x1     y1in   y1     x2in   x2     y2in   y2     x3in   x3     y3in   y3     x4in   x4     y4in   y4   for map_set     x   x MOD 360     x1   x1 MOD 360     x2   x2 MOD 360     x3   x3 MOD 360     x4   x4 MOD 360   save  map      save    map: map  x: x  y: y  z: z  p: p    do a satellite projection      IF NOT keyword_set zoomradius  THEN zoomradius   4     map_set  y 0  x 0  0   satellite  sat_p    1 zoomradius 20 6371 229  0  0   noerase   iso   noborder   use normal coordinates to reject cells which are out of the projection      tmp    convert_coord x  y   DATA   TO_NORMAL  DOUBLE   double       tmp1   convert_coord x1  y1   DATA   TO_NORMAL  DOUBLE   double       tmp2   convert_coord x2  y2   DATA   TO_NORMAL  DOUBLE   double       tmp3   convert_coord x3  y3   DATA   TO_NORMAL  DOUBLE   double       tmp4   convert_coord x4  y4   DATA   TO_NORMAL  DOUBLE   double     remove cell which have one corner with coordinates equal to NaN     test   finite tmp1 0   tmp1 1   tmp2 0   tmp2 1                         tmp3 0   tmp3 1   tmp4 0   tmp4 1        good   where temporary test  EQ 1        IF good 0  EQ  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   The point is out of the cells    restore the input parameters       x   temporary xin        y   temporary yin        x1   temporary x1in        y1   temporary y1in        x2   temporary x2in        y2   temporary y2in        x3   temporary x3in        y3   temporary y3in        x4   temporary x4in        y4   temporary y4in    restore old  map         map   save map        x   save x        y   save y        z   save z        p   save p       RETURN    1     ENDIF       x    tmp 0      y    tmp 1      x1   tmp1 0  good      y1   tmp1 1  good      x2   tmp2 0  good      y2   tmp2 1  good      x3   tmp3 0  good      y3   tmp3 1  good      x4   tmp4 0  good      y4   tmp4 1  good        tmp1    1   tmp2    1   tmp3    1   tmp4    1   remove cells which are obviously bad      test    x1 GT x AND x2 GT x AND x3 GT x AND x4 GT x          OR  x1 LT x AND x2 LT x AND x3 LT x AND x4 LT x          OR  y1 GT y AND y2 GT y AND y3 GT y AND y4 GT y          OR  y1 LT y AND y2 LT y AND y3 LT y AND y4 LT y      good2   where temporary test  EQ 0        IF good2 0  EQ  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   The point is out of the cells    restore the input parameters       x   temporary xin        y   temporary yin        x1   temporary x1in        y1   temporary y1in        x2   temporary x2in        y2   temporary y2in        x3   temporary x3in        y3   temporary y3in        x4   temporary x4in        y4   temporary y4in    restore old  map         map   save map        x   save x        y   save y        z   save z        p   save p       RETURN    1     ENDIF       nquad   n_elements good2       x1   x1 good2      y1   y1 good2      x2   x2 good2      y2   y2 good2      x3   x3 good2      y3   y3 good2      x4   x4 good2      y4   y4 good2    ENDIF       the point is inside the quadilateral if test eq 1   with test equal to:       test    x x1 y2 y1  GE  x2 x1 y y1             x x2 y3 y2  GT  x3 x2 y y2             x x3 y4 y3  GT  x4 x3 y y3             x x4 y1 y4  GE  x1 x4 y y4       computation of test without any do loop for ntofind points  x y  and   nquad quadilateral x1 x2 x3 x4 y1 y2 y3 y4    test dimensions are  ntofind  nquad    column i of test corresponds to the intersection of point i with all   quadirlateral     row j of test corresponds to all the points localized in cell j    test        x x1     x replicate 1  nquad replicate 1  ntofind x1       y2 y1     replicate 1  ntofind y2 y1      GE  x2 x1    GE  replicate 1  ntofind x2 x1       y y1     y replicate 1  nquad replicate 1  ntofind y1      test   temporary test       x x2     x replicate 1  nquad replicate 1  ntofind x2       y3 y2     replicate 1  ntofind y3 y2      GE  x3 x2    GE  replicate 1  ntofind x3 x2       y y2     y replicate 1  nquad replicate 1  ntofind y2      test   temporary test       x x3     x replicate 1  nquad replicate 1  ntofind x3       y4 y3     replicate 1  ntofind y4 y3      GE  x4 x3    GE  replicate 1  ntofind x4 x3       y y3     y replicate 1  nquad replicate 1  ntofind y3      test   temporary test       x x4     x replicate 1  nquad replicate 1  ntofind x4       y1 y4     replicate 1  ntofind y1 y4      GE  x1 x4    GE  replicate 1  ntofind x1 x4       y y4     y replicate 1  nquad replicate 1  ntofind y4      check test if ntofind gt 1   if ntofind gt 1  each point must be localised in one uniq cell    IF ntofind GT 1 THEN BEGIN   each column of test must have only 1 position equal to one     chtest   total test  2    points out of the cells     IF  where chtest EQ 0 0  NE  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   Points number  strjoin strtrim where chtest EQ 0  1      are out of the grid        stop     ENDIF   points in more than one cell     IF  where chtest GT 1 0  NE  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   Points number  strjoin strtrim where chtest GT 1  1      are in more than one cell        stop     ENDIF   ENDIF   find the points for which test eq 1   found   where temporary test  EQ 1    if ntofind eq 1  the point may be localised in more than one grid   cell ou may also be out of the cells   IF ntofind EQ 1 THEN BEGIN     CASE 1 OF       found 0  EQ  1:BEGIN         IF NOT keyword_set noprint  THEN print   The point is out of the cells          IF keyword_set onsphere  THEN BEGIN   restore old  map             map   save map            x   save x            y   save y            z   save z            p   save p         ENDIF         return    1       END        n_elements found  GT ntofind:BEGIN         IF NOT keyword_set noprint  THEN print   The point is in more than one cell        END        ELSE:     ENDCASE   ENDIF ELSE BEGIN   if ntofind GT 1  found must be sorted    i position of found  this corresponds to one x y point     forsort   found MOD ntofind   j position of found  this corresponds to cell in which is one x y   point     found   temporary found ntofind   found must be sorted accordind to forsort     found   found sort forsort    ENDELSE     IF keyword_set onsphere  THEN BEGIN     IF arg_present newcoord  THEN BEGIN       newcoord    x1 found  y1 found                         x2 found  y2 found                         x3 found  y3 found                         x4 found  y4 found                         x  y      ENDIF       found   good good2 found    restore the input parameters     x   temporary xin      y   temporary yin      x1   temporary x1in      y1   temporary y1in      x2   temporary x2in      y2   temporary y2in      x3   temporary x3in      y3   temporary y3in      x4   temporary x4in      y4   temporary y4in    restore old  map       map   save map      x   save x      y   save y      z   save z      p   save p   ENDIF     RETURN  found END"); 
    45 a[43] = new Array("./Interpolation/inrecgrid.html", "inrecgrid.pro", "", "    NAME: inrecgrid     PURPOSE: given   a list of points   x y  position                      the x and y limits of a rectangular grid            find in which cell is located each given point      CATEGORY: no DO loop  use the wonderfull value_locate function      CALLING SEQUENCE:res   inrecgrid xin  yin  left  bottom      INPUTS:         x1d: a 1d array  the x position on the points      y1d: a 1d array  the y position on the points      left: a 1d  monotonically increasing array  the position of the       left  border of each cell       bottom: a 1d  monotonically increasing array  the position of the       bottom  border of each cell      OPTIONAL INPUTS:     KEYWORD PARAMETERS:          output2d: to get the output as a 2d array  2 n_elements x1d       with res 0  the x index accoring to the 1d array defined by      left and res 1  the y index accoring to the 1d array defined by      bottom         checkout rbgrid ubgrid  specify the right and upper bondaries of      the grid and check if some points are out      OUTPUTS:the index on the cell accoring to the 2d array defined by   left and bottom      OPTIONAL OUTPUTS:     COMMON BLOCKS: no     SIDE EFFECTS:     RESTRICTIONS:     PROCEDURE:     EXAMPLE:      IDL  a indgen 5     IDL  b indgen 7     IDL  r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a b     IDL  print  r              20          13           7    IDL  r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a a 1 b b 1 output2d     IDL  print  r          0 00000      4 00000          3 00000      2 00000          2 00000      1 00000       MODIFICATION HISTORY:              S  Masson  smasson lodyc jussieu fr                         July 3rd  2002                        October 3rd  2003: use value_locate    FUNCTION inrecgrid  x1d  y1d  left  bottom  output2d   output2d  checkout   checkout     ncellx   n_elements left    ncelly   n_elements bottom      xpos   value_locate left  x1d    ypos   value_locate bottom  y1d      IF n_elements checkout  EQ 2 THEN BEGIN     out   where x1d GT checkout 0      IF out 0  NE  1 THEN xpos out     1     out   where y1d GT checkout 1      IF out 0  NE  1 THEN ypos out     1   ENDIF     IF keyword_set output2d  THEN return   transpose xpos  transpose ypos      IF NOT keyword_set checkout  THEN RETURN  xpos ncellx ypos     res   xpos ncellx ypos   out   where xpos EQ  1 OR ypos EQ  1    IF out 0  NE  1 THEN res out     1       RETURN  res  END"); 
    46 a[44] = new Array("./Interpolation/ll_narcs_distances.html", "ll_narcs_distances.pro", "", "    NAME:  LL_NARCS_DISTANCES     PURPOSE:    This function returns the longitude and latitude  lon  lat  of  a point a given arc distance  pi  lon0    10  20  100   IDL  lat0    0   10  45   IDL  lon1    10  60  280   IDL  lat1    0  10  45   IDL  dist   map_npoints lon0  lat0  lon1  lat1  azimuth   azi   two_by_two   IDL  earthradius   6378206 4d0  IDL  res   ll_narcs_distances lon0  lat0  dist earthradius  azi   degrees   IDL  print  reform res 0            10 000000       60 000000       280 00000  IDL  print  reform res 1               1 1999280e 15       10 000000       45 000000     MODIFICATION HISTORY:         Based on the IDL function ll_arc_distance pro v 1 11 2003 02 03    Sebastien Masson  smasson lodyc jussieu fr                     August 2005      Return the  lon  lat  of the point a given arc distance   pi   arc_dist   pi    and azimuth  az  from lon_lat0    FUNCTION LL_NARCS_DISTANCES  lon0  lat0  arc_dist  az  DEGREES   degs     IF n_elements lon0  NE n_elements lat0        OR n_elements lon0  NE n_elements arc_dist        OR n_elements lon0  NE n_elements az  THEN return   1    cdist   cos arc_dist        Arc_Dist is always in radians    sdist   sin arc_dist     if keyword_set degs  then s    dpi 180 0 else s   1 0d0    ll   lat0    s               To radians   sinll1   sin ll    cosll1   cos ll    azs   az    s   phi   asin sinll1   cdist   cosll1   sdist   cos azs    ll   lon0    s               To radians   lam   ll   atan sdist   sin azs                      cosll1   cdist   sinll1   sdist   cos azs     zero   where arc_dist eq 0  count    IF count NE 0 THEN BEGIN      lam zero    lon0 zero      phi zero    lat0 zero    ENDIF     if keyword_set degs  then return  transpose lam   phi    s     ELSE return  transpose lam   phi   end  "); 
    47 a[45] = new Array("./Interpolation/map_npoints.html", "map_npoints.pro", "", "    NAME:  Map_nPoints     PURPOSE:  Return the distance in meter between all np0 points P0 and all         np1 points P1 on a sphere  If keyword  TWO_BY_TWO is given then         returns the distances between number n of P0 points and number         n of P1 points  in that case  np0 and np1 must be equal          Same as map_2points with the meter parameter but for n points         without do loop      CATEGORY:  Maps      CALLING SEQUENCE:  Result   Map_nPoints lon0  lat0  lon1  lat1      INPUTS:  Lon0  Lat0   np0 elements vector  longitudes and latitudes of  np0 points P0   Lon1  Lat1   np1 elements vector  longitude and latitude of  np1 points P1      KEYWORD PARAMETERS:       AZIMUTH: A named variable that will receive the azimuth of the great         circle  connecting the two points  P0 to P1      MIDDLE: to get the longitude latitude of the middle point betwen P0 and P1      RADIANS   if set  inputs and angular outputs are in radians  otherwise  degrees      RADIUS: If given  return the distance between the two points  calculated using the given radius          Default value is the earth radius : 6378206 4d0     TWO_BY_TWO:If given then Map_nPoints returns the distances between         number n of P0 points and number n of P1 points  in that case          np0 and np1 must be equal      OUTPUTS:         An  np0 np1  array giving the distance in meter between np0         points P0 and np1 points P1  Element  i j  of the ouput is the         distance between element P0 i  and P1 j          If keyword  TWO_BY_TWO is given then Map_nPoints returns         an np element vector giving the distance in meter between P0 i          and P1 i   in that case  we have np0   np1   np          if  MIDDLE see this keyword      EXAMPLES:  IDL  print     map_npoints 105 15 1 40 02 1 0 07 100 50 51 30 20 0          7551369 3       5600334 8         12864354        10921254          14919237        5455558 8    IDL  lon0    10  20  100   IDL  lat0    0   10  45   IDL  lon1    10  60  280   IDL  lat1    0  10  45   IDL  dist   map_npoints lon0  lat0  lon1  lat1  azimuth   azi   IDL  help  dist  azi  DIST            DOUBLE      Array 3  3   AZI             DOUBLE      Array 3  3   IDL  print  dist 4 lindgen 3  azi 4 lindgen 3          2226414 0       4957944 5       10018863          90 000000       64 494450   4 9615627e 15  IDL  dist   map_npoints lon0  lat0  lon1  lat1  azimuth   azi   two_by_two   IDL  help  dist  azi  DIST            DOUBLE      Array 3   AZI             DOUBLE      Array 3   IDL  print  dist  azi         2226414 0       4957944 5       10018863          90 000000       64 494450   4 9615627e 15  IDL  print  map_2points lon0 0  lat0 0  lon1 0  lat1 0          20 000000       90 000000  IDL  print  map_npoints lon0 0  lat0 0  lon1 0  lat1 0  azi azi 6378206 4d0    dtor  azi         20 000000         90 000000    IDL  lon0    10  20  100   IDL  lat0    0   10  45   IDL  lon1    10  60  280   IDL  lat1    0  10  45   IDL  mid   map_npoints lon0  lat0  lon1  lat1   middle   two_by_two   IDL  print  reform mid 0  reform mid 1          0 0000000       40 000000       190 00000         0 0000000   1 5902773e 15       90 000000  IDL  print   map_2points lon0 0  lat0 0  lon1 0  lat1 0  npath   3  1          0 0000000       0 0000000  IDL  print   map_2points lon0 1  lat0 1  lon1 1  lat1 1  npath   3  1          40 000000   1 5902773e 15  IDL  print   map_2points lon0 2  lat0 2  lon1 2  lat1 2  npath   3  1          190 00000       90 000000     MODIFICATION HISTORY:         Based on the IDL function map_2points pro v 1 6 2001 01 15    Sebastien Masson  smasson lodyc jussieu fr                     October 2003   Function Map_npoints  lon0  lat0  lon1  lat1  azimuth   azimuth        RADIANS   radians  RADIUS   radius  MIDDLE   middle  TWO_BY_TWO   two_by_two    COMPILE_OPT idl2   ON_ERROR  2                     return to caller    IF  N_PARAMS  LT 4  THEN       MESSAGE   Incorrect number of arguments     np0   n_elements lon0     IF n_elements lat0  NE np0 THEN       MESSAGE   lon0 and lat0 must have the same number of elements    np1   n_elements lon1     IF n_elements lat1  NE np1 THEN       MESSAGE   lon1 and lat1 must have the same number of elements    if keyword_set two_by_two  AND np0 NE np1 then       MESSAGE   When using two_by_two keyword  P0 and P1 must have the same number of elements     mx   MAX ABS lat0  lat1    pi2    dpi 2   IF  mx GT  KEYWORD_SET radians    pi2 : 90  THEN       MESSAGE   Value of Latitude is out of allowed range     k   KEYWORD_SET radians    1 0d0 :  dpi 180 0  Earth equatorial radius  meters  Clarke 1866 ellipsoid   r_sphere    n_elements RADIUS  NE 0   RADIUS : 6378206 4d0      coslt1   cos k lat1    sinlt1   sin k lat1    coslt0   cos k lat0    sinlt0   sin k lat0      IF np0 EQ np1 AND np1 EQ 1 THEN two_by_two   1     if NOT keyword_set two_by_two  THEN BEGIN      coslt1   replicate 1 0d0  np0 temporary coslt1      sinlt1   replicate 1 0d0  np0 temporary sinlt1      coslt0   temporary coslt0 replicate 1 0d0  np1      sinlt0   temporary sinlt0 replicate 1 0d0  np1    ENDIF      if keyword_set two_by_two  THEN BEGIN      cosl0l1   cos k lon1 lon0      sinl0l1   sin k lon1 lon0    ENDIF ELSE BEGIN      cosl0l1   cos k replicate 1 0d0  np0 lon1 lon0 replicate 1 0d0  np1      sinl0l1   sin k replicate 1 0d0  np0 lon1 lon0 replicate 1 0d0  np1    ENDELSE     cosc   sinlt0   sinlt1   coslt0   coslt1   cosl0l1  Cos of angle between pnts   Avoid roundoff problems by clamping cosine range to  1 1    cosc    1 0d0   cosc   1 0d0     if arg_present azimuth  OR keyword_set middle  then begin     sinc   sqrt 1 0d0   cosc cosc      bad   where abs sinc  le 1 0e 7      IF bad 0  NE  1 THEN sinc bad    1     cosaz    coslt0   sinlt1   sinlt0 coslt1 cosl0l1    sinc      sinaz   sinl0l1 coslt1 sinc     IF bad 0  NE  1 THEN BEGIN        sinc bad    0 0d0       sinaz bad    0 0d0       cosaz bad    1 0d0     ENDIF   ENDIF     IF keyword_set middle  then BEGIN      s0   0 5d0   acos cosc         coss   cos s0      sins   sin s0            lats   asin sinlt0   coss   coslt0   sins   cosaz    k     lons   atan sins   sinaz  coslt0   coss   sinlt0   sins   cosaz    k       if keyword_set two_by_two  THEN BEGIN        return  transpose lon0    lons   lats      ENDIF ELSE BEGIN        return     lon0 replicate 1 0d0  np1    lons   lats        ENDELSE      ENDIF     if arg_present azimuth  then begin     azimuth   atan sinaz  cosaz      IF k NE 1 0d0 THEN azimuth   temporary azimuth    k    ENDIF  return  acos cosc    r_sphere   end"); 
    48 a[46] = new Array("./Interpolation/neighbor.html", "neighbor.pro", "", "    NAME:  neighbor     PURPOSE:  find the closetest point of  P0  within a list of np1 points  P1 Which can be on a sphere      CATEGORY:  Maps      CALLING SEQUENCE:  Result   neighbor lon0  lat0  lon1  lat1      INPUTS:  Lon0  Lat0   scalar  longitudes and latitudes of point P0    Lon1  Lat1   np1 elements vector  longitude and latitude of  np1 points P1      KEYWORD PARAMETERS:     RADIANS   if set  inputs and angular outputs are in radians  otherwise  degrees      DISTANCE   dis  to get back the distances between P0 and the np1     points P1 in the variable dis       SPHERE to activate if points are located on a sphere      OUTPUTS:         index giving the P1 index  point that is the closetest point         of  P0      EXAMPLES:         IDL  print  neighbor 105 15 40 02 0 07 100 50 51 30 20 0                 distance dis                     0         IDL  print  dis               105 684      206 125      160 228     MODIFICATION HISTORY:    Sebastien Masson  smasson lodyc jussieu fr                     October 2003   FUNCTION neighbor  p0lon  p0lat  neighlon  neighlat  sphere   sphere  distance   distance  radians   radians     somme checks   IF  n_elements p0lon  NE 1 THEN MESSAGE   Sorry p0lon must be a scalar    p0lon   p0lon 0    IF  n_elements p0lat  NE 1 THEN MESSAGE   Sorry p0lat must be a scalar    p0lat   p0lat 0    nneig   n_elements neighlon     IF  n_elements neighlat  NE nneig  THEN       MESSAGE   neighlon and neighlat must have the same number of elements    distance between P0 and the others points   IF keyword_set sphere  THEN BEGIN     IF sphere NE 1 THEN radius   sphere     distance   Map_nPoints p0lon  p0lat  neighlon  neighlat                            radius   radius  radians   radians    ENDIF ELSE BEGIN      distance    neighlon p0lon 2 neighlat p0lat 2     IF arg_present distance  THEN distance   sqrt distance    ENDELSE   RETURN  where distance EQ min distance  END"); 
    49 a[47] = new Array("./Interpolation/quadrilateral2square.html", "quadrilateral2square.pro", "", "    NAME:quadrilateral2square     PURPOSE:warm  or map  an arbitrary quadrilateral onto a unit square    according to the 4 point correspondences:          x0 y0     0 0           x1 y1     1 0           x2 y2     1 1           x3 y3     0 1    This is the inverse function of square2quadrilateral pro   The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  bellow      CATEGORY:image grid manipulation     CALLING SEQUENCE:         res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin       INPUTS:         x0 y0 x1 y1 x2 y2 x3 y3 the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order          xin yin:the coordinates of the point s  for which we want to do the       mapping  Can be scalar or array      KEYWORD PARAMETERS:         DOUBLE: use double precision to perform the computation      OUTPUTS:          2 n  array: the new coodinates  xout  yout  of the  xin yin        point s  after mapping         If xin is a scalar  then n is equal to the number of elements of       x0  If xin is an array   then n is equal to the number of       elements of xin      COMMON BLOCKS:none     SIDE EFFECTS:     RESTRICTIONS: I think degenerated quadrilateral  e g  flat of   twisted  is not work  This has to be tested      EXAMPLE:     IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20     IDL  inorg quadrilateral2square 2 1 3 0 5 1 2 3 out 0 out 1    IDL  tracegrille  reform inorg 0 11 11  reform inorg 1 11 11 color indgen 12 20     MODIFICATION HISTORY:        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56                 FUNCTION quadrilateral2square  x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  xxin  yyin  PERF   perf   tempsone   systime 1      Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      xin   double xxin      yin   double yyin    ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      xin   float xxin      yin   float yyin    ENDELSE     get the matrix A     a   square2quadrilateral x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in      compute the adjoint matrix      IF keyword_set double  THEN adj   dblarr 9  n_elements x0      ELSE adj   fltarr 9  n_elements x0      adj 0      a 4            a 7   a 5      adj 1      a 7   a 2   a 1      adj 2      a 1   a 5   a 4   a 2      adj 3      a 6   a 5   a 3      adj 4      a 0            a 6   a 2      adj 5      a 3   a 2   a 0   a 5      adj 6      a 3   a 7   a 6   a 4      adj 7      a 6   a 1   a 0   a 7      adj 8      a 0   a 4   a 3   a 1          IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0       yin   replicate yin  n_elements x0     ENDIF     compute xprime  yprime and wprime     IF n_elements x0  EQ 1 THEN BEGIN     wpr   1 adj 6 xin   adj 7 yin   adj 8    ENDIF ELSE BEGIN     wpr   1 adj 6   xin   adj 7   yin   adj 8      ENDELSE   xpr   xin wpr   ypr   yin wpr     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin      IF n_elements x0  EQ 1 THEN BEGIN     res 0      xpr adj 0    ypr adj 1   wpr adj 2      res 1      xpr adj 3    ypr adj 4   wpr adj 5    ENDIF ELSE BEGIN     res 0      xpr adj 0      ypr adj 1     wpr adj 2        res 1      xpr adj 3      ypr adj 4     wpr adj 5      ENDELSE     IF keyword_set perf  THEN print   time quadrilateral2square  systime 1 tempsone    RETURN  res END"); 
    50 a[48] = new Array("./Interpolation/spl_fstdrv.html", "spl_fstdrv.pro", "", "          NAME:spl_fstdrv     PURPOSE: SPL_FSTDRV returns the values of the first derivative of   the interpolating function at the points X2i  it is a double   precision array      Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   SPL_INCR function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that interpolated value are also in ascending order     CATEGORY:     CALLING SEQUENCE: y2    spl_fstdrv x  y  yscd  x2      INPUTS:        x: An n element  at least 2  input vector that specifies the      tabulate points in ascending order         y: f x    y  An n element input vector that specifies the values      of the tabulated function F Xi  corresponding to Xi         yscd: The output from SPL_INIT for the specified X and Y         x2: The input values for which the first derivative values are      desired  X can be scalar or an array of values     KEYWORD PARAMETERS: none     OUTPUTS:         y2: f x2    y2       COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:       EXAMPLE:     MODIFICATION HISTORY:    Sebastien Masson  smasson lodyc jussieu fr : May 2005         FUNCTION spl_fstdrv  x  y  yscd  x2     compute the first derivative of the spline function      nx   n_elements x    ny   n_elements y    x must have at least 2 elements   IF nx LT 2 THEN stop      y must have the same number of elements than x   IF nx NE ny THEN stop   define loc in a way that     if loc i  eq  1   :                 x2 i    x nx 1     else              :    x loc i   extrapolation   use x nx 2  and x nx 1  even if x2 i    x nx 1    extrapolation   loc   0   temporary loc     nx 2     distance between to consecutive x   deltax   x loc 1 x loc    distance between to consecutive y   deltay   y loc 1 y loc    relative distance between x2 i  and x loc i 1    a    x loc 1 x2 deltax   relative distance between x2 i  and x loc i    b   1 0d   a   compute the first derivative on x  see numerical recipes Chap 3 3    yfrst   temporary deltay deltax         1 0d 6 0d    3 0d a a   1 0d    deltax   yscd loc          1 0d 6 0d    3 0d b b   1 0d    deltax   yscd loc 1    beware of the computation precision     force near zero values to be exactly 0 0   zero   where abs yfrst  LT 1 e 10    IF zero 0  NE  1 THEN yfrst zero    0 0d    RETURN  yfrst END "); 
    51 a[49] = new Array("./Interpolation/spl_incr.html", "spl_incr.pro", "", "          NAME:spl_incr     PURPOSE:     Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   SPL_INCR function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that interpolated values are also monotonically increasing      CATEGORY:     CALLING SEQUENCE: y2    spl_incr x  y  x2      INPUTS:        x: An n element  at least 2  input vector that specifies the      tabulate points in a strict ascending order         y: f x    y  An n element input vector that specifies the values      of the tabulated function F Xi  corresponding to Xi  As f is      supposed to be monotonically increasing  y values must be      monotonically increasing  y can have equal consecutive values         x2: The input values for which the interpolated values are      desired  Its values must be strictly monotonically increasing       KEYWORD PARAMETERS:        YP0: The first derivative of the interpolating function at the      point X0  If YP0 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline         YPN_1: The first derivative of the interpolating function at the      point Xn 1  If YPN_1 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline       OUTPUTS:         y2: f x2    y2  Double precision array     COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:     It might be possible that y2 i 1 y2 i  has very small negative     values  amplitude smaller than 1 e 6      EXAMPLE:         n   100L       x    dindgen n 2       y   abs randomn 0  n        y n 2:n 2 1    0        y n n 3    0        y n n 6:n n 6 5    0        y   total y   cumulative   double        x2   dindgen n 1 2        n2   n_elements x2        print  min y 1:n 1 y 0:n 2  LT 0       y2   spl_incr  x  y  x2        splot  x  y  xstyle   1  ystyle   1  ysurx 25  petit    1  2  1   land       oplot  x2  y2  color   100       c   y2 1:n2 1    y2 0:n2 2        print  min c  LT 0        print  min c  max   ma  ma       splot c xstyle 1 ystyle 1  yrange 01 05  ysurx 25  petit    1  2  2   noerase       oplot 0  n_elements c   0  0  linestyle   1     MODIFICATION HISTORY:    Sebastien Masson  smasson lodyc jussieu fr : May Dec 2005         FUNCTION pure_concave  x1  x2  y1  y2  der2  x   X n type   xx    double x double x1 double x2 double x1    f    double x2 double x1 double y2 double y1    n   der2 temporary f    res   xx n      IF check_math  GT 0 THEN BEGIN         zero   where abs res  LT 1 e 10          IF zero 0  NE  1 THEN res zero    0 0d     END   res   temporary res double y2 double y1 y1      IF array_equal sort res  lindgen n_elements res    NE 1 THEN stop   RETURN  res END  FUNCTION pure_convex  x1  x2  y1  y2  der2  x   1 1 X n type   xx   1 0d    double x double x1 double x2 double x1    f    double x2 double x1 double y2 double y1    n   der2 temporary f    res   xx n      IF check_math  GT 0 THEN BEGIN         zero   where abs res  LT 1 e 10          IF zero 0  NE  1 THEN res zero    0 0d     END   res   1 0d   temporary res    res   temporary res y2 y1 y1      IF array_equal sort res  lindgen n_elements res    NE 1 THEN stop   RETURN  res END  FUNCTION spl_incr  x  y  x2  YP0   yp0  YPN_1   ypn_1       check and initialisation       nx   n_elements x    ny   n_elements y    nx2   n_elements x2    x must have at least 2 elements   IF nx LT 2 THEN stop    y must have the same number of elements than x   IF nx NE ny THEN stop   x be monotonically increasing   IF min x 1:nx 1 x 0:nx 2  LE 0 THEN stop    x2 be monotonically increasing   IF N_ELEMENTS X2  GE 2 THEN     IF min x2 1:nx2 1 x2 0:nx2 2   LE 0 THEN stop    y be monotonically increasing   IF min y 1:ny 1 y 0:ny 2  LT 0 THEN stop      first check: check if two consecutive values are equal     bad   where y 1:ny 1 y 0:ny 2  EQ 0  cntbad    IF cntbad NE 0 THEN BEGIN   define the results: y2       y2   dblarr nx2    define xinx2: see help of value_locate    if xinx2 i  eq  1   :                 x bad i    x2 nx2 1     else                : x2 xinx2 i    x2 nx2 1     else                : x2 xinx2 i   we have middle pieces for which    we force yp0   0 0d and ypn_1   0 0d       IF cntbad GT 1 THEN BEGIN   we take care of the piece located wetween bad ib 1  and bad ib          FOR ib   1  cntbad 1 DO BEGIN   if there is x2 values smaller that x bad ib  then the x2 values   located between bad ib 1  and bad ib  are  xinx2 ib 1 1:xinx2 ib            IF xinx2 ib  NE  1 THEN begin             y2 xinx2 ib 1 1   0                y i 1    y i      2  y  reach its minimum value between  x i  and x i 1            0  y i 1    0   y i      we do a first selection by looking for those points      loc   lindgen nx 1    maybebad   where yscd loc  LE 0 0d AND yscd loc 1  GE 0 0d  cntbad      IF cntbad NE 0 THEN BEGIN      mbbloc   loc maybebad       aaa    yscd mbbloc 1 yscd mbbloc 6 0d x mbbloc 1 x mbbloc      bbb   0 5d   yscd mbbloc      ccc   yifrst mbbloc      ddd   y mbbloc      definitive selection:   y  can become negative if and only if  2b 2   4 3a c   0   y  can become negative if and only if    b 2     3a c   0       delta   bbb bbb   3 0d aaa ccc       bad   where delta GT 0  cntbad        IF cntbad NE 0 THEN BEGIN       delta   delta bad        aaa   aaa bad        bbb   bbb bad        ccc   ccc bad        ddd   ddd bad        bad   maybebad bad    define xinx2_1: see help of value_locate    if xinx2_1 i  eq  1   :                   x bad i    x2 nx2 1     else                  : x2 xinx2_1 i    x2 nx2 1     else                  : x2 xinx2_2 i   y bad ib 1  then we cannot applay the method we want to   apply   we use then convex concave case by changing by hand the   value of yinfl and xinfl                   IF yzero GT y bad ib 1  THEN BEGIN                     yinfl   0 5d y bad ib 1 y bad ib                      xinfl   0 5d x bad ib 1 x bad ib                      GOTO  convexconcave                   ENDIF   define xinx2_3: see help of value_locate    if xinx2_3 ib  eq  1   :                x bad ib xzero   x2 nx2 1     else                   : x2 xinx2_3   we use then convex concave case by changing by hand the   value of yinfl and xinfl                   IF yzero lt y bad ib  THEN BEGIN                     yinfl   0 5d y bad ib 1 y bad ib                      xinfl   0 5d x bad ib 1 x bad ib                      GOTO  convexconcave                   ENDIF   define xinx2_3: see help of value_locate    if xinx2_3 ib  eq  1   :                x bad ib xzero   x2 nx2 1     else                   : x2 xinx2_3    x2 nx2 1     else                   : x2 xinx2_3    x bad ib xzero    x2 xinx3_2 1                    xinx2_3   value_locate x2  x bad ib xinfl                     IF xinx2_3 ge xinx2_1 ib 1 THEN BEGIN                     y2 xinx2_1 ib 1:xinx2_3                            pure_convex x bad ib  x bad ib xinfl                                          y bad ib  yinfl                                          yifrst bad ib                                          x2 xinx2_1 ib 1:xinx2_3                                         ENDIF                                   IF xinx2_2 ib  GE xinx2_3 1 THEN BEGIN                     y2 xinx2_3 1:xinx2_2 ib                            pure_concave x bad ib xinfl  x bad ib 1                                           yinfl  y bad ib 1                                           yifrst bad ib 1                                           x2 xinx2_3 1:xinx2_2 ib                    ENDIF                                 END               ENDCASE              END            ENDCASE         ENDIF       ENDFOR      ENDIF   ENDIF     RETURN  y2         END"); 
    52 a[50] = new Array("./Interpolation/spl_keep_mean.html", "spl_keep_mean.pro", "", "          NAME:spl_keep_mean     PURPOSE:     Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   SPL_INCR function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that integral of the interpolated values is the same as the   integral of the input values    for exemple to build daily data   from monthly mean and keep the monthly mean of the computed daily   data equa to the original values      CATEGORY:     CALLING SEQUENCE: y2    spl_keep_mean x  y  x2      INPUTS:        x: An n element  at least 2  input vector that specifies the      tabulate points in a strict ascending order         y: an array with one element less than x  y i  represents the      mean value between x i  and x i 1  if  GE0 is activated  y must      have positive values         x2: The input values for which the interpolated values are      desired  Its values must be strictly monotonically increasing       KEYWORD PARAMETERS:         GE0: to force that y2 is always GE than 0  In that case  y must      also be GE than 0         YP0: The first derivative of the interpolating function at the      point X0  If YP0 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline         YPN_1: The first derivative of the interpolating function at the      point Xn 1  If YPN_1 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline       OUTPUTS:         y2: the meean value between two consecutive values of x2  This      array has one element less than y2  y2 has double precision      COMMON BLOCKS: none     SIDE EFFECTS:       RESTRICTIONS:     It might be possible that y2 has very small negative values      amplitude smaller than 1 e 6         EXAMPLE:        12 monthly values of precipitations into daily values:        yr1   1990      yr2   1992      nyr   yr2 yr1 1      n1   12 nyr 1      x   julday 1 findgen n1  replicate 1  n1                  replicate yr1  n1  fltarr n1       n2   365 nyr   total leapyr yr1 indgen nyr    1      x2   julday replicate 1  n2  1 findgen n2                      replicate yr1  n2  fltarr n2       y   abs randomn 0  n1 1       y2   spl_keep_mean x  y  x2   ge0        print  min x  max   ma  ma      print  min x2  max   ma  ma      print  vairdate min x  max   ma  ma       print  total y x 1:n1 1 x 0:n1 2       print  total y2 x2 1:n2 1 x2 0:n2 2      MODIFICATION HISTORY:    Sebastien Masson  smasson lodyc jussieu fr : May 2005         FUNCTION spl_keep_mean  x  yin  x2  YP0   yp0  YPN_1   ypn_1  GE0   ge0       check and initialisation         nx   n_elements x    ny   n_elements yin    nx2   n_elements x2    x must have at least 2 elements   IF nx LT 2 THEN stop    x2 must have at least 2 elements   IF nx2 LT 2 THEN stop    x be monotonically increasing   IF min x 1:nx 1 x 0:nx 2  LE 0 THEN stop    x2 be monotonically increasing   IF min x2 1:nx2 1 x2 0:nx2 2   LE 0 THEN stop        compute the integral of y     if spl_keep_mean is called by the user  and not by itself  we must compute   the integral of y  yin must have one element less than x   IF nx NE ny 1 THEN stop   y   double yin double x 1:nx 1 x 0:nx 2    y    0 0d  temporary y    y   total temporary y   cumulative   double        compute the  spline  interpolation       IF keyword_set ge0  THEN BEGIN   if the want that the interpolated values are always   0  we must   have yin   0 0d     IF min yin  LT 0 THEN stop   call spl_incr     y2   spl_incr x  temporary y  x2  yp0   yp0  ypn_1   ypn_1    ENDIF ELSE BEGIN     yscd   spl_init x  y  yp0   yp0  ypn_1   ypn_1   double      y2   spl_interp x  y  temporary yscd  x2   double    ENDELSE                        Compute the derivative of y       yfrst    y2 1:nx2 1 y2 0:nx2 2 x2 1:nx2 1 x2 0:nx2 2    it can happen that we have very small negative values  1 e 6 for ex     yfrst   0 0d   temporary yfrst    RETURN  yfrst           END"); 
    53 a[51] = new Array("./Interpolation/square2quadrilateral.html", "square2quadrilateral.pro", "", "    NAME:square2quadrilateral     PURPOSE:warm  or map  a unit square onto an arbitrary quadrilateral   according to the 4 point correspondences:          0 0     x0 y0           1 0     x1 y1           1 1     x2 y2           0 1     x3 y3    The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  bellow      CATEGORY:image grid manipulation     CALLING SEQUENCE:         res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin       INPUTS:         x0 y0 x1 y1 x2 y2 x3 y3 the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order          xin yin:the coordinates of the point s  for which we want to do the       mapping  Can be scalar or array      KEYWORD PARAMETERS:         DOUBLE: use double precision to perform the computation      OUTPUTS:          2 n  array: the new coodinates  xout  yout  of the  xin yin        point s  after mapping         If xin is a scalar  then n is equal to the number of elements of       x0  If xin is an array   then n is equal to the number of       elements of xin        If xin and yin are omited  square2quadrilateral returns the       matrix A which is used for the inverse transformation       COMMON BLOCKS:none     SIDE EFFECTS:     RESTRICTIONS: I think degenerated quadrilateral  e g  flat of   twisted  is not work  This has to be tested      EXAMPLE:     IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20     MODIFICATION HISTORY:        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56                 FUNCTION square2quadrilateral  x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  xxin  yyin     Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      IF arg_present xxin  THEN BEGIN       xin   double xxin        yin   double yyin      ENDIF   ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      IF arg_present xxin  THEN BEGIN       xin   float xxin        yin   float yyin      ENDIF   ENDELSE     IF keyword_set double  THEN a   dlbarr 8  n_elements x0      ELSE a   fltarr 8  n_elements x0       delx3   x0 x1 x2 x3   dely3   y0 y1 y2 y3     affinemap   where delx3 EQ 0 AND dely3 EQ 0    IF affinemap 0  NE  1 THEN BEGIN     xx0   x0 affinemap      xx1   x1 affinemap      xx2   x2 affinemap      yy0   y0 affinemap      yy1   y1 affinemap      yy2   y2 affinemap        a 0  affinemap    xx1 xx0     a 1  affinemap    xx2 xx1     a 2  affinemap    xx0     a 3  affinemap    yy1 yy0     a 4  affinemap    yy2 yy1     a 5  affinemap    yy0     a 6  affinemap    0     a 7  affinemap    0   ENDIF     projectivemap   where delx3 NE 0 OR dely3 NE 0    IF projectivemap 0  NE  1 THEN BEGIN     xx0   x0 projectivemap      xx1   x1 projectivemap      xx2   x2 projectivemap      xx3   x3 projectivemap      yy0   y0 projectivemap      yy1   y1 projectivemap      yy2   y2 projectivemap      yy3   y3 projectivemap            delx1   xx1 xx2     dely1   yy1 yy2     delx2   xx3 xx2     dely2   yy3 yy2     delx3   delx3 projectivemap      dely3   dely3 projectivemap        div   delx1 dely2 dely1 delx2     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     a13    delx3 dely2 dely3 delx2 div     a23    delx1 dely3 dely1 delx3 div       a 0  projectivemap    xx1 xx0 a13 xx1     a 1  projectivemap    xx3 xx0 a23 xx3     a 2  projectivemap    xx0     a 3  projectivemap    yy1 yy0 a13 yy1     a 4  projectivemap    yy3 yy0 a23 yy3     a 5  projectivemap    yy0     a 6  projectivemap    a13     a 7  projectivemap    a23   ENDIF         IF NOT arg_present xxin  THEN return  a     IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0       yin   replicate yin  n_elements x0     ENDIF     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin    IF n_elements x0  EQ 1 THEN BEGIN     div   a 6 xin    a 7 yin    1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0 xin    a 1 yin    a 2 div     res 1       a 3 xin    a 4 yin    a 5 div   ENDIF ELSE BEGIN     div   a 6   xin  a 7   yin   1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0   xin    a 1   yin    a 2   div     res 1       a 3   xin    a 4   yin    a 5   div   ENDELSE     RETURN  res END"); 
    54 a[52] = new Array("./Interpolation/testinterp.html", "testinterp.pro", "", "PRO testinterp    method    bilinear     method    imoms3        jpia   300L   jpja   200L   torg   findgen jpia  jpja    xorg    20 d   360 d jpia dindgen jpia    yorg    89 d   178 d jpja 1 dindgen jpja      jpio   400L   jpjo   150L   xnew    0 d   360 d jpio dindgen jpio    ynew    89 5d   179 d jpjo 1 dindgen jpjo        outnorth   where ynew GT yorg jpja 2  noutn    outsouth   where ynew LT yorg 1  nouts     t2   fromreg method  torg  xorg  yorg  xnew  ynew     t3   fromreg method  reverse torg  2  xorg  reverse yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok1      xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  torg2  xorg2  yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok2      xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok3      xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    t3   fromreg method  torg2  xorg2  yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok4     xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok5     t3   fromreg method  torg  xorg  yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok6    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok7  i   t3   fromreg method  torg  xorg  yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok8    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok9  i     t3   fromreg method  reverse torg  2  xorg  reverse yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok10    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok11  i   t3   fromreg method  reverse torg  2  xorg  reverse yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok12    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok13  i    xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop    t3   fromreg method  torg2  xorg2  yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok14    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok15  i    xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  torg2  xorg2  yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok16    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok17  i    xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok18    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok19  i     xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok20    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok21  i     return end"); 
     34a[32] = new Array("./Interpolation/angle.html", "angle.pro", "", "       file_comments north stereographic polar projection      keyword     DOUBLE use double precision  default is float       returns         gsinu gcosu : sinus and cosinus of the angle          gsinv gcosv   between north south direction          gsint gcost   and the j direction of the mesh      restrictions to compute the lateral boundary conditions  we assume   that:         1  the first line is similar to the second line              gcosu  0    gcosu  1                gsinu  0    gsinu  1          2  the grid follows OPA x periodicity rule  first column is       equal to the next to last column              gcosv 0      gcosv jpj 2                 gsinv 0      gsinv jpj 2           history               Original :  96 07  O  Marti                      98 06  G  Madec          Feb 2005: IDL adaptation S  Masson        FUNCTION fsnspp  plam  pphi  DOUBLE   double   IF keyword_set double  THEN BEGIN     a   2 d   tan   dpi 4 d    dpi 180 d pphi 2 d       x   cos   dpi 180 d plam     a     y   sin   dpi 180 d plam     a   ENDIF ELSE BEGIN     a   2    tan   pi 4     pi 180 float pphi 2        x   cos   pi 180 float plam      a     y   sin   pi 180 float plam      a       ENDELSE   RETURN   x:x  y:y  END        file_comments Compute angles between grid lines and direction of the North  fom angle F v 2 2 in OPA8 2       param fileocemesh  in required  a netcdf file that contains  at least :          glamu  gphiu: longitudes and latitudes at U points          glamv  gphiv: longitudes and latitudes at V points          glamf  gphif: longitudes and latitudes at F points      keyword IODIRECTORY the directory path where is located fileocemesh    keyword     DOUBLE use double precision  default is float        PRO angle  fileocemesh  gcosu  gsinu  gcosv  gsinv  gcost  gsint                IODIRECTORY   iodirectory  DOUBLE   double     0  read oceanic grid parameters         IF keyword_set IODIRECTORY  THEN BEGIN     IF  strpos iodirectory reverse_search  NE  strlen iodirectory 1  THEN         iodirectory   iodirectory    ENDIF ELSE iodirectory       fileoce   iodirectory fileocemesh     fileoce   findfile fileoce  count   okfile    IF okfile NE 1 THEN BEGIN     print   the file  fileoce  is not found  we stop      stop   ENDIF     cdfido   ncdf_open fileoce 0    ncdf_varget  cdfido   glamt  glamt   ncdf_varget  cdfido   glamu  glamu   ncdf_varget  cdfido   glamv  glamv   ncdf_varget  cdfido   glamf  glamf   ncdf_varget  cdfido   gphit  gphit   ncdf_varget  cdfido   gphiu  gphiu   ncdf_varget  cdfido   gphiv  gphiv   ncdf_varget  cdfido   gphif  gphif   ncdf_close  cdfido     glamt   reform glamt   over    glamu   reform glamu   over    glamv   reform glamv   over    glamf   reform glamf   over    gphit   reform gphit   over    gphiu   reform gphiu   over    gphiv   reform gphiv   over    gphif   reform gphif   over    jpj    size glamf   dimension 1      I  Compute the cosinus and sinus        computation done on the north stereographic polar plan         north pole direction   modulous  at t point    znpt   fsnspp  glamt  gphit  DOUBLE   double     glamt    1   gphit    1  free memory   znpt x     znpt x   znpt y     znpt y   znnpt   znpt x znpt x   znpt y znpt y       north pole direction   modulous  at u point    znpu   fsnspp  glamu  gphiu  DOUBLE   double     glamu    1   gphiu    1  free memory   znpu x     znpu x   znpu y     znpu y   znnpu   znpu x znpu x   znpu y znpu y       north pole direction   modulous  at v point    znpv   fsnspp  glamv  gphiv  DOUBLE   double     znpv00   znpv   znpv01   fsnspp  shift glamv  0  1  shift gphiv  0  1  DOUBLE   double     glamv    1   gphiv    1  free memory   znpv x     znpv x   znpv y     znpv y   znnpv   znpv x znpv x   znpv y znpv y       f point   znpf00   fsnspp  glamf  gphif  DOUBLE   double     znpf01   fsnspp  shift glamf  0  1  shift gphif  0  1  DOUBLE   double     znpf10   fsnspp  shift glamf  1  0  shift gphif  1  0  DOUBLE   double     glamf    1   gphif    1  free memory       j direction: v point segment direction  t point    zxvvt   znpv00 x   znpv01 x   zyvvt   znpv00 y   znpv01 y   zmnpvt   sqrt   temporary znnpt      zxvvt zxvvt   zyvvt zyvvt        znpv00    1  free memory   znpv01    1  free memory   IF keyword_set double  THEN zmnpvt   1 e 14   zmnpvt     ELSE zmnpvt   1 e 6   zmnpvt        j direction: f point segment direction  u point    zxffu   znpf00 x   znpf01 x   zyffu   znpf00 y   znpf01 y   zmnpfu   sqrt   temporary znnpu      zxffu zxffu   zyffu zyffu        znpf01    1  free memory   IF keyword_set double  THEN zmnpfu   1 e 14   zmnpfu     ELSE zmnpfu   1 e 6   zmnpfu        i direction: f point segment direction  v point    zxffv   znpf00 x   znpf10 x   zyffv   znpf00 y   znpf10 y    znpf00    1    znpf10    1  free memory   zmnpfv   sqrt   temporary znnpv      zxffv zxffv   zyffv zyffv        IF keyword_set double  THEN zmnpfv   1 e 14   zmnpfv     ELSE zmnpfv   1 e 6   zmnpfv        cosinus and sinus using scalar and vectorial products   gsint     znpt x zyvvt   znpt y zxvvt     zmnpvt   gcost     znpt x zxvvt   znpt y zyvvt     zmnpvt       cosinus and sinus using scalar and vectorial products   gsinu     znpu x zyffu   znpu y zxffu     zmnpfu   gcosu     znpu x zxffu   znpu y zyffu     zmnpfu       cosinus and sinus using scalar and vectorial products          caution  rotation of 90 degres    gsinv      znpv x zxffv   znpv y zyffv     zmnpfv   gcosv     znpv x zyffv   znpv y zxffv     zmnpfv     II  Geographic mesh               bad   where abs glamf shift glamf  0  1  LT 1 e 8          IF bad 0  NE  1 THEN BEGIN           gcosu bad    1            gsinu bad    0          ENDIF         bad   where abs gphif shift gphif  1  0  LT 1 e 8          IF bad 0  NE  1 THEN BEGIN           gcosv bad    1            gsinv bad    0          ENDIF     III  Lateral boundary conditions         gcost  0    gcost  1     gsint  0    gsint  1     gcosu  0    gcosu  1     gsinu  0    gsinu  1     gcosv 0      gcosv jpj 2      gsinv 0      gsinv jpj 2        RETURN END"); 
     35a[33] = new Array("./Interpolation/clickincell.html", "clickincell.pro", "", "     file_comments click on a map and find in which cell the click was      categories finding where is a point on a grid      examples          res   clickincell        Click with the left button to select a cell  Clicking one more       time in the same cell remove the cell from the selection        Click on the right button to quit         keyword     CELLTYPE    T   W   U   V  or  F  This this the type of point       that is located in the center of the cell which the click is       located  default is T type of cell  with corner defined by F       points       keyword      DRAWCELL to draw the cell in which we clicked      keyword     COLOR  the color used to draw the cells  Clicking one more       time in the same cell will draw the cell with the white color       keyword      ORIGINAL to get the position of the cell regarding the original       grid  with no key_shift  ixminmesh  iyminmesh       keyword      IJ see outpus      keyword     _EXTRA to pass extra keywords to inquad and plot  when  drawcell       returns       the index of the selected cells regarding to the grid which       is in memory in the variable of the common  If  ij keyword is       activated give 2D array  2  n  which are the i j position of the       n selected cells        uses common pro      examples        IDL  plt  findgen jpi jpj nodata map 90 0 0 ortho     IDL  print  clickincell draw color 150 xy       history        Sebastien Masson  smasson lodyc jussieu fr         August 2003     FUNCTION clickincell  CELLTYPE   celltype  DRAWCELL   drawcell  COLOR   color  ORIGINAL   original  IJ   ij  _EXTRA   extra  common     initialization   cellnum    1L   selected   0     Cell list   get the grid parameter according to celltype   oldgrid   vargrid   IF NOT keyword_set celltype  THEN celltype    T    CASE strupcase celltype  OF      T :vargrid    F       W :vargrid    F       U :vargrid    V       V :vargrid    U       F :vargrid    T    ENDCASE   grille   1  glam  gphi   1  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz   vargrid   oldgrid   define the corner of the cells in the clockwise direction   IF keyword_set key_periodic  AND nx EQ jpi THEN BEGIN     x1   glam  0:ny 2      y1   gphi  0:ny 2      x2   glam  1:ny 1      y2   gphi  1:ny 1      x3   shift glam  1:ny 1   1  0      y3   shift gphi  1:ny 1   1  0      x4   shift glam  0:ny 2   1  0      y4   shift gphi  0:ny 2   1  0    ENDIF ELSE BEGIN     x1   glam 0:nx 2  0:ny 2      y1   gphi 0:nx 2  0:ny 2      x2   glam 0:nx 2  1:ny 1      y2   gphi 0:nx 2  1:ny 1      x3   glam 1:nx 1  1:ny 1      y3   gphi 1:nx 1  1:ny 1      x4   glam 1:nx 1  0:ny 2      y4   gphi 1:nx 1  0:ny 2    ENDELSE   glam    1   free memory   gphi    1   free memory     get mousse position on the reference map   cursor  x  y   data   up     while  mouse button ne 4  do BEGIN     IF finite x finite x  EQ 0 THEN GOTO  outwhile       case  mouse button of       1:BEGIN   What is the longitude          WHILE x GT  x range 1  DO x   x 360         WHILE x LT  x range 0  DO x   x 360         IF x GT  x range 1  THEN GOTO  outwhile         IF y GT  y range 1  THEN GOTO  outwhile         IF y LT  y range 0  THEN GOTO  outwhile           cell   inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4                            onsphere  _extra   extra            IF cell 0  EQ  1 OR n_elements cell  GT 1 THEN GOTO  outwhile         cell   cell 0          already    where cellnum EQ cell 0          IF already EQ  1 THEN BEGIN           cellnum    cellnum  cell            selected    selected  1            already   n_elements selected 1          ENDIF ELSE selected already    1 selected already          IF keyword_set drawcell  THEN BEGIN           oplot   x1 cell  x2 cell  x3 cell  x4 cell  x1 cell                   y1 cell  y2 cell  y3 cell  y4 cell  y1 cell                  color   color selected already                   d n_colors   255 1 selected already                  _extra   extra         ENDIF       END       2:                          middle button       ELSE:     ENDCASE       get mousse position on the reference map outwhile:     cursor  x  y   data   up   ENDWHILE     good   where selected NE 0    IF good 0  EQ  1 THEN RETURN   1      cellnum   cellnum good      yy   cellnum nx 1 key_periodic nx EQ jpi    xx   cellnum MOD  nx 1 key_periodic nx EQ jpi      CASE strupcase celltype  OF      T :BEGIN       xx   xx firstx 1       yy   yy firsty 1     END      W :BEGIN       xx   xx firstx 1       yy   yy firsty 1     END      U :BEGIN       xx   xx firstx       yy   yy firsty 1     END      V :BEGIN       xx   xx firstx 1       yy   yy firsty     END      F :BEGIN       xx   xx firstx       yy   yy firsty     END   ENDCASE     bad   where xx GE jpi    IF bad 0  NE  1 THEN BEGIN     xx bad    xx bad jpi     yy bad    yy bad 1   ENDIF   bad   where yy GE jpj    IF bad 0  NE  1 THEN stop     IF keyword_set original  THEN BEGIN     xx   xx key_shift     bad   where xx LT 0      IF bad 0  NE  1 THEN xx bad    xx bad jpi     xx   xx MOD jpi     xx   xx  ixminmesh     yy   yy iyminmesh   ENDIF     ncell   n_elements xx     IF keyword_set ij  THEN       RETURN   reform xx  1  ncell   over                   reform yy  1  ncell   over       IF keyword_set original  THEN RETURN  xx jpiglo yy     ELSE RETURN  xx jpi yy  END "); 
     36a[34] = new Array("./Interpolation/compute_fromreg_bilinear_weigaddr.html", "compute_fromreg_bilinear_weigaddr.pro", "", "     file_comments compute the weight and address neede to interpolate data from a             regular grid  to any grid using the bilinear method         categories interpolation          param alonin  in required  longitudeof the input data         param alatin   in required  latitude of the input data         param olonin  in required  longitude of the output data         param olat   in required  latitude of the output data       keyword      NONORTHERNLINE activate if you don t whant to take into            account the northen line of the input data when perfoming the    keyword      NOSOUTHERNLINE activate if you don t whant to take into            account the southern line of the input data when perfoming the            interpolation       returns        weig  addr: 2D arrays  weig and addr are the weight and addresses used to       perform the interpolation:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over       restrictions       the input grid must be a  regular grid  defined as a grid for which each       lontitudes lines have the same latitude and each latitudes columns have the       same longitude        We supposed the data are located on a sphere  with a periodicity along       the longitude        points located out of the southern and northern boundaries are interpolated       using a linear interpolation only along the longitudinal direction        history    November 2005: Sebastien Masson  smasson lodyc jussieu fr                PRO compute_fromreg_bilinear_weigaddr  alonin  alatin  olonin  olat  weig  addr       NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline     compile_opt strictarr  strictarrsubs      alon   alonin   alat   alatin   olon   olonin     jpia   n_elements alon    jpja   n_elements alat      jpio    size olon   dimensions 0    jpjo    size olon   dimensions 1      alon   minalon   min alon   max   maxalon    IF maxalon minalon GE 360  THEN stop   alon must be monotonically increasing   IF array_equal sort alon  lindgen jpia  NE 1 THEN BEGIN      shiftx    where alon EQ min alon 0      alon   shift alon  shiftx      IF array_equal sort alon  lindgen jpia  NE 1 THEN stop   ENDIF ELSE shiftx   0   for longitude periodic bondary condition we add the fist   column on the right side of the array and    alon    alon  alon 0 360    jpia   jpia 1L   alat   revy   alat 0  GT alat 1    IF revy THEN alat   reverse alat    alat must be monotonically increasing   IF array_equal sort alat  lindgen jpja  NE 1 THEN stop     if keyword_set nonorthernline  then BEGIN      jpja   jpja   1L     alat   alat 0: jpja 1L    ENDIF   if keyword_set nosouthernline  then BEGIN      alat   alat 1: jpja 1L      jpja   jpja   1L   ENDIF   olon between minalon et minalon 360   out   where olon LT minalon    WHILE out 0  NE  1 DO BEGIN     olon out    olon out 360      out   where olon LT minalon    ENDWHILE   out   where olon GE minalon 360    WHILE out 0  NE  1 DO BEGIN     olon out    olon out  360      out   where olon GE minalon 360    ENDWHILE   make sure that all values of olon are located within values of alon   IF min olon  max   ma  LT minalon THEN stop   IF ma GE minalon 360  THEN stop     we want to do biliear interpolation   for each ocean point  we must   find in which atm cell it is located    if the ocean point is out of the atm grid  we use closest neighbor   interpolation      for each T point of oce grid  we find in which armospheric cell it is   located    As the atmospheric grid is regular  we can use inrecgrid instead   of inquad    pos   inrecgrid olon  olat  alon 0:jpia 2L  alat 0:jpja 2L                        checkout    alon jpia 1L  alat jpja 1L   output2d    checks    for longitude  each ocean points must be located in atm cell    IF  where pos 0    EQ  1 0  NE  1 THEN stop   no ocean point should be located westward of the left bondary of the   atm cell in which it is supposed to be located    IF total olon LT alon pos 0    NE 0 THEN stop   no ocean point should be located eastward of the right bondary of the   atm cell in which it is supposed to be located    IF total olon GT alon pos 0   1  NE 0 THEN stop     we use bilinear interpolation     we change the coordinates of each ocean points to fit into a   rectangle defined by:       y2                                                                     y1         x1          x2        X    x x1 x2 x1       Y    y y1 y2 y1      indx   pos 0      indy    temporary pos 1      points located out of the atmospheric grid too much northward or southward    bad   where indy EQ  1    indy   0   indy     IF max indx  GT jpia 2 THEN stop   checks    IF max indy  GT jpja 2 THEN stop   checks    x coordinates of the atm cell    x1   alon indx    x2   alon indx 1    new x coordinates of the ocean points in each cell   divi   temporary x2 x1   glamnew    olon x1 temporary divi    x1    1   free memory    olon    1   free memory    y coordinates of the atm cell    y1   alat indy    y2   alat indy 1                  new y coordinates of the ocean points in each cell   divi   temporary y2 y1   zero   where divi EQ 0    IF zero 0  NE  1 THEN divi zero    1    gphinew    olat y1 temporary divi    y1    1   free memory    checks    IF min glamnew  LT 0 THEN stop   IF max glamnew  GT 1 THEN stop     weight and address array used for bilinear interpolation    xaddr   lonarr 4  jpio jpjo    xaddr 0      indx     xaddr 1      indx   1L   xaddr 2      indx   1L   xaddr 3      indx        yaddr   lonarr 4  jpio jpjo    yaddr 0      indy   yaddr 1      indy   yaddr 2      indy   1L   yaddr 3      indy   1L   compute the weight for the bilinear interpolation    weig   fltarr 4  jpio jpjo    weig 0       1 glamnew     1 gphinew    weig 1          glamnew     1 gphinew    weig 2          glamnew        gphinew   weig 3       1 glamnew        gphinew    free memory   gphinew    1   IF bad 0  EQ  1 THEN glamnew    1 ELSE glamnew    temporary glamnew bad    we work now on the  bad  points   linear interpolation only along the longitudinal direction   IF bad 0  NE  1 THEN BEGIN     ybad   olat bad    the ocean points that are not located into an atm cell should be   located northward of the northern boudary of the atm grid         or southward of the southern boudary of the atm grid      IF total ybad GE min alat  AND ybad LE max alat  GE 1 THEN stop       weig 0  bad     1 glamnew      weig 1  bad    temporary glamnew      weig 2  bad    0      weig 3  bad    0      south   where ybad LT alat 0      IF south 0  NE  1 THEN yaddr  bad temporary south    0L     north   where ybad GT alat jpja 1      IF north 0  NE  1 THEN yaddr  bad temporary north    0L     ybad    1   bad    1   free memory   ENDIF   check totalweight   1   totalweig   abs 1 total weig  1    IF  where temporary totalweig  GE 1 e 5 0  NE  1 THEN stop     come back to the original atm grid without longitudinal overlap      jpia   jpia 1L   xaddr   temporary xaddr  MOD jpia   take into account shiftx if needed   IF shiftx NE 0 THEN xaddr    temporary xaddr    shiftx  MOD jpia   take into account nosouthernline and nonorthernline   if keyword_set nosouthernline  then BEGIN     yaddr   temporary yaddr    1L     jpja   jpja   1L   ENDIF   if keyword_set nonorthernline  then jpja   jpja   1L   take into account revy if needed   IF revy EQ 1 THEN yaddr   jpja   1L   temporary yaddr                                addr   temporary yaddr jpia   temporary xaddr       return end "); 
     37a[35] = new Array("./Interpolation/compute_fromreg_imoms3_weigaddr.html", "compute_fromreg_imoms3_weigaddr.pro", "", "       file_comments compute the weight and address neede to interpolate data from a             regular grid  to any grid using the imoms3 method         categories interpolation PRO compute_fromreg_imoms3_weigaddr  alonin  alatin  olonin  olat  weig  addr            param alonin  in required  longitude of the input data         param alatin   in required  latitude of the input data         param olonin  in required  longitude of the output data         param olat  in required  latitude of the output data       keyword  NONORTHERNLINE and  NOSOUTHERNLINE activate if you don t whant to take into            account the northen southern line of the input data when perfoming the            interpolation       returns        weig  addr: 2D arrays  weig and addr are the weight and addresses used to       perform the interpolation:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over       restrictions       the input grid must be a  regular rectangular grid  defined as a grid for       which each lontitudes lines have the same latitude and each latitudes columns       have the same longitude        We supposed the data are located on a sphere  with a periodicity along       the longitude        points located between the first last 2 lines are interpolated       using a imoms3 interpolation along the longitudinal direction and linear       interpolation along the latitudinal direction       points located out of the southern and northern boundaries are interpolated       using a imoms3 interpolation only along the longitudinal direction        history    November 2005: Sebastien Masson  smasson lodyc jussieu fr      March 2006: works for rectangular grids           PRO compute_fromreg_imoms3_weigaddr  alonin  alatin  olonin  olat  weig  addr                                          NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline     compile_opt strictarr  strictarrsubs      alon   alonin   alat   alatin   olon   olonin     jpia   n_elements alon    jpja   n_elements alat      jpio    size olon   dimensions 0    jpjo    size olon   dimensions 1      alon   minalon   min alon   max   maxalon    IF maxalon minalon GE 360  THEN stop   alon must be monotonically increasing   IF array_equal sort alon  lindgen jpia  NE 1 THEN BEGIN      shiftx    where alon EQ min alon 0      alon   shift alon  shiftx      IF array_equal sort alon  lindgen jpia  NE 1 THEN stop   ENDIF ELSE shiftx   0   alon is it regularly spaced    step   alon shift alon  1    step 0    step 0    360    IF total step step 0  GE 1 e 6  NE 0 THEN noregx   1   we extend the longitude range of alon   easy interpolation even   near minalon et maxalon    toadd   10 jpia 360 1   alon    alon jpia toadd:jpia 1 360  alon  alon 0:toadd 1 360    jpia   jpia 2 toadd   alat   revy   alat 0  GT alat 1    IF revy THEN alat   reverse alat    alat must be monotonically increasing   IF array_equal sort alat  lindgen jpja  NE 1 THEN stop   alat is it regularly spaced    step   alat shift alat  1    step   step 1:jpja   1L    IF total step step 0  GE 1 e 6  NE 0 THEN noregy   1     if keyword_set nonorthernline  then BEGIN      jpja   jpja   1L     alat   alat 0: jpja 1L    ENDIF   if keyword_set nosouthernline  then BEGIN      alat   alat 1: jpja 1L      jpja   jpja   1L   ENDIF   olon between minalon et minalon 360   out   where olon LT minalon    WHILE out 0  NE  1 DO BEGIN     olon out    olon out 360      out   where olon LT minalon    ENDWHILE   out   where olon GE minalon 360    WHILE out 0  NE  1 DO BEGIN     olon out    olon out  360      out   where olon GE minalon 360    ENDWHILE   make sure that all values of olon are located within values of alon   IF min olon  max   ma  LT minalon THEN stop   IF ma GE minalon 360  THEN stop     xaddr   lonarr 16  jpio jpjo    yaddr   lonarr 16  jpio jpjo    weig   fltarr 16  jpio jpjo      indexlon   value_locate alon  olon    IF total alon indexlon  GT olon  NE 0 THEN stop   IF total alon indexlon   1L  LE olon  NE 0 THEN stop   IF  where indexlon LE 1L      0  NE  1 THEN stop   IF  where indexlon GE jpia 3L 0  NE  1 THEN stop   indexlat   value_locate alat  olat      for the ocean points located below the atm line    jpja 2 and above the line 1   for those points we can always find 16 neighbors   imoms interpolation along longitude and latitude     short   where indexlat LT jpja 2L AND indexlat GE 1L    ilon   indexlon short    ilat   indexlat short       IF NOT keyword_set noregy  THEN BEGIN      delta   alat ilat 1L alat ilat      IF max abs delta delta 0  GE 1 e 6 THEN stop     delta   delta 0        d0    alat ilat 1L olat short delta     IF min d0  max   ma  LE  2 THEN stop     IF ma GT  1 THEN stop     wy0   imoms3 temporary d0      d1    alat ilat    olat short delta     IF min d1  max   ma  LE  1 THEN stop     IF ma GT 0 THEN stop     wy1   imoms3 temporary d1      d2    alat ilat 1L olat short delta     IF min d2  max   ma  LE 0 THEN stop     IF ma GT 1 THEN stop       wy2   imoms3 temporary d2      d3    alat ilat 2L olat short delta     IF min d3  max   ma  LE 1 THEN stop     IF ma GT 2 THEN stop       wy3   imoms3 temporary d3    ENDIF ELSE BEGIN      nele   n_elements short      wy0   fltarr nele      wy1   fltarr nele      wy2   fltarr nele      wy3   fltarr nele      FOR i   0L  nele 1 DO BEGIN       IF i MOD 10000 EQ 0 THEN print  i       newlat   spl_incr alat ilat i 1L:ilat i 2L   1  0  1  2  olat short i        IF newlat LE 0 THEN stop       IF newlat GT 1 THEN stop       wy0 i    imoms3 newlat 1        wy1 i    imoms3 newlat        wy2 i    imoms3 1 newlat        wy3 i    imoms3 2 newlat      ENDFOR   ENDELSE      mi   min wy0 wy1 wy2 wy3  max   ma    IF abs mi 1  GE 1 e 6 THEN stop   IF abs ma 1  GE 1 e 6 THEN stop     IF NOT keyword_set noregx  THEN BEGIN      delta   alon ilon alon ilon 1L      IF max abs delta delta 0  GE 1 e 6 THEN stop     delta   delta 0        d0    alon ilon 1L olon short delta     IF min d0  max   ma  LE  2 THEN stop     IF ma GT  1 THEN stop     wx0   imoms3 temporary d0      d1    alon ilon    olon short delta     IF min d1  max   ma  LE  1 THEN stop     IF ma GT 0 THEN stop     wx1   imoms3 temporary d1      d2    alon ilon 1L olon short delta     IF min d2  max   ma  LE 0 THEN stop     IF ma GT 1 THEN stop     wx2   imoms3 temporary d2      d3    alon ilon 2L olon short delta     IF min d3  max   ma  LE 1 THEN stop     IF ma GT 2 THEN stop       wx3   imoms3 temporary d3    ENDIF ELSE BEGIN      nele   n_elements short      wx0   fltarr nele      wx1   fltarr nele      wx2   fltarr nele      wx3   fltarr nele      FOR i   0L  nele 1 DO BEGIN       IF i MOD 10000 EQ 0 THEN print  i       newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i        IF newlon LE 0 THEN stop       IF newlon GT 1 THEN stop       wx0 i    imoms3 newlon 1        wx1 i    imoms3 newlon        wx2 i    imoms3 1 newlon        wx3 i    imoms3 2 newlon      ENDFOR   ENDELSE      mi   min wx0 wx1 wx2 wx3  max   ma    IF abs mi 1  GE 1 e 6 THEN stop   IF abs ma 1  GE 1 e 6 THEN stop     line 0   xaddr 0  short    ilon   1L   xaddr 1  short    ilon     xaddr 2  short    ilon   1L   xaddr 3  short    ilon   2L   yaddr 0  short    ilat   1L   yaddr 1  short    yaddr 0  short    yaddr 2  short    yaddr 0  short    yaddr 3  short    yaddr 0  short    weig 0  short    wx0   wy0   weig 1  short    wx1   wy0   weig 2  short    wx2   wy0   weig 3  short    wx3   wy0   line 1   xaddr 4  short    ilon   1L   xaddr 5  short    ilon     xaddr 6  short    ilon   1L   xaddr 7  short    ilon   2L   yaddr 4  short    ilat     yaddr 5  short    ilat     yaddr 6  short    ilat     yaddr 7  short    ilat     weig 4  short    wx0   wy1   weig 5  short    wx1   wy1   weig 6  short    wx2   wy1   weig 7  short    wx3   wy1   line 2   xaddr 8  short    ilon   1L   xaddr 9  short    ilon     xaddr 10  short    ilon   1L   xaddr 11  short    ilon   2L   yaddr 8  short    ilat   1L   yaddr 9  short    yaddr 8  short    yaddr 10  short    yaddr 8  short    yaddr 11  short    yaddr 8  short    weig 8  short    wx0   wy2   weig 9  short    wx1   wy2   weig 10  short    wx2   wy2   weig 11  short    wx3   wy2   line 3   xaddr 12  short    ilon   1L   xaddr 13  short    ilon     xaddr 14  short    ilon   1L   xaddr 15  short    ilon   2L   yaddr 12  short    ilat   2L   yaddr 13  short    yaddr 12  short    yaddr 14  short    yaddr 12  short    yaddr 15  short    yaddr 12  short    weig 12  short    wx0   wy3   weig 13  short    wx1   wy3   weig 14  short    wx2   wy3   weig 15  short    wx3   wy3     mi   min total weig  short  1  max   ma    IF abs mi 1  GE 1 e 6 THEN stop   IF abs ma 1  GE 1 e 6 THEN stop     for the ocean points located between the atm lines    jpja 2 and jpja 1 or between the atm lines 0 and 1   linear interpolation between line 1 and line 2     short   where indexlat EQ jpja 2L OR indexlat EQ 0    IF short 0  NE  1 THEN BEGIN     ilon   indexlon short      ilat   indexlat short        delta   alat ilat 1L alat ilat      IF NOT keyword_set noregy  THEN BEGIN        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0       ENDIF        d1    alat ilat    olat short delta     IF min d1  max   ma  LE  1 THEN stop     IF ma GT 0 THEN stop     wy1   1  temporary d1      d2    alat ilat 1L olat short delta     IF min d2  max   ma  LE 0 THEN stop     IF ma GT 1 THEN stop       wy2   1  temporary d2        mi   min wy1 wy2  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   but imoms3 along the longitude     IF NOT keyword_set noregx  THEN BEGIN        delta   alon ilon alon ilon 1L        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0          d0    alon ilon 1L olon short delta       IF min d0  max   ma  LE  2 THEN stop       IF ma GT  1 THEN stop       wx0   imoms3 temporary d0        d1    alon ilon    olon short delta       IF min d1  max   ma  LE  1 THEN stop       IF ma GT 0 THEN stop       wx1   imoms3 temporary d1        d2    alon ilon 1L olon short delta       IF min d2  max   ma  LE 0 THEN stop       IF ma GT 1 THEN stop       wx2   imoms3 temporary d2        d3    alon ilon 2L olon short delta       IF min d3  max   ma  LE 1 THEN stop       IF ma GT 2 THEN stop         wx3   imoms3 temporary d3      ENDIF ELSE BEGIN        nele   n_elements short        wx0   fltarr nele        wx1   fltarr nele        wx2   fltarr nele        wx3   fltarr nele        FOR i   0L  nele 1 DO BEGIN         IF i MOD 10000 EQ 0 THEN print  i         newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i          IF newlon LE 0 THEN stop         IF newlon GT 1 THEN stop         wx0 i    imoms3 newlon 1          wx1 i    imoms3 newlon          wx2 i    imoms3 1 newlon          wx3 i    imoms3 2 newlon        ENDFOR     ENDELSE        mi   min wx0 wx1 wx2 wx3  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   line 1     xaddr 0  short    ilon   1L     xaddr 1  short    ilon       xaddr 2  short    ilon   1L     xaddr 3  short    ilon   2L     yaddr 0  short    ilat       yaddr 1  short    ilat       yaddr 2  short    ilat       yaddr 3  short    ilat       weig 0  short    wx0   wy1     weig 1  short    wx1   wy1     weig 2  short    wx2   wy1     weig 3  short    wx3   wy1   line 2     xaddr 4  short    ilon   1L     xaddr 5  short    ilon       xaddr 6  short    ilon   1L     xaddr 7  short    ilon   2L     yaddr 4  short    ilat   1L     yaddr 5  short    yaddr 4  short      yaddr 6  short    yaddr 4  short      yaddr 7  short    yaddr 4  short      weig 4  short    wx0   wy2     weig 5  short    wx1   wy2     weig 6  short    wx2   wy2     weig 7  short    wx3   wy2       mi   min total weig  short  1  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop     ENDIF     for the ocean points located below the line 0   Interpolation only along the longitude      short   where indexlat EQ  1    IF short 0  NE  1 THEN BEGIN     ilon   indexlon short        IF NOT keyword_set noregx  THEN BEGIN        delta   alon ilon alon ilon 1L        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0          d0    alon ilon 1L olon short delta       IF min d0  max   ma  LE  2 THEN stop       IF ma GT  1 THEN stop       wx0   imoms3 temporary d0        d1    alon ilon    olon short delta       IF min d1  max   ma  LE  1 THEN stop       IF ma GT 0 THEN stop       wx1   imoms3 temporary d1        d2    alon ilon 1L olon short delta       IF min d2  max   ma  LE 0 THEN stop       IF ma GT 1 THEN stop       wx2   imoms3 temporary d2        d3    alon ilon 2L olon short delta       IF min d3  max   ma  LE 1 THEN stop       IF ma GT 2 THEN stop         wx3   imoms3 temporary d3      ENDIF ELSE BEGIN        nele   n_elements short        wx0   fltarr nele        wx1   fltarr nele        wx2   fltarr nele        wx3   fltarr nele        FOR i   0L  nele 1 DO BEGIN         IF i MOD 10000 EQ 0 THEN print  i         newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i          IF newlon LE 0 THEN stop         IF newlon GT 1 THEN stop         wx0 i    imoms3 newlon 1          wx1 i    imoms3 newlon          wx2 i    imoms3 1 newlon          wx3 i    imoms3 2 newlon        ENDFOR     ENDELSE        mi   min wx0 wx1 wx2 wx3  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   line 1     xaddr 0  short    ilon   1L     xaddr 1  short    ilon       xaddr 2  short    ilon   1L     xaddr 3  short    ilon   2L     yaddr 0:3  short    0      weig 0  short    wx0     weig 1  short    wx1     weig 2  short    wx2     weig 3  short    wx3       mi   min total weig  short  1  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop     ENDIF     for the ocean points located above jpia 1    Interpolation only along the longitude      short   where indexlat EQ jpja 1L    IF short 0  NE  1 THEN BEGIN     ilon   indexlon short        IF NOT keyword_set noregx  THEN BEGIN        delta   alon ilon alon ilon 1L        IF max abs delta delta 0  GE 1 e 6 THEN stop       delta   delta 0          d0    alon ilon 1L olon short delta       IF min d0  max   ma  LE  2 THEN stop       IF ma GT  1 THEN stop       wx0   imoms3 temporary d0        d1    alon ilon    olon short delta       IF min d1  max   ma  LE  1 THEN stop       IF ma GT 0 THEN stop       wx1   imoms3 temporary d1        d2    alon ilon 1L olon short delta       IF min d2  max   ma  LE 0 THEN stop       IF ma GT 1 THEN stop       wx2   imoms3 temporary d2        d3    alon ilon 2L olon short delta       IF min d3  max   ma  LE 1 THEN stop       IF ma GT 2 THEN stop         wx3   imoms3 temporary d3      ENDIF ELSE BEGIN        nele   n_elements short        wx0   fltarr nele        wx1   fltarr nele        wx2   fltarr nele        wx3   fltarr nele        FOR i   0L  nele 1 DO BEGIN         IF i MOD 10000 EQ 0 THEN print  i         newlon   spl_incr alon ilon i 1L:ilon i 2L   1  0  1  2  olon short i          IF newlon LE 0 THEN stop         IF newlon GT 1 THEN stop         wx0 i    imoms3 newlon 1          wx1 i    imoms3 newlon          wx2 i    imoms3 1 newlon          wx3 i    imoms3 2 newlon        ENDFOR     ENDELSE        mi   min wx0 wx1 wx2 wx3  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop   line 1     xaddr 0  short    ilon 1L     xaddr 1  short    ilon       xaddr 2  short    ilon 1L     xaddr 3  short    ilon 2L     yaddr 0:3  short    jpja 1L     weig 0  short    wx0     weig 1  short    wx1     weig 2  short    wx2     weig 3  short    wx3       mi   min total weig  short  1  max   ma      IF abs mi 1  GE 1 e 6 THEN stop     IF abs ma 1  GE 1 e 6 THEN stop     ENDIF     Come back to the original index of atm grid without longitudinal overlap        xaddr   temporary xaddr    toadd   jpia   jpia   2 toadd   make sure all values are ge 0   xaddr   temporary xaddr    jpia   range the values between 0 and jpia 1   xaddr   temporary xaddr  mod jpia     take into account shiftx if needed   IF shiftx NE 0 THEN xaddr    temporary xaddr    shiftx  MOD jpia   take into account nosouthernline and nonorthernline   if keyword_set nosouthernline  then BEGIN     yaddr   temporary yaddr    1L     jpja   jpja   1L   ENDIF   if keyword_set nonorthernline  then jpja   jpja   1L   take into account revy if needed   IF revy EQ 1 THEN yaddr   jpja   1L   temporary yaddr                               addr   temporary yaddr jpia temporary xaddr       RETURN END"); 
     38a[36] = new Array("./Interpolation/cutpar.html", "cutpar.pro", "", "       file_comments cut p parallelogram s  into p n 2 parallelograms      categories basic work      examples    res   cutpar x0  y0  x1  y1  x2  y2  x3  y3  n             param x0 y0   in required  1d arrays of p elements  giving the edge positions  The         edges must be given as in plot to traw the parallelogram   see         example           param n  in required  each parallelogram will be cutted in n 2 pieces      keyword          endpoints see outputs      keyword          onsphere to specify that the points are located on a           sphere  In this case  x and y corresponds to longitude and           latitude in degrees       returns           defaut: 3d array 2 n 2 p  giving the center position of each          piece of the parallelograms           endpoints: 3d array 2 n 1 2 p  giving the edge positions          of each piece of the parallelograms      uses cutsegment pro      examples      x0    2 6 2    y0    0 2 6    x1    3 8 4    y1    4 4 6    x2    1 6 4    y2    5 6 8    x3    0 4 2    y3    1 4 8    n   4   splot   0 10   0 10  xstyle   1  ystyle   1 nodata   for i 0 2 do oplot   x0 i x1 i x2 i x3 i x0 i y0 i y1 i y2 i y3 i y0 i    res cutpar x0  y0  x1  y1  x2  y2  x3  y3  n    for i 0 2 do oplot   res 0 i   res 1 i  color   20 10 i  psym   1  thick   3      history             S  Masson  smasson lodyc jussieu fr              July 5th  2002   FUNCTION cutpar  x0  y0  x1  y1  x2  y2  x3  y3  n  endpoints   endpoints  onsphere   onsphere   is it a parallelogram    eps   1e 4   IF total abs x0 x2 2 x1 x3 2  GE eps  GT 0       OR total abs y0 y2 2 y1 y3 2  GE eps  GT 0       THEN stop  print   NOT a parallelogram    x0 npar    npar   n_elements x0     firstborder 2 n keyword_set endpoints npar    firstborder   cutsegment x0  y0  x1  y1  n                                endpoints   endpoints  onsphere   onsphere    thirdborder   cutsegment x3  y3  x2  y2  n                                endpoints   endpoints  onsphere   onsphere    res 2 n keyword_set endpoints n keyword_set endpoints npar    res   cutsegment firstborder 0      firstborder 1                             thirdborder 0      thirdborder 1                             n  endpoints   endpoints  onsphere   onsphere    free memory   firstborder    1   thirdborder    1   reform the result   res   reform res  2   n keyword_set endpoints 2  npar   overwrite     RETURN  res END"); 
     39a[37] = new Array("./Interpolation/cutsegment.html", "cutsegment.pro", "", "       file_comments cut p segments into p n equal parts      categories basic work      examples     res   cutsegment x0  y0  x1  y1  n               param x0 y0 and x1 y1   in required   1d arrays of p elements  the coordinates of           the endpoints of the p segmements            param  n  in required   the number of pieces we want to cut each segment        keyword          endpoints see ouputs      keyword          onsphere to specify that the points are located on a           sphere  In this case  x and y corresponds to longitude and           latitude in degrees       returns          defaut: a 3d array  2 n p  that gives the coordinates of the          middle of the cutted segments           if  endpoints  a 3d array  2 n 1 p  that gives the          coordinates of the endpoints of the cutted segments       examples       IDL  x0 2 5     IDL  y0 5 1     IDL  x1 9 3     IDL  y1 1 8     IDL  res cutsegment x0  y0  x1  y1  10     IDL  splot   0 10   0 10  xstyle   1  ystyle   1 nodata    IDL  oplot   x0 0  x1 0   y0 0  y1 0     IDL  oplot   res 0 0   res 1 0  color   20  psym   1  thick   3    IDL  oplot   x0 1  x1 1   y0 1  y1 1     IDL  oplot   res 0 1   res 1 1  color   40  psym   1  thick   3      history             S  Masson  smasson lodyc jussieu fr              July 5th  2002   FUNCTION cutsegment  x0  y0  x1  y1  n  endpoints   endpoints  onsphere   onsphere   number of segment   nseg   n_elements x0     number of point to find on each segment   n2find   n keyword_set endpoints       IF keyword_set onsphere  THEN BEGIN   save the inputs arrays     x0in   temporary x0      y0in   temporary y0      x1in   temporary x1      y1in   temporary y1      sp_cood    transpose x0in transpose y0in replicate 1  1  nseg      rect_coord   CV_COORD FROM_SPHERE   temporary sp_cood   TO_RECT   DEGREES      x0   rect_coord 0        y0   rect_coord 1        z0   rect_coord 2        rect_coord    1  free memory     sp_cood    transpose x1in transpose y1in replicate 1  1  nseg      rect_coord   CV_COORD FROM_SPHERE   temporary sp_cood   TO_RECT   DEGREES      x1   rect_coord 0        y1   rect_coord 1        z1   rect_coord 2        rect_coord    1  free memory   ENDIF     resx   replicate 1  n2find x0    resx   temporary resx 1 n findgen n2find                                     5 1 keyword_set endpoints x1 x0    resx    temporary resx      resy   replicate 1  n2find y0    resy   temporary resy 1 n findgen n2find                                     5 1 keyword_set endpoints y1 y0    resy    temporary resy     IF keyword_set onsphere  THEN BEGIN     resz   replicate 1  n2find z0      resz   temporary resz 1 n findgen n2find                                       5 1 keyword_set endpoints z1 z0      resz    temporary resz       rec_cood    transpose temporary resx  transpose temporary resy                      transpose temporary resz      res   CV_COORD FROM_RECT   temporary rec_cood   TO_SPHERE   DEGREES    restore the input arrays     x0   temporary x0in      y0   temporary y0in      x1   temporary x1in      y1   temporary y1in    ENDIF ELSE res    transpose temporary resx  transpose temporary resy     res   reform res 0:1    2  n2find  nseg   overwrite     RETURN  res END"); 
     40a[38] = new Array("./Interpolation/extrapolate.html", "extrapolate.pro", "", "     file_comments extrapolate data  zinput  where maskinput eq 0 by filling step by   step the coastline points with the mean value of the 8 neighbourgs      FUNCTION extrapolate  zinput  maskinput  nb_iteration  x_periodic   x_periodic  MINVAL   minval  MAXVAL   maxval     compile_opt strictarr  strictarrsubs      check the number of iteration used in the extrapolation    IF n_elements nb_iteration  EQ 0 THEN nb_iteration   10 E20   IF nb_iteration EQ 0 THEN return  zinput   nx    size zinput 1    ny    size zinput 2    take care of the boundary conditions       for the x direction  we put 2 additional columns at the left and   right side of the array     for the y direction  we put 2 additional lines at the bottom and   top side of the array     These changes allow us to use shift function without taking care of   the x and y periodicity      ztmp   bytarr nx 2  ny 2    ztmp 1:nx  1:ny    byte maskinput    msk   temporary ztmp      ztmp   replicate 1 e20  nx 2  ny 2    ztmp 1:nx  1:ny    zinput   if keyword_set x_periodic  then begin     ztmp 0  1:ny    zinput nx 1        ztmp nx 1  1:ny    zinput 0      ENDIF   remove NaN points if there is some    nan   where finite ztmp  EQ 0  cnt_nan    IF cnt_nan NE 0 THEN ztmp temporary nan    1 e20   z   temporary ztmp    nx2   nx 2   ny2   ny 2       extrapolation      sqrtinv   1 sqrt 2      cnt   1   When we look for the coast line  we don t whant to select the   borderlines of the array    we force the value of the mask for   those lines    msk 0      1b   msk nx 1      1b   msk  0    1b   msk  ny 1    1b   find the land points   land   where msk EQ 0  cnt_land      WHILE cnt LE nb_iteration AND cnt_land NE 0 DO BEGIN     find the coast line points      Once the land points list has been found  we change back the the   mask values for the boundary conditions      msk 0      0b     msk nx 1      0b     msk  0    0b     msk  ny 1    0b     if keyword_set x_periodic  then begin       msk 0      msk nx          msk nx 1      msk 1        endif     we compute the weighted number of sea neighbourgs    those 4 neighbours have a weight of 1:                                          those 4 neighbours have a weight of 1 sqrt 2 :                                        As we make sure that none of the land points are located on the   border of the array  we can compute the weight without shift    faster        weight   msk land 1 msk land 1 msk land nx2 msk land nx2                  sqrtinv msk land nx2 1 msk land nx2 1                            msk land nx2 1 msk land nx2 1    list all the points that have sea neighbourgs     ok   where weight GT 0    the coastline points     coast   land ok    their weighted number of sea neighbourgs      weight   weight temporary ok      fill the coastine points       z   temporary z msk       zcoast   z 1 coast z 1 coast z nx2 coast z nx2 coast                  1 sqrt 2 z nx2 1 coast z nx2 1 coast                               z nx2 1 coast z nx2 1 coast            IF n_elements minval  NE 0 THEN zcoast   minval   temporary zcoast      IF n_elements maxval  NE 0 THEN zcoast   temporary zcoast   we force the value of the mask for   those lines      msk 0      1b     msk nx 1      1b     msk  0    1b     msk  ny 1    1b   find the land points     land   where msk EQ 0  cnt_land      ENDWHILE     we return the original size of the array        return  z 1:nx  1:ny  END  "); 
     41a[39] = new Array("./Interpolation/fromreg.html", "fromreg.pro", "", "       file_comments interpolate data from a  regular rectangular grid  to any grid      2 metods availables: bilinear and imoms3      A  regular rectangular grid  is defined as a grid for which each lontitudes lines have      the same latitude and each latitudes columns have the same longitude          categories interpolation      examples     dataout   fromreg method  datain   lonin  latin  lonout  latout          param method  in required   a string defining the interpolation method                must be  bilinear  or  imoms3        param datain  in required   a 2D array the input data to interpolate       param lonin latin  in required   longitude latitude of the input data  optionals if              WEIG and ADDR keywords used        param lonout latout  in required   longitude latitude of the output data  optionals if              WEIG and ADDR keywords used       keyword     WEIG  ADDR 2D arrays  weig and addr are the weight and addresses used to       perform the interpolation:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over        Those keywords can be set to named variables into which the values will be       copied when the current routine exits  Next  they can be used to perform       the interpolation whithout computing again those 2 parameters  In that       case  lonin  latin  lonout and latout are not necessary       keyword      NONORTHERNLINE and  NOSOUTHERNLINE activate if you don t whant to take into            account the northen southern line of the input data when perfoming the            interpolation       returns 2D array: the interpolated data      restrictions We supposed the data are located on a sphere  with a    periodicity along the longitude       examples          topa   fromreg bilinear  tncep  xncep  yncep  glamt  gphit       or       t1opa   fromreg bilinear  t1ncep  xncep  yncep  glamt  gphit  WEIG   a  ADDR   b     help  a  b    t2opa   fromreg bilinear  t2ncep  xncep  WEIG   a  ADDR   b       history    November 2005: Sebastien Masson  smasson lodyc jussieu fr                FUNCTION fromreg  method  datain  lonin  latin  lonout  latout                       WEIG   weig  ADDR   addr                       NONORTHERNLINE   nonorthernline                       NOSOUTHERNLINE   nosouthernline     compile_opt strictarr  strictarrsubs      IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     atmospheric grid parameters       alon   lonin     alat   latin     get_gridparams  alon  alat  jpia  jpja  1   double     Oceanic grid parameters       olon   lonout     olat   latout     get_gridparams  olon  olat  jpio  jpjo  2   double     Compute weight and address       CASE method OF        bilinear :compute_fromreg_bilinear_weigaddr  alon  alat  olon  olat  weig  addr  NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline        imoms3 :  compute_fromreg_imoms3_weigaddr    alon  alat  olon  olat  weig  addr  NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline       ELSE:BEGIN          print    unknown interpolation method  we stop          stop       ENDELSE     ENDCASE   ENDIF     dataout   total weig datain addr  1    dataout   reform dataout  jpio  jpjo   over      RETURN  dataout END"); 
     42a[40] = new Array("./Interpolation/get_gridparams.html", "get_gridparams.pro", "", "       file_comments      1  extract from a NetCDF file the longitude  latidude  and their dimensions        and make sure it is 1D or 2D arrays           or 2  given longitude and latitude arrays get their dimensions and make sure         they are 1D or 2D arrays       categories interpolation      examples       1  get_gridparams  file  lonname  latname  lon  lat  jpi  jpj  n_dimensions     or      2  get_gridparams  lon  lat  jpi  jpj  n_dimensions     1      param in1  in required   the name of the netcdf file     param in2  in required   the name of the variable that contains the longitude in the NetCDF file     param in3  in required   the name of the variable that contains the latitude in the NetCDF file     param in4   out  the number of points in the longitudinal direction     param in5   out  the number of points in the latitudinal direction    param in6  out  the variable that will contain the longitudes     param in7   out  the variable that will contain the latitudes     param in8  out  1 or 2 to specify if lon and lat should be 1D  jpi or jpj      or      2      param lon lat  in required   1d or 2D arrays defining longitudes and latitudes        Note that these arrays are also outputs and can therefore be modified       param in1  out  the variable that will contain the longitudes     param in2   out  the variable that will contain the latitudes     param in3   out  the number of points in the longitudinal direction     param in4   out  the number of points in the latitudinal direction     param in5  out  1 or 2 to specify if lon and lat should be 1D  jpi or jpj       arrays or 2D arrays  jpi jpj  Note that of  n_dimensions   1  then the      grid must be regular  each longitudes must be the same for all latitudes      and each latitudes should be the sae for all longitudes        examples        1  ncdf_get_gridparams   coordinates_ORCA_R05 nc   glamt   gphit                   olon  olat  jpio  jpjo  2     2  ncdf_get_gridparams  olon  olat  jpio  jpjo  2      history    November 2005: Sebastien Masson  smasson lodyc jussieu fr                 PRO get_gridparams  in1    in2    in3      in4  in5  in6  in7  in8  DOUBLE   double                    file  lonname  latname  lon  lat  jpi  jpj  n_dimensions                     lon    lat    jpi      jpj  n_dimensions     CASE n_params  OF     8:BEGIN   get longitude and latitude       IF file_test in1  EQ 0 THEN BEGIN          print   file     in1     does not exist          stop       ENDIF       cdfido   ncdf_open in1        ncdf_varget  cdfido  in2  lon       ncdf_varget  cdfido  in3  lat       ncdf_close  cdfido        n_dimensions   in8     END     5:BEGIN        lon   temporary in1        lat   temporary in2        n_dimensions   in5     END     ELSE:BEGIN        print   Bad nimber of input parameters        stop     end   ENDCASE     sizelon   size lon    sizelat   size lat    CASE 1 OF      lon and lat are 1D arrays       sizelon 0  EQ 1 AND sizelat 0  EQ 1:BEGIN    get jpi and jpj       jpi   sizelon 1        jpj   sizelat 1    make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:         2:BEGIN   make lon and lat 2D arrays           lon   temporary lon    replicate 1  jpj            lat   replicate 1  jpi    temporary lat          END         ELSE:stop       ENDCASE     END     lon is 2D array and lat is 1D array       sizelon 0  EQ 2 AND sizelat 0  EQ 1:BEGIN    get jpi and jpj       jpi   sizelon 1        jpj   sizelon 2        IF jpj NE n_elements lat  THEN stop   make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:BEGIN            IF array_equal lon  lon  0    replicate 1  jpj  NE 1 THEN BEGIN              print   Longitudes are not the same for all latitudes  imposible to extract a 1D array of the longitudes              stop           ENDIF           lon   lon  0          END         2:lat   replicate 1  jpi    temporary lat          ELSE:stop       ENDCASE     END     lon is 1D array and lat is 2D array       sizelon 0  EQ 1 AND sizelat 0  EQ 2:BEGIN    get jpi and jpj       jpi   sizelat 1        jpj   sizelat 2        IF jpi NE n_elements lon  THEN stop   make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:BEGIN            IF array_equal lat  replicate 1  jpi    lat 0    NE 1 THEN BEGIN              print   Latitudes are not the same for all longitudes  imposible to extract a 1D array of the latitudes              stop           ENDIF           lat   reform lat 0            END         2:lon   temporary lon    replicate 1  jpj          ELSE:stop       ENDCASE     END     lon and lat are 2D arrays       sizelon 0  EQ 2 AND sizelat 0  EQ 2:BEGIN    get jpi and jpj       IF array_equal sizelon 1:2  sizelat 1:2  NE 1 THEN stop       jpi   sizelon 1        jpj   sizelon 2          make sure that lon and lat have the good number of dimensions       CASE n_dimensions OF          1:BEGIN            IF array_equal lon  lon  0    replicate 1  jpj  NE 1 THEN BEGIN              print   Longitudes are not the same for all latitudes  imposible to extract a 1D array of the longitudes              stop           ENDIF           lon   lon  0            IF array_equal lat  replicate 1  jpi    reform lat 0    NE 1 THEN BEGIN              print   Latitudes are not the same for all longitudes  imposible to extract a 1D array of the latitudes              stop           ENDIF         lat   reform lat 0            END         2:         ELSE:stop       ENDCASE     END     lon and lat are not 1D and or 2D arrays       ELSE:stop   ENDCASE       double keyword     if keyword_set double  then BEGIN      lon   double temporary lon      lat   double temporary lat    ENDIF     give back the right outparameters       CASE n_params  OF     8:BEGIN       in4   temporary lon        in5   temporary lat        in6   temporary jpi        in7   temporary jpj      END     5:BEGIN       in1   temporary lon        in2   temporary lat        in3   temporary jpi        in4   temporary jpj      END   ENDCASE    return END"); 
     43a[41] = new Array("./Interpolation/imoms3.html", "imoms3.pro", "", "       FUNCTION imoms3  xin    x   abs xin    y   fltarr n_elements x      test1   where x LT 1    IF test1 0  NE  1 THEN BEGIN     xtmp   x test1      y test1    0 5 xtmp xtmp xtmp  xtmp xtmp  0 5 xtmp   1   ENDIF   test1   where x LT 2 AND x GE 1    IF test1 0  NE  1 THEN BEGIN     xtmp   x test1      y test1     1 6 xtmp xtmp xtmp   xtmp xtmp    11 6 xtmp   1   ENDIF    RETURN  y END"); 
     44a[42] = new Array("./Interpolation/inquad.html", "inquad.pro", "", "     file_comments to find if an  x y  point is in a quadrilateral  x1 x2 x3 x4       categories grid manipulation      examples          res   inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4           param x y  in required   the coordinates of the point we want to know where it       is  Must be a scalar if  onsphere activated else can be scalar       or array            param x1 y1 x2 y2 x3 y3 x4 y4  in required   the coordinates of the       quadrilateral given in the CLOCKWISE order  Scalar or array         keyword     DOUBLE use double precision to perform the computation       keyword     ONSPHERE to specify that the quadilateral are on a sphere and      that teir coordinates are longitude latitude coordinates  In this      case  est west periodicity  poles singularity and other pbs      related to longitude latitude coordinates are managed      automatically        keyword    ZOOMRADIUS :the zoom  circle centred on the  x y  with a radius of      zoomradius degree where we look for the the quadrilateral which     contains the  x y  point  used for the satellite projection      when  onsphere is activated  Default is 4 and seems to be the      minimum which can be used  Can be increase if the cell size is      larger than 5 degrees          keyword     NOPRINT to suppress the print messages       returns      a n element vector  Where n is the number of elements of      x  res i j means that the point number i is located in the      quadrilateral number j with  0   j   n_elements x0 1       restrictions I think degenerated quadrilateral  e g  flat of   twisted  is not work  This has to be tested       examples            x   1 1  2  6  7  3          y   1 1  3  3  4  7          x1   1 0 4 2          y1   1 1 4 8          x2   1 1 6 4          y2   1 5 6 8          x3   1 3 8 4          y3   1 4 4 6          x4   1 2 6 2          y4   1 0 2 6          splot   0 10   0 10  xstyle   1  ystyle   1 nodata         for i 0 2 do oplot   x4 i x1 i x2 i x3 i x4 i y4 i y1 i y2 i y3 i y4 i          oplot  x  y  color   20  psym   1  thick   2         print  inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4           On a sphere see clickincell pro       history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on Convert_clic_ij pro written by Gurvan Madec      FUNCTION inquad  x  y  x1  y1  x2  y2  x3  y3  x4  y4  ONSPHERE   onsphere   DOUBLE   double  ZOOMRADIUS   zoomradius  NOPRINT   noprint  NEWCOORD   newcoord       ntofind   n_elements x    nquad   n_elements x2      IF keyword_set onsphere  THEN BEGIN   save the inputs parameters     xin   x     yin   y     x1in   x1     y1in   y1     x2in   x2     y2in   y2     x3in   x3     y3in   y3     x4in   x4     y4in   y4   for map_set     x   x MOD 360     x1   x1 MOD 360     x2   x2 MOD 360     x3   x3 MOD 360     x4   x4 MOD 360   save  map      save    map: map  x: x  y: y  z: z  p: p    do a satellite projection      IF NOT keyword_set zoomradius  THEN zoomradius   4     map_set  y 0  x 0  0   satellite  sat_p    1 zoomradius 20 6371 229  0  0   noerase   iso   noborder   use normal coordinates to reject cells which are out of the projection      tmp    convert_coord x  y   DATA   TO_NORMAL  DOUBLE   double       tmp1   convert_coord x1  y1   DATA   TO_NORMAL  DOUBLE   double       tmp2   convert_coord x2  y2   DATA   TO_NORMAL  DOUBLE   double       tmp3   convert_coord x3  y3   DATA   TO_NORMAL  DOUBLE   double       tmp4   convert_coord x4  y4   DATA   TO_NORMAL  DOUBLE   double     remove cell which have one corner with coordinates equal to NaN     test   finite tmp1 0   tmp1 1   tmp2 0   tmp2 1                         tmp3 0   tmp3 1   tmp4 0   tmp4 1        good   where temporary test  EQ 1        IF good 0  EQ  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   The point is out of the cells    restore the input parameters       x   temporary xin        y   temporary yin        x1   temporary x1in        y1   temporary y1in        x2   temporary x2in        y2   temporary y2in        x3   temporary x3in        y3   temporary y3in        x4   temporary x4in        y4   temporary y4in    restore old  map         map   save map        x   save x        y   save y        z   save z        p   save p       RETURN    1     ENDIF       x    tmp 0      y    tmp 1      x1   tmp1 0  good      y1   tmp1 1  good      x2   tmp2 0  good      y2   tmp2 1  good      x3   tmp3 0  good      y3   tmp3 1  good      x4   tmp4 0  good      y4   tmp4 1  good        tmp1    1   tmp2    1   tmp3    1   tmp4    1   remove cells which are obviously bad      test    x1 GT x AND x2 GT x AND x3 GT x AND x4 GT x          OR  x1 LT x AND x2 LT x AND x3 LT x AND x4 LT x          OR  y1 GT y AND y2 GT y AND y3 GT y AND y4 GT y          OR  y1 LT y AND y2 LT y AND y3 LT y AND y4 LT y      good2   where temporary test  EQ 0        IF good2 0  EQ  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   The point is out of the cells    restore the input parameters       x   temporary xin        y   temporary yin        x1   temporary x1in        y1   temporary y1in        x2   temporary x2in        y2   temporary y2in        x3   temporary x3in        y3   temporary y3in        x4   temporary x4in        y4   temporary y4in    restore old  map         map   save map        x   save x        y   save y        z   save z        p   save p       RETURN    1     ENDIF       nquad   n_elements good2       x1   x1 good2      y1   y1 good2      x2   x2 good2      y2   y2 good2      x3   x3 good2      y3   y3 good2      x4   x4 good2      y4   y4 good2    ENDIF       the point is inside the quadilateral if test eq 1   with test equal to:       test    x x1 y2 y1  GE  x2 x1 y y1             x x2 y3 y2  GT  x3 x2 y y2             x x3 y4 y3  GT  x4 x3 y y3             x x4 y1 y4  GE  x1 x4 y y4       computation of test without any do loop for ntofind points  x y  and   nquad quadilateral x1 x2 x3 x4 y1 y2 y3 y4    test dimensions are  ntofind  nquad    column i of test corresponds to the intersection of point i with all   quadirlateral     row j of test corresponds to all the points localized in cell j    test        x x1     x replicate 1  nquad replicate 1  ntofind x1       y2 y1     replicate 1  ntofind y2 y1      GE  x2 x1    GE  replicate 1  ntofind x2 x1       y y1     y replicate 1  nquad replicate 1  ntofind y1      test   temporary test       x x2     x replicate 1  nquad replicate 1  ntofind x2       y3 y2     replicate 1  ntofind y3 y2      GE  x3 x2    GE  replicate 1  ntofind x3 x2       y y2     y replicate 1  nquad replicate 1  ntofind y2      test   temporary test       x x3     x replicate 1  nquad replicate 1  ntofind x3       y4 y3     replicate 1  ntofind y4 y3      GE  x4 x3    GE  replicate 1  ntofind x4 x3       y y3     y replicate 1  nquad replicate 1  ntofind y3      test   temporary test       x x4     x replicate 1  nquad replicate 1  ntofind x4       y1 y4     replicate 1  ntofind y1 y4      GE  x1 x4    GE  replicate 1  ntofind x1 x4       y y4     y replicate 1  nquad replicate 1  ntofind y4      check test if ntofind gt 1   if ntofind gt 1  each point must be localised in one uniq cell    IF ntofind GT 1 THEN BEGIN   each column of test must have only 1 position equal to one     chtest   total test  2    points out of the cells     IF  where chtest EQ 0 0  NE  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   Points number  strjoin strtrim where chtest EQ 0  1      are out of the grid        stop     ENDIF   points in more than one cell     IF  where chtest GT 1 0  NE  1 THEN BEGIN       IF NOT keyword_set noprint  THEN print   Points number  strjoin strtrim where chtest GT 1  1      are in more than one cell        stop     ENDIF   ENDIF   find the points for which test eq 1   found   where temporary test  EQ 1    if ntofind eq 1  the point may be localised in more than one grid   cell ou may also be out of the cells   IF ntofind EQ 1 THEN BEGIN     CASE 1 OF       found 0  EQ  1:BEGIN         IF NOT keyword_set noprint  THEN print   The point is out of the cells          IF keyword_set onsphere  THEN BEGIN   restore old  map             map   save map            x   save x            y   save y            z   save z            p   save p         ENDIF         return    1       END        n_elements found  GT ntofind:BEGIN         IF NOT keyword_set noprint  THEN print   The point is in more than one cell        END        ELSE:     ENDCASE   ENDIF ELSE BEGIN   if ntofind GT 1  found must be sorted    i position of found  this corresponds to one x y point     forsort   found MOD ntofind   j position of found  this corresponds to cell in which is one x y   point     found   temporary found ntofind   found must be sorted accordind to forsort     found   found sort forsort    ENDELSE     IF keyword_set onsphere  THEN BEGIN     IF arg_present newcoord  THEN BEGIN       newcoord    x1 found  y1 found                         x2 found  y2 found                         x3 found  y3 found                         x4 found  y4 found                         x  y      ENDIF       found   good good2 found    restore the input parameters     x   temporary xin      y   temporary yin      x1   temporary x1in      y1   temporary y1in      x2   temporary x2in      y2   temporary y2in      x3   temporary x3in      y3   temporary y3in      x4   temporary x4in      y4   temporary y4in    restore old  map       map   save map      x   save x      y   save y      z   save z      p   save p   ENDIF     RETURN  found END"); 
     45a[43] = new Array("./Interpolation/inrecgrid.html", "inrecgrid.pro", "", "       file_comments given   a list of points   x y  position                      the x and y limits of a rectangular grid            find in which cell is located each given point       categories no DO loop  use the wonderfull value_locate function       examples    res   inrecgrid xin  yin  left  bottom          param x1d  in required   a 1d array  the x position on the points       param y1d  in required   a 1d array  the y position on the points      left  in required   a 1d  monotonically increasing array  the position of the       left  border of each cell        param bottom  in required   a 1d  monotonically increasing array  the position of the       bottom  border of each cell         keyword     output2d to get the output as a 2d array  2 n_elements x1d       with res 0  the x index accoring to the 1d array defined by      left and res 1  the y index accoring to the 1d array defined by      bottom       keyword    checkout rbgrid ubgrid  specify the right and upper bondaries of      the grid and check if some points are out       returns the index on the cell accoring to the 2d array defined by   left and bottom       examples       IDL  a indgen 5     IDL  b indgen 7     IDL  r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a b     IDL  print  r              20          13           7    IDL  r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a a 1 b b 1 output2d     IDL  print  r          0 00000      4 00000          3 00000      2 00000          2 00000      1 00000        history              S  Masson  smasson lodyc jussieu fr                         July 3rd  2002                        October 3rd  2003: use value_locate    FUNCTION inrecgrid  x1d  y1d  left  bottom  output2d   output2d  checkout   checkout     ncellx   n_elements left    ncelly   n_elements bottom      xpos   value_locate left  x1d    ypos   value_locate bottom  y1d      IF n_elements checkout  EQ 2 THEN BEGIN     out   where x1d GT checkout 0      IF out 0  NE  1 THEN xpos out     1     out   where y1d GT checkout 1      IF out 0  NE  1 THEN ypos out     1   ENDIF     IF keyword_set output2d  THEN return   transpose xpos  transpose ypos      IF NOT keyword_set checkout  THEN RETURN  xpos ncellx ypos     res   xpos ncellx ypos   out   where xpos EQ  1 OR ypos EQ  1    IF out 0  NE  1 THEN res out     1       RETURN  res  END"); 
     46a[44] = new Array("./Interpolation/ll_narcs_distances.html", "ll_narcs_distances.pro", "", "       file_comments   This function returns the longitude and latitude  lon  lat  of  a point a given arc distance  pi  lon0    10  20  100   IDL  lat0    0   10  45   IDL  lon1    10  60  280   IDL  lat1    0  10  45   IDL  dist   map_npoints lon0  lat0  lon1  lat1  azimuth   azi   two_by_two   IDL  earthradius   6378206 4d0  IDL  res   ll_narcs_distances lon0  lat0  dist earthradius  azi   degrees   IDL  print  reform res 0            10 000000       60 000000       280 00000  IDL  print  reform res 1               1 1999280e 15       10 000000       45 000000      history         Based on the IDL function ll_arc_distance pro v 1 11 2003 02 03   Sebastien Masson  smasson lodyc jussieu fr                     August 2005         file_comments Return the  lon  lat  of the point a given arc distance   pi   arc_dist   pi    and azimuth  az  from lon_lat0      FUNCTION LL_NARCS_DISTANCES  lon0  lat0  arc_dist  az  DEGREES   degs     IF n_elements lon0  NE n_elements lat0        OR n_elements lon0  NE n_elements arc_dist        OR n_elements lon0  NE n_elements az  THEN return   1    cdist   cos arc_dist        Arc_Dist is always in radians    sdist   sin arc_dist     if keyword_set degs  then s    dpi 180 0 else s   1 0d0    ll   lat0    s               To radians   sinll1   sin ll    cosll1   cos ll    azs   az    s   phi   asin sinll1   cdist   cosll1   sdist   cos azs    ll   lon0    s               To radians   lam   ll   atan sdist   sin azs                      cosll1   cdist   sinll1   sdist   cos azs     zero   where arc_dist eq 0  count    IF count NE 0 THEN BEGIN      lam zero    lon0 zero      phi zero    lat0 zero    ENDIF     if keyword_set degs  then return  transpose lam   phi    s     ELSE return  transpose lam   phi   end  "); 
     47a[45] = new Array("./Interpolation/map_npoints.html", "map_npoints.pro", "", "       file_comments  Return the distance in meter between all np0 points P0 and all         np1 points P1 on a sphere  If keyword  TWO_BY_TWO is given then         returns the distances between number n of P0 points and number         n of P1 points  in that case  np0 and np1 must be equal          Same as map_2points with the meter parameter but for n points         without do loop       categories Maps      examples   Result   Map_nPoints lon0  lat0  lon1  lat1     param Lon0 Lat0   in required  np0 elements vector  longitudes and latitudes of np0 points P0   param Lon1 Lat1   in required   np1 elements vector  longitude and latitude of np1 points P1       keyword   AZIMUTH A named variable that will receive the azimuth of the great         circle  connecting the two points  P0 to P1    keyword    MIDDLE to get the longitude latitude of the middle point betwen P0 and P1     keyword   RADIANS   if set  inputs and angular outputs are in radians  otherwise  degrees     keyword   RADIUS If given  return the distance between the two points  calculated using the given radius          Default value is the earth radius : 6378206 4d0    keyword   TWO_BY_TWO:If given then Map_nPoints returns the distances between         number n of P0 points and number n of P1 points  in that case          np0 and np1 must be equal       returns         An  np0 np1  array giving the distance in meter between np0         points P0 and np1 points P1  Element  i j  of the ouput is the         distance between element P0 i  and P1 j          If keyword  TWO_BY_TWO is given then Map_nPoints returns         an np element vector giving the distance in meter between P0 i          and P1 i   in that case  we have np0   np1   np          if  MIDDLE see this keyword       examples  IDL  print     map_npoints 105 15 1 40 02 1 0 07 100 50 51 30 20 0          7551369 3       5600334 8         12864354        10921254          14919237        5455558 8    IDL  lon0    10  20  100   IDL  lat0    0   10  45   IDL  lon1    10  60  280   IDL  lat1    0  10  45   IDL  dist   map_npoints lon0  lat0  lon1  lat1  azimuth   azi   IDL  help  dist  azi  DIST            DOUBLE      Array 3  3   AZI             DOUBLE      Array 3  3   IDL  print  dist 4 lindgen 3  azi 4 lindgen 3          2226414 0       4957944 5       10018863          90 000000       64 494450   4 9615627e 15  IDL  dist   map_npoints lon0  lat0  lon1  lat1  azimuth   azi   two_by_two   IDL  help  dist  azi  DIST            DOUBLE      Array 3   AZI             DOUBLE      Array 3   IDL  print  dist  azi         2226414 0       4957944 5       10018863          90 000000       64 494450   4 9615627e 15  IDL  print  map_2points lon0 0  lat0 0  lon1 0  lat1 0          20 000000       90 000000  IDL  print  map_npoints lon0 0  lat0 0  lon1 0  lat1 0  azi azi 6378206 4d0    dtor  azi         20 000000         90 000000    IDL  lon0    10  20  100   IDL  lat0    0   10  45   IDL  lon1    10  60  280   IDL  lat1    0  10  45   IDL  mid   map_npoints lon0  lat0  lon1  lat1   middle   two_by_two   IDL  print  reform mid 0  reform mid 1          0 0000000       40 000000       190 00000         0 0000000   1 5902773e 15       90 000000  IDL  print   map_2points lon0 0  lat0 0  lon1 0  lat1 0  npath   3  1          0 0000000       0 0000000  IDL  print   map_2points lon0 1  lat0 1  lon1 1  lat1 1  npath   3  1          40 000000   1 5902773e 15  IDL  print   map_2points lon0 2  lat0 2  lon1 2  lat1 2  npath   3  1          190 00000       90 000000      history         Based on the IDL function map_2points pro v 1 6 2001 01 15   Sebastien Masson  smasson lodyc jussieu fr                     October 2003   Function Map_npoints  lon0  lat0  lon1  lat1  azimuth   azimuth        RADIANS   radians  RADIUS   radius  MIDDLE   middle  TWO_BY_TWO   two_by_two    COMPILE_OPT idl2   ON_ERROR  2                     return to caller    IF  N_PARAMS  LT 4  THEN       MESSAGE   Incorrect number of arguments     np0   n_elements lon0     IF n_elements lat0  NE np0 THEN       MESSAGE   lon0 and lat0 must have the same number of elements    np1   n_elements lon1     IF n_elements lat1  NE np1 THEN       MESSAGE   lon1 and lat1 must have the same number of elements    if keyword_set two_by_two  AND np0 NE np1 then       MESSAGE   When using two_by_two keyword  P0 and P1 must have the same number of elements     mx   MAX ABS lat0  lat1    pi2    dpi 2   IF  mx GT  KEYWORD_SET radians    pi2 : 90  THEN       MESSAGE   Value of Latitude is out of allowed range     k   KEYWORD_SET radians    1 0d0 :  dpi 180 0  Earth equatorial radius  meters  Clarke 1866 ellipsoid   r_sphere    n_elements RADIUS  NE 0   RADIUS : 6378206 4d0      coslt1   cos k lat1    sinlt1   sin k lat1    coslt0   cos k lat0    sinlt0   sin k lat0      IF np0 EQ np1 AND np1 EQ 1 THEN two_by_two   1     if NOT keyword_set two_by_two  THEN BEGIN      coslt1   replicate 1 0d0  np0 temporary coslt1      sinlt1   replicate 1 0d0  np0 temporary sinlt1      coslt0   temporary coslt0 replicate 1 0d0  np1      sinlt0   temporary sinlt0 replicate 1 0d0  np1    ENDIF      if keyword_set two_by_two  THEN BEGIN      cosl0l1   cos k lon1 lon0      sinl0l1   sin k lon1 lon0    ENDIF ELSE BEGIN      cosl0l1   cos k replicate 1 0d0  np0 lon1 lon0 replicate 1 0d0  np1      sinl0l1   sin k replicate 1 0d0  np0 lon1 lon0 replicate 1 0d0  np1    ENDELSE     cosc   sinlt0   sinlt1   coslt0   coslt1   cosl0l1  Cos of angle between pnts   Avoid roundoff problems by clamping cosine range to  1 1    cosc    1 0d0   cosc   1 0d0     if arg_present azimuth  OR keyword_set middle  then begin     sinc   sqrt 1 0d0   cosc cosc      bad   where abs sinc  le 1 0e 7      IF bad 0  NE  1 THEN sinc bad    1     cosaz    coslt0   sinlt1   sinlt0 coslt1 cosl0l1    sinc      sinaz   sinl0l1 coslt1 sinc     IF bad 0  NE  1 THEN BEGIN        sinc bad    0 0d0       sinaz bad    0 0d0       cosaz bad    1 0d0     ENDIF   ENDIF     IF keyword_set middle  then BEGIN      s0   0 5d0   acos cosc         coss   cos s0      sins   sin s0            lats   asin sinlt0   coss   coslt0   sins   cosaz    k     lons   atan sins   sinaz  coslt0   coss   sinlt0   sins   cosaz    k       if keyword_set two_by_two  THEN BEGIN        return  transpose lon0    lons   lats      ENDIF ELSE BEGIN        return     lon0 replicate 1 0d0  np1    lons   lats        ENDELSE      ENDIF     if arg_present azimuth  then begin     azimuth   atan sinaz  cosaz      IF k NE 1 0d0 THEN azimuth   temporary azimuth    k    ENDIF  return  acos cosc    r_sphere   end"); 
     48a[46] = new Array("./Interpolation/neighbor.html", "neighbor.pro", "", "       file_comments  find the closetest point of  P0  within a list of np1 points  P1 Which can be on a sphere       categories Maps      examples    IDL  Result   neighbor lon0  lat0  lon1  lat1     param p0lon  in required   scalar  longitudes of point P0    param p0lat   in required   scalar  latitudes of point P0        keyword   RADIANS if set  inputs and angular outputs are in radians  otherwise  degrees     keyword   DISTANCE dis  to get back the distances between P0 and the np1     points P1 in the variable dis     keyword    SPHERE to activate if points are located on a sphere       returns         index giving the P1 index  point that is the closetest point         of  P0       examples         IDL  print  neighbor 105 15 40 02 0 07 100 50 51 30 20 0                 distance dis                     0         IDL  print  dis               105 684      206 125      160 228      history   Sebastien Masson  smasson lodyc jussieu fr                     October 2003   FUNCTION neighbor  p0lon  p0lat  neighlon  neighlat  sphere   sphere  distance   distance  radians   radians     somme checks   IF  n_elements p0lon  NE 1 THEN MESSAGE   Sorry p0lon must be a scalar    p0lon   p0lon 0    IF  n_elements p0lat  NE 1 THEN MESSAGE   Sorry p0lat must be a scalar    p0lat   p0lat 0    nneig   n_elements neighlon     IF  n_elements neighlat  NE nneig  THEN       MESSAGE   neighlon and neighlat must have the same number of elements    distance between P0 and the others points   IF keyword_set sphere  THEN BEGIN     IF sphere NE 1 THEN radius   sphere     distance   Map_nPoints p0lon  p0lat  neighlon  neighlat                            radius   radius  radians   radians    ENDIF ELSE BEGIN      distance    neighlon p0lon 2 neighlat p0lat 2     IF arg_present distance  THEN distance   sqrt distance    ENDELSE   RETURN  where distance EQ min distance  END"); 
     49a[47] = new Array("./Interpolation/quadrilateral2square.html", "quadrilateral2square.pro", "", "       file_comments warm  or map  an arbitrary quadrilateral onto a unit square    according to the 4 point correspondences:          x0 y0     0 0           x1 y1     1 0           x2 y2     1 1           x3 y3     0 1    This is the inverse function of square2quadrilateral pro   The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  bellow       categories image  grid manipulation      examples          res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin            param x0in  in required   the coordinates of the quadrilateral        param y0in  in required   the coordinates of the quadrilateral        param x1in  in required   the coordinates of the quadrilateral        param y1in  in required   the coordinates of the quadrilateral        param x2in  in required   the coordinates of the quadrilateral        param y2in  in required   the coordinates of the quadrilateral        param x3in  in required   the coordinates of the quadrilateral        param y3in   in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order           param xxin  in required  the coordinates of the point s  for which we want to do the       mapping  Can be scalar or array         param yyin  in required  the coordinates of the point s  for which we want to do the       mapping  Can be scalar or array       returns          2 n  array: the new coodinates  xout  yout  of the  xin yin        point s  after mapping         If xin is a scalar  then n is equal to the number of elements of       x0  If xin is an array   then n is equal to the number of       elements of xin       restrictions I think degenerated quadrilateral  e g  flat of   twisted  is not work  This has to be tested       examples      IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20     IDL  inorg quadrilateral2square 2 1 3 0 5 1 2 3 out 0 out 1    IDL  tracegrille  reform inorg 0 11 11  reform inorg 1 11 11 color indgen 12 20      history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56                 FUNCTION quadrilateral2square  x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  xxin  yyin  PERF   perf   tempsone   systime 1      Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      xin   double xxin      yin   double yyin    ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      xin   float xxin      yin   float yyin    ENDELSE     get the matrix A     a   square2quadrilateral x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in      compute the adjoint matrix      IF keyword_set double  THEN adj   dblarr 9  n_elements x0      ELSE adj   fltarr 9  n_elements x0      adj 0      a 4            a 7   a 5      adj 1      a 7   a 2   a 1      adj 2      a 1   a 5   a 4   a 2      adj 3      a 6   a 5   a 3      adj 4      a 0            a 6   a 2      adj 5      a 3   a 2   a 0   a 5      adj 6      a 3   a 7   a 6   a 4      adj 7      a 6   a 1   a 0   a 7      adj 8      a 0   a 4   a 3   a 1          IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0       yin   replicate yin  n_elements x0     ENDIF     compute xprime  yprime and wprime     IF n_elements x0  EQ 1 THEN BEGIN     wpr   1 adj 6 xin   adj 7 yin   adj 8    ENDIF ELSE BEGIN     wpr   1 adj 6   xin   adj 7   yin   adj 8      ENDELSE   xpr   xin wpr   ypr   yin wpr     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin      IF n_elements x0  EQ 1 THEN BEGIN     res 0      xpr adj 0    ypr adj 1   wpr adj 2      res 1      xpr adj 3    ypr adj 4   wpr adj 5    ENDIF ELSE BEGIN     res 0      xpr adj 0      ypr adj 1     wpr adj 2        res 1      xpr adj 3      ypr adj 4     wpr adj 5      ENDELSE     IF keyword_set perf  THEN print   time quadrilateral2square  systime 1 tempsone    RETURN  res END"); 
     50a[48] = new Array("./Interpolation/spl_fstdrv.html", "spl_fstdrv.pro", "", "             file_comments SPL_FSTDRV returns the values of the first derivative of   the interpolating function at the points X2i  it is a double   precision array      Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   SPL_INCR function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that interpolated value are also in ascending order      examples  y2    spl_fstdrv x  y  yscd  x2          param x  in required   An n element  at least 2  input vector that specifies the      tabulate points in ascending order          param y  in required   f x    y  An n element input vector that specifies the values      of the tabulated function F Xi  corresponding to Xi          param yscd  in required   The output from SPL_INIT for the specified X and Y          param x2  in required   The input values for which the first derivative values are      desired  X can be scalar or an array of values      returns         y2: f x2    y2          history    Sebastien Masson  smasson lodyc jussieu fr : May 2005         FUNCTION spl_fstdrv  x  y  yscd  x2     compute the first derivative of the spline function      nx   n_elements x    ny   n_elements y    x must have at least 2 elements   IF nx LT 2 THEN stop      y must have the same number of elements than x   IF nx NE ny THEN stop   define loc in a way that     if loc i  eq  1   :                 x2 i    x nx 1     else              :    x loc i   extrapolation   use x nx 2  and x nx 1  even if x2 i    x nx 1    extrapolation   loc   0   temporary loc     nx 2     distance between to consecutive x   deltax   x loc 1 x loc    distance between to consecutive y   deltay   y loc 1 y loc    relative distance between x2 i  and x loc i 1    a    x loc 1 x2 deltax   relative distance between x2 i  and x loc i    b   1 0d   a   compute the first derivative on x  see numerical recipes Chap 3 3    yfrst   temporary deltay deltax         1 0d 6 0d    3 0d a a   1 0d    deltax   yscd loc          1 0d 6 0d    3 0d b b   1 0d    deltax   yscd loc 1    beware of the computation precision     force near zero values to be exactly 0 0   zero   where abs yfrst  LT 1 e 10    IF zero 0  NE  1 THEN yfrst zero    0 0d    RETURN  yfrst END "); 
     51a[49] = new Array("./Interpolation/spl_incr.html", "spl_incr.pro", "", "             file_comments     Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   SPL_INCR function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that interpolated values are also monotonically increasing       examples  y2    spl_incr x  y  x2       param x1  in required   An n element  at least 2  input vector that specifies the      tabulate points in a strict ascending order          param y1  in required   f x    y  An n element input vector that specifies the values      of the tabulated function F Xi  corresponding to Xi  As f is      supposed to be monotonically increasing  y values must be      monotonically increasing  y can have equal consecutive values          param x2  in required   The input values for which the interpolated values are      desired  Its values must be strictly monotonically increasing              returns         y2: f x2    y2  Double precision array      restrictions     It might be possible that y2 i 1 y2 i  has very small negative     values  amplitude smaller than 1 e 6       examples          n   100L       x    dindgen n 2       y   abs randomn 0  n        y n 2:n 2 1    0        y n n 3    0        y n n 6:n n 6 5    0        y   total y   cumulative   double        x2   dindgen n 1 2        n2   n_elements x2        print  min y 1:n 1 y 0:n 2  LT 0       y2   spl_incr  x  y  x2        splot  x  y  xstyle   1  ystyle   1  ysurx 25  petit    1  2  1   land       oplot  x2  y2  color   100       c   y2 1:n2 1    y2 0:n2 2        print  min c  LT 0        print  min c  max   ma  ma       splot c xstyle 1 ystyle 1  yrange 01 05  ysurx 25  petit    1  2  2   noerase       oplot 0  n_elements c   0  0  linestyle   1      history    Sebastien Masson  smasson lodyc jussieu fr : May Dec 2005         FUNCTION pure_concave  x1  x2  y1  y2  der2  x   X n type   xx    double x double x1 double x2 double x1    f    double x2 double x1 double y2 double y1    n   der2 temporary f    res   xx n      IF check_math  GT 0 THEN BEGIN         zero   where abs res  LT 1 e 10          IF zero 0  NE  1 THEN res zero    0 0d     END   res   temporary res double y2 double y1 y1      IF array_equal sort res  lindgen n_elements res    NE 1 THEN stop   RETURN  res END  FUNCTION pure_convex  x1  x2  y1  y2  der2  x   1 1 X n type   xx   1 0d    double x double x1 double x2 double x1    f    double x2 double x1 double y2 double y1    n   der2 temporary f    res   xx n      IF check_math  GT 0 THEN BEGIN         zero   where abs res  LT 1 e 10          IF zero 0  NE  1 THEN res zero    0 0d     END   res   1 0d   temporary res    res   temporary res y2 y1 y1      IF array_equal sort res  lindgen n_elements res    NE 1 THEN stop   RETURN  res END       keyword    YP0 The first derivative of the interpolating function at the      point X0  If YP0 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline     keyword    YPN_1 The first derivative of the interpolating function at the      point Xn 1  If YPN_1 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline     FUNCTION spl_incr  x  y  x2  YP0   yp0  YPN_1   ypn_1       check and initialisation       nx   n_elements x    ny   n_elements y    nx2   n_elements x2    x must have at least 2 elements   IF nx LT 2 THEN stop    y must have the same number of elements than x   IF nx NE ny THEN stop   x be monotonically increasing   IF min x 1:nx 1 x 0:nx 2  LE 0 THEN stop    x2 be monotonically increasing   IF N_ELEMENTS X2  GE 2 THEN     IF min x2 1:nx2 1 x2 0:nx2 2   LE 0 THEN stop    y be monotonically increasing   IF min y 1:ny 1 y 0:ny 2  LT 0 THEN stop      first check: check if two consecutive values are equal     bad   where y 1:ny 1 y 0:ny 2  EQ 0  cntbad    IF cntbad NE 0 THEN BEGIN   define the results: y2       y2   dblarr nx2    define xinx2: see help of value_locate    if xinx2 i  eq  1   :                 x bad i    x2 nx2 1     else                : x2 xinx2 i    x2 nx2 1     else                : x2 xinx2 i   we have middle pieces for which    we force yp0   0 0d and ypn_1   0 0d       IF cntbad GT 1 THEN BEGIN   we take care of the piece located wetween bad ib 1  and bad ib          FOR ib   1  cntbad 1 DO BEGIN   if there is x2 values smaller that x bad ib  then the x2 values   located between bad ib 1  and bad ib  are  xinx2 ib 1 1:xinx2 ib            IF xinx2 ib  NE  1 THEN begin             y2 xinx2 ib 1 1   0                y i 1    y i      2  y  reach its minimum value between  x i  and x i 1            0  y i 1    0   y i      we do a first selection by looking for those points      loc   lindgen nx 1    maybebad   where yscd loc  LE 0 0d AND yscd loc 1  GE 0 0d  cntbad      IF cntbad NE 0 THEN BEGIN      mbbloc   loc maybebad       aaa    yscd mbbloc 1 yscd mbbloc 6 0d x mbbloc 1 x mbbloc      bbb   0 5d   yscd mbbloc      ccc   yifrst mbbloc      ddd   y mbbloc      definitive selection:   y  can become negative if and only if  2b 2   4 3a c   0   y  can become negative if and only if    b 2     3a c   0       delta   bbb bbb   3 0d aaa ccc       bad   where delta GT 0  cntbad        IF cntbad NE 0 THEN BEGIN       delta   delta bad        aaa   aaa bad        bbb   bbb bad        ccc   ccc bad        ddd   ddd bad        bad   maybebad bad    define xinx2_1: see help of value_locate    if xinx2_1 i  eq  1   :                   x bad i    x2 nx2 1     else                  : x2 xinx2_1 i    x2 nx2 1     else                  : x2 xinx2_2 i   y bad ib 1  then we cannot applay the method we want to   apply   we use then convex concave case by changing by hand the   value of yinfl and xinfl                   IF yzero GT y bad ib 1  THEN BEGIN                     yinfl   0 5d y bad ib 1 y bad ib                      xinfl   0 5d x bad ib 1 x bad ib                      GOTO  convexconcave                   ENDIF   define xinx2_3: see help of value_locate    if xinx2_3 ib  eq  1   :                x bad ib xzero   x2 nx2 1     else                   : x2 xinx2_3   we use then convex concave case by changing by hand the   value of yinfl and xinfl                   IF yzero lt y bad ib  THEN BEGIN                     yinfl   0 5d y bad ib 1 y bad ib                      xinfl   0 5d x bad ib 1 x bad ib                      GOTO  convexconcave                   ENDIF   define xinx2_3: see help of value_locate    if xinx2_3 ib  eq  1   :                x bad ib xzero   x2 nx2 1     else                   : x2 xinx2_3    x2 nx2 1     else                   : x2 xinx2_3    x bad ib xzero    x2 xinx3_2 1                    xinx2_3   value_locate x2  x bad ib xinfl                     IF xinx2_3 ge xinx2_1 ib 1 THEN BEGIN                     y2 xinx2_1 ib 1:xinx2_3                            pure_convex x bad ib  x bad ib xinfl                                          y bad ib  yinfl                                          yifrst bad ib                                          x2 xinx2_1 ib 1:xinx2_3                                         ENDIF                                   IF xinx2_2 ib  GE xinx2_3 1 THEN BEGIN                     y2 xinx2_3 1:xinx2_2 ib                            pure_concave x bad ib xinfl  x bad ib 1                                           yinfl  y bad ib 1                                           yifrst bad ib 1                                           x2 xinx2_3 1:xinx2_2 ib                    ENDIF                                 END               ENDCASE              END            ENDCASE         ENDIF       ENDFOR      ENDIF   ENDIF     RETURN  y2         END"); 
     52a[50] = new Array("./Interpolation/spl_keep_mean.html", "spl_keep_mean.pro", "", "           file_comments     Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   SPL_INCR function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that integral of the interpolated values is the same as the   integral of the input values    for exemple to build daily data   from monthly mean and keep the monthly mean of the computed daily   data equa to the original values       examples  y2    spl_keep_mean x  y  x2          param x  in required   An n element  at least 2  input vector that specifies the      tabulate points in a strict ascending order          param yin  in required   an array with one element less than x  y i  represents the      mean value between x i  and x i 1  if  GE0 is activated  y must      have positive values          param x2  in required   The input values for which the interpolated values are      desired  Its values must be strictly monotonically increasing          keyword     GE0 to force that y2 is always GE than 0  In that case  y must      also be GE than 0       keyword    YP0 The first derivative of the interpolating function at the      point X0  If YP0 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline       keyword    YPN_1 The first derivative of the interpolating function at the      point Xn 1  If YPN_1 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline        returns         y2: the meean value between two consecutive values of x2  This      array has one element less than y2  y2 has double precision       restrictions     It might be possible that y2 has very small negative values      amplitude smaller than 1 e 6          examples         12 monthly values of precipitations into daily values:        yr1   1990      yr2   1992      nyr   yr2 yr1 1      n1   12 nyr 1      x   julday 1 findgen n1  replicate 1  n1                  replicate yr1  n1  fltarr n1       n2   365 nyr   total leapyr yr1 indgen nyr    1      x2   julday replicate 1  n2  1 findgen n2                      replicate yr1  n2  fltarr n2       y   abs randomn 0  n1 1       y2   spl_keep_mean x  y  x2   ge0        print  min x  max   ma  ma      print  min x2  max   ma  ma      print  vairdate min x  max   ma  ma       print  total y x 1:n1 1 x 0:n1 2       print  total y2 x2 1:n2 1 x2 0:n2 2       history    Sebastien Masson  smasson lodyc jussieu fr : May 2005         FUNCTION spl_keep_mean  x  yin  x2  YP0   yp0  YPN_1   ypn_1  GE0   ge0       check and initialisation         nx   n_elements x    ny   n_elements yin    nx2   n_elements x2    x must have at least 2 elements   IF nx LT 2 THEN stop    x2 must have at least 2 elements   IF nx2 LT 2 THEN stop    x be monotonically increasing   IF min x 1:nx 1 x 0:nx 2  LE 0 THEN stop    x2 be monotonically increasing   IF min x2 1:nx2 1 x2 0:nx2 2   LE 0 THEN stop        compute the integral of y     if spl_keep_mean is called by the user  and not by itself  we must compute   the integral of y  yin must have one element less than x   IF nx NE ny 1 THEN stop   y   double yin double x 1:nx 1 x 0:nx 2    y    0 0d  temporary y    y   total temporary y   cumulative   double        compute the  spline  interpolation       IF keyword_set ge0  THEN BEGIN   if the want that the interpolated values are always   0  we must   have yin   0 0d     IF min yin  LT 0 THEN stop   call spl_incr     y2   spl_incr x  temporary y  x2  yp0   yp0  ypn_1   ypn_1    ENDIF ELSE BEGIN     yscd   spl_init x  y  yp0   yp0  ypn_1   ypn_1   double      y2   spl_interp x  y  temporary yscd  x2   double    ENDELSE                        Compute the derivative of y       yfrst    y2 1:nx2 1 y2 0:nx2 2 x2 1:nx2 1 x2 0:nx2 2    it can happen that we have very small negative values  1 e 6 for ex     yfrst   0 0d   temporary yfrst    RETURN  yfrst           END"); 
     53a[51] = new Array("./Interpolation/square2quadrilateral.html", "square2quadrilateral.pro", "", "       file_comments warm  or map  a unit square onto an arbitrary quadrilateral   according to the 4 point correspondences:          0 0     x0 y0           1 0     x1 y1           1 1     x2 y2           0 1     x3 y3    The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  bellow       categories image  grid manipulation      examples          res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin     FUNCTION square2quadrilateral  x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  xxin  yyin        param x0in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param y0in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param x1in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param y1in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param x2in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param y2in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param x3in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order         param y3in  in required   the coordinates of the quadrilateral        see above for correspondance with the unit square  Can be       scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are       given in the anticlockwise order           param xxin  in required  the coordinates of the point s  for which we want to do the       mapping  Can be scalar or array         param yyin  in required  the coordinates of the point s  for which we want to do the       mapping  Can be scalar or array       returns          2 n  array: the new coodinates  xout  yout  of the  xin yin        point s  after mapping         If xin is a scalar  then n is equal to the number of elements of       x0  If xin is an array   then n is equal to the number of       elements of xin        If xin and yin are omited  square2quadrilateral returns the       matrix A which is used for the inverse transformation          restrictions I think degenerated quadrilateral  e g  flat of   twisted  is not work  This has to be tested       examples      IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20      history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56                 FUNCTION square2quadrilateral  x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  xxin  yyin     Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      IF arg_present xxin  THEN BEGIN       xin   double xxin        yin   double yyin      ENDIF   ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      IF arg_present xxin  THEN BEGIN       xin   float xxin        yin   float yyin      ENDIF   ENDELSE     IF keyword_set double  THEN a   dlbarr 8  n_elements x0      ELSE a   fltarr 8  n_elements x0       delx3   x0 x1 x2 x3   dely3   y0 y1 y2 y3     affinemap   where delx3 EQ 0 AND dely3 EQ 0    IF affinemap 0  NE  1 THEN BEGIN     xx0   x0 affinemap      xx1   x1 affinemap      xx2   x2 affinemap      yy0   y0 affinemap      yy1   y1 affinemap      yy2   y2 affinemap        a 0  affinemap    xx1 xx0     a 1  affinemap    xx2 xx1     a 2  affinemap    xx0     a 3  affinemap    yy1 yy0     a 4  affinemap    yy2 yy1     a 5  affinemap    yy0     a 6  affinemap    0     a 7  affinemap    0   ENDIF     projectivemap   where delx3 NE 0 OR dely3 NE 0    IF projectivemap 0  NE  1 THEN BEGIN     xx0   x0 projectivemap      xx1   x1 projectivemap      xx2   x2 projectivemap      xx3   x3 projectivemap      yy0   y0 projectivemap      yy1   y1 projectivemap      yy2   y2 projectivemap      yy3   y3 projectivemap            delx1   xx1 xx2     dely1   yy1 yy2     delx2   xx3 xx2     dely2   yy3 yy2     delx3   delx3 projectivemap      dely3   dely3 projectivemap        div   delx1 dely2 dely1 delx2     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     a13    delx3 dely2 dely3 delx2 div     a23    delx1 dely3 dely1 delx3 div       a 0  projectivemap    xx1 xx0 a13 xx1     a 1  projectivemap    xx3 xx0 a23 xx3     a 2  projectivemap    xx0     a 3  projectivemap    yy1 yy0 a13 yy1     a 4  projectivemap    yy3 yy0 a23 yy3     a 5  projectivemap    yy0     a 6  projectivemap    a13     a 7  projectivemap    a23   ENDIF         IF NOT arg_present xxin  THEN return  a     IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0       yin   replicate yin  n_elements x0     ENDIF     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin    IF n_elements x0  EQ 1 THEN BEGIN     div   a 6 xin    a 7 yin    1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0 xin    a 1 yin    a 2 div     res 1       a 3 xin    a 4 yin    a 5 div   ENDIF ELSE BEGIN     div   a 6   xin  a 7   yin   1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0   xin    a 1   yin    a 2   div     res 1       a 3   xin    a 4   yin    a 5   div   ENDELSE     RETURN  res END"); 
     54a[52] = new Array("./Interpolation/testinterp.html", "testinterp.pro", "", "    PRO testinterp    method    bilinear     method    imoms3        jpia   300L   jpja   200L   torg   findgen jpia  jpja    xorg    20 d   360 d jpia dindgen jpia    yorg    89 d   178 d jpja 1 dindgen jpja      jpio   400L   jpjo   150L   xnew    0 d   360 d jpio dindgen jpio    ynew    89 5d   179 d jpjo 1 dindgen jpjo        outnorth   where ynew GT yorg jpja 2  noutn    outsouth   where ynew LT yorg 1  nouts     t2   fromreg method  torg  xorg  yorg  xnew  ynew     t3   fromreg method  reverse torg  2  xorg  reverse yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok1      xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  torg2  xorg2  yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok2      xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok3      xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    t3   fromreg method  torg2  xorg2  yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok4     xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew    IF  array_equal t2  t3  EQ 0 THEN stop ELSE print   ok5     t3   fromreg method  torg  xorg  yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok6    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok7  i   t3   fromreg method  torg  xorg  yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok8    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok9  i     t3   fromreg method  reverse torg  2  xorg  reverse yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok10    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok11  i   t3   fromreg method  reverse torg  2  xorg  reverse yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok12    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok13  i    xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop    t3   fromreg method  torg2  xorg2  yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok14    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok15  i    xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  torg2  xorg2  yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok16    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok17  i    xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew   nonorthernline    IF  array_equal t2  0:jpjo 1 noutn  t3  0:jpjo 1 noutn  EQ 0 THEN stop ELSE print   ok18    FOR i   1  noutn 1 DO if array_equal t3  jpjo 1  t3  jpjo 1 i  EQ 0 THEN stop ELSE print   ok19  i     xshift   20   torg2   shift torg  xshift  0    xorg2   shift xorg  xshift    xorg2 0: xshift 1    xorg2 0: xshift 1 360   IF array_equal sort xorg2  lindgen n_elements xorg2  EQ 0 THEN stop   t3   fromreg method  reverse torg2  2  xorg2  reverse yorg  xnew  ynew   nosouthernline    IF  array_equal t2  nouts:  t3  nouts:  EQ 0 THEN stop ELSE print   ok20    FOR i   1  nouts 1 DO if array_equal t3  0  t3  i  EQ 0 THEN stop ELSE print   ok21  i     return end"); 
    5555a[53] = new Array("./Obsolete/common.html", "common.pro", "", ""); 
    5656a[54] = new Array("./Obsolete/cp.html", "cp.pro", "", "           file_comments copy files    obsolete    file_comments file_copy should be used instead       history   June 2005: Sebastien Masson   obsolete routine            PRO cp  filenamein  filenameout  _extra   ex   file_copy  filenamein  filenameout  _extra   ex   RETURN END"); 
     
    5959a[57] = new Array("./Obsolete/imprime.html", "imprime.pro", "", "           file_comments  use printps instead     obsolete      history   June 2005: Sebastien Masson  english version         PRO imprime  filename  TRANS   trans  NB   nb     this is working only with unix linux osX machines   thisOS   strupcase strmid version os_family  0  3    CASE thisOS OF       MAC :return      WIN :return     ELSE:   ENDCASE     call printps     CASE N_PARAMS  OF     0:printps     1:printps  filename     ELSE: BEGIN        ras   report imprime accept only one element: psfilename        return     END    ENDCASE            return END  "); 
    6060a[58] = new Array("./Obsolete/jourdsmois.html", "jourdsmois.pro", "", "           file_comments used daysinmonth instead     obsolete      history Sebastien Masson  smasson lodyc jussieu fr    June 2005: Sebastien Masson  english version         function jourdsmois  mois  annee  case n_params  OF   0:return  daysinmonth    1:return  daysinmonth mois    2:return  daysinmonth mois  annee  endcase  end"); 
    61 a[59] = new Array("./Obsolete/juldate.html", "juldate.pro", "", "           file_comments you better use date2jul    obsolete      file_comments  gives julian date equivalent of a date in vairmer                yymmdd or yyyymmdd   format              sets month  day and year to the corresp values      categories calendar      param vvdate  in  date de la forme yymmdd ou yyyymmdd      keyword  VRAIDATE pour ne pas transformer l annnee 01 en 1901     keyword  GRADS if  1 le year le 49 then year   2000 year                 if 50 le year le 99 then year   1900 year      uses common pro vraidate      returns date en jour julien     l annee 0 n existant pas  qd year est nulle on calcule le       jour julien de l annee  1      COMPATIBLE AVEC L AN 2000  : une date de la forme yymmdd est      donvertit sous la forme yyyymmdd a l aide de vraidate      Attention  les variables globales year  month day sont attribuees      examples    IDL  date   juldate 930124       history Jerome Vialard   jv lodyc jussieu fr    2 7 98         function juldate  vvdate  _EXTRA   ex vdate   vvdate vdate   vraidate vdate  _EXTRA   ex   common      year vdate 10000    month vdate 100   year 100    day abs vdate   year 10000   month 100     month   abs month       mm   month   dd   day   yy   year      ndate   n_elements vdate      if total mm EQ 0  EQ ndate then mm    6    if total dd EQ 0  EQ ndate then dd    15    if total yy EQ 0  EQ ndate THEN yy     1      return  julday mm dd yy  _EXTRA   ex       return   1 end   "); 
     61a[59] = new Array("./Obsolete/juldate.html", "juldate.pro", "", "           file_comments you better use date2jul    obsolete      file_comments  gives julian date equivalent of a date in vairmer                yymmdd or yyyymmdd   format              sets month  day and year to the corresp values      categories calendar      param vvdate  in  date de la forme yymmdd ou yyyymmdd      uses common pro vraidate      returns date en jour julien     l annee 0 n existant pas  qd year est nulle on calcule le       jour julien de l annee  1      COMPATIBLE AVEC L AN 2000  : une date de la forme yymmdd est      donvertit sous la forme yyyymmdd a l aide de vraidate      Attention  les variables globales year  month day sont attribuees      examples    IDL  date   juldate 930124       history Jerome Vialard   jv lodyc jussieu fr    2 7 98         function juldate  vvdate  _EXTRA   ex vdate   vvdate vdate   vraidate vdate  _EXTRA   ex   common      year vdate 10000    month vdate 100   year 100    day abs vdate   year 10000   month 100     month   abs month       mm   month   dd   day   yy   year      ndate   n_elements vdate      if total mm EQ 0  EQ ndate then mm    6    if total dd EQ 0  EQ ndate then dd    15    if total yy EQ 0  EQ ndate THEN yy     1      return  julday mm dd yy  _EXTRA   ex       return   1 end  "); 
    6262a[60] = new Array("./Obsolete/lec.html", "lec.pro", "", "           file_comments         lit les fichiers Vairmer en sort:  un tableau 2d ou 3d en fonction de nomchamp qui est le nom  du champ a extaire  2d s il commence par SO et 3d s il commence par VO   cette fonction modifie aussi les variables globales:  varname: trois lettres: nom de l experience  vargrid: nom de la grille  vardate: date  yy yymmdd  varexp: nom Vairmer du champ a tarcer      obsolete    categories Graphics  lecture de fichier Vaimer      examples   IDL resultat lec nom_Vairmer date nom_experience       param nomchamp  in required  2 choix possibles:               1  nom de champ Vairmer  chaine de 8 caracteres en majuscule ou    minuscule commencant par vo ou so  Dans cette methode on saute directement   d en tete en en tete jusqu a trouver le bon fichier                2  chaine de characteres commencant par vo ou so suivit du   numero de champ a aller chercher  par ex  vo5  Cette methode est un peu   plus rapide car elle va directement chercher le fichier qui nous interesse       param date  in optional  nombres de 6 ou 8 chiffres  anneemoisjour  par ex:19980507     param nomexp  in optional  trois lettres designant le nom de l experience        keyword  ANOM  in  type du fichier vairmer par rapport auquel on doit calculer                l anomalie  EX AN SE MO       keyword  ECRIT  in  permet d imprimer tous les noms vairmer que contient le fichier    ds ce cas en input on met seulement  vo  ou  so  la fonction retourne le   nombre de fichiers lus       keyword  EXPANOM  in  si on calcule l anom par rapport a une exper         differente      keyword FILENAME string pour passer directement le nom du champ sans         utiliser les inputs: nom_Vairmer date nom_experience  Rq si         ces inputs sont qd meme donnes ils ne sont pas modifies par         filename       keyword  GRID lorsque ce mot clef est active  lec retourne la liste         des types de grilles  T  U  auxquelles se rapportent les         variables  ds ce cas en input on met seulement  vo  ou  so       keyword  NAME lorsque ce mot clef est active  lec retourne la liste         des noms des variables  ds ce cas en input on met seulement          vo  ou  so       keyword  TOUT  oblige lec a lire le champ sur tout le domaine qui a         etait selectionne pour la cession en cours  jpi jpj jpk       returns un tableau 2 ou 3d  sans le mot cle  TOUT  sa taille est   celle du sous domaine definit par domdef  nx ny nz  avec  TOUT le   champ a la taille du  domaine qui a etait selectionne pour la   cession en cours  jpi jpj jpk     pour les sous domaines cf:            http: www ipsl jussieu fr smlod sousdomaine html   Retourne  1 en cas d erreur       uses common pro isnumber pro fivardate pro        history Sebastien Masson  smasson lodyc jussieu fr   26 5 98                         Jerome Vialard : adaptation au format vairmer                                          keyword anom et expanom  1 7 98                         Sebastien Masson  masque des terres   14 8 98                         Sebastien Masson  decoupe pour les sous domaines   2 99         function lec  nomchamp date nomexp ECRIT ecrit ANOM anom  BOITE   boite EXPANOM expanom  TOUT   tout  GRID   grid  NAME   name  filename   FILENAME  common    tempsun   systime 1            pour key_performance    z    1      if keyword_set filename  then BEGIN       CASE strupcase strmid version os_family  0  3  of           MAC :sep    :            WIN :sep              ELSE:sep           ENDCASE       fname   strmid filename  rstrpos filename  sep 1        if n_elements nomchamp  EQ 0 then nomchamp   strmid fname 6  2        if n_elements date  EQ 0 then date   long strmid fname 8        if n_elements nomexp  EQ 0 then nomexp   strmid fname 0  3     endif      nomchamp strupcase nomchamp     dim string format a2 nomchamp   print   nom de l experience:  nomchamp     specification de la date et de l experience      case n_params  OF       0:BEGIN          if keyword_set filename  then begin             rien juldate date              prefix nomexp          ENDIF ELSE return  report Donnez un argument en entree ou utilisez le mot clef FILENAME        END       1:date long day long month 100 long year 10000       2:rien juldate date        3:begin          rien juldate date           prefix nomexp       end    endcase     verification de la dim du fichier      if dim ne  SO  and dim ne  VO  then return  report le nom du champ doit commencer par VO ou SO        constitution de l adresse ou aller chercher le fichier      s_fichier ficdate date dim      ouverture du fichier a l adresse s_fichier      openr  numlec  s_fichier   get_lun ERROR err   swap_if_little_endian    if err ne 0 then begin    print err_string       return   1    endif  taille en octet du fichier    infofichier fstat numlec      definition de la taille du fichier a aller chercher: jpidta jpjdta jpkdta       if n_elements jpidta  EQ 0 THEN BEGIN        if n_elements ixmindta  EQ 0 OR n_elements ixmaxdta  EQ 0 then          jpidta   jpiglo else jpidta   ixmaxdta ixmindta 1    endif    if n_elements jpjdta  EQ 0 THEN BEGIN        if n_elements iymindta  EQ 0 OR n_elements iymaxdta  EQ 0 then          jpjdta   jpjglo else jpjdta   iymaxdta iymindta 1    endif    if n_elements jpkdta  EQ 0 THEN BEGIN        if n_elements izmindta  EQ 0 OR n_elements izmaxdta  EQ 0 then          jpkdta   jpkglo else jpkdta   izmaxdta izmindta 1    endif     lecture des champs directement vers le champ ou l en tete que l on recherche   il faut savoir que:    le fortran ajoute au debut et a la fin de chaque write 4 octets de controle    les reels du model sont codes sur 4 octets    un charactere fait 1 octet    4 chaines de 8 characteres un tableau de reels 4 trucs de controle  pour les   2 write :    if dim eq  VO  then       taillebloc 4 8 long jpidta jpjdta jpkdta 4 4 4 else       taillebloc 4 8 long jpidta jpjdta 4 4 4     choix du type de lecture      typelec strmid nomchamp 2 strlen nomchamp     test isnumber typelec numerochamp     if test eq 0 then begin     1  LECTURE DIRECTE D EN TETE en EN TETE         numerochamp 1     lecture des noms de champ         resname           resgrid           while numerochamp taillebloc le infofichier size do begin          offset numerochamp 1 taillebloc 4          a assoc numlec bytarr 8 nozero  offset           varname string a 0           if keyword_set ecrit  OR keyword_set name  OR keyword_set grid              then begin             vargrid a 1              vargrid string vargrid 7              vardate strtrim long string a 2  2              varexp strtrim a 3  2              if keyword_set ecrit  THEN                print  numerochamp   varname   vargrid   vardate   varexp             resname    resname  varname              resgrid    resgrid  vargrid           endif          if nomchamp eq varname then begin             vargrid a 1              vargrid string vargrid 7              vardate strtrim long string a 2  2              varexp strtrim a 3  2              goto sortieboucle          endif          numerochamp numerochamp 1       ENDWHILE       free_lun numlec       close  numlec       case 1 of          keyword_set ecrit :return  numerochamp 1          keyword_set name :return  resname 1:numerochamp 1           keyword_set grid :            return  strmid resgrid 1:numerochamp 1 0    strlen resgrid 0 2           ELSE:return  report Ce nom Vairmer de champ n existe pas ds le fichier:  infofichier name        endcase    endif else begin     2  LECTURE DIRECTEMENT DU CHAMP QUE L ON VEUT       test pour savoir si numero de champ est accessible         if taillebloc numerochamp gt infofichier size then          return  report Ce numero de champ n exite pas  Le fichier  infofichier name  ne contient que  infofichier size taillebloc  champs      lecture de l en tete numero numerochamp         offset numerochamp 1 taillebloc 4       a assoc numlec bytarr 8 nozero  offset        varname string a 0        vargrid a 1        vargrid string vargrid 7        vardate string a 2        varexp string a 3     endelse sortieboucle:     lecture du champ lui meme      offset numerochamp 1 taillebloc 8 4 8 4    if dim eq  VO  then       a assoc numlec fltarr jpidta jpjdta jpkdta nozero  offset  else       a assoc numlec fltarr jpidta jpjdta nozero  offset     z a 0      on initialise les ixmindta  iymindta  au besoin      if n_elements ixmindta  EQ 0 OR n_elements ixmaxdta  EQ 0 then BEGIN       ixmindta   0       ixmaxdta   jpidta 1    endif    if n_elements iymindta  EQ 0 OR n_elements iymaxdta  EQ 0 then BEGIN       iymindta   0       iymaxdta   jpjdta 1    endif    if n_elements izmin  EQ 0 OR n_elements izmax  EQ 0 then BEGIN       izmindta   0       izmaxdta   jpkdta 1    endif     on reduit z selon les valeurs de ixmindta  iymindta         if dim EQ  SO  then z   z ixminmesh ixmindta:ixmaxmesh ixmindta                                 iyminmesh iymindta:iymaxmesh iymindta       ELSE z   z ixminmesh ixmindta:ixmaxmesh ixmindta                   iyminmesh iymindta:iymaxmesh iymindta  izminmesh izmindta:izmaxmesh izmindta      on shift z si key_shift est defininit      if n_elements key_shift  NE 0 THEN BEGIN        if dim EQ  SO  then z   shift z key_shift  0          ELSE z   shift z key_shift  0  0     endif      si  TOUT n est pas active  on coupe z pour q il soit a la taille    du zoom: nx ny nz      if NOT keyword_set tout  then BEGIN      changement de domaine         if keyword_set boite  then BEGIN           Case 1 Of             N_Elements Boite  Eq 1:bte lon1  lon2  lat1  lat2  0 boite 0              N_Elements Boite  Eq 2:bte lon1  lon2  lat1  lat2  boite 0 boite 1              N_Elements Boite  Eq 4:bte Boite  prof1  prof2              N_Elements Boite  Eq 5:bte Boite 0:3  0  Boite 4              N_Elements Boite  Eq 6:bte Boite             Else: return  report Mauvaise Definition de Boite           endcase          oldboite    lon1  lon2  lat1  lat2  prof1  prof2           domdef  bte GRILLE vargrid       ENDIF          grille mask glam gphi gdep nx ny nz premierx premiery premierz dernierx derniery dernierz       if nx EQ 1 OR ny EQ 1 OR nz EQ 1 then mask   reform mask  nx  ny  nz   over        if dim EQ  SO  then z   z premierx:dernierx  premiery:derniery           ELSE z   z premierx:dernierx  premiery:derniery  premierz:dernierz     ENDIF ELSE BEGIN        case vargrid OF             on recupere le mask en entier ds le cas ou  TOUT           U :mask   umask        n est pas active et on le choisit en fontion           T :mask   tmask          de la valeur de vargrid           W :mask   tmask                  V :mask   vmask            F :mask   fmask        ENDCASE    ENDELSE      calcul d une anomalie si le keyword anom est active      if keyword_set anom  then begin       case anom of           EX  : adate   0           AN  : adate   floor date 10000 10000            SE  : adate   floor date   floor date 10000 10000 100   100           MO  : adate   floor date 100 100           DA  : adate   date   floor date 10000 10000              : adate   date   floor date 10000 10000          else : return  report Anom doit etre egal a EX AN SE MO DA         endcase       if keyword_set expanom  then nomexpa   expanom         else nomexpa   nomexp       if keyword_set bavard  THEN print  nomchamp     adate     nomexpa       z   z   lec nomchamp adate nomexpa  TOUT   tout     endif     on masque les terres par valmask      IF n_elements valmask  EQ 0 THEN valmask   1e20    if dim EQ  SO  then BEGIN        terre   where mask 0  EQ 0        if terre 0  NE  1 then z terre    valmask     ENDIF ELSE BEGIN        terre   where mask 0  EQ 0        if terre 0  NE  1 then z where mask EQ 0    valmask    ENDELSE       free_lun numlec    close  numlec      if n_elements oldboite  NE 0 then domdef   oldboite    IF keyword_set key_performance  EQ 1 THEN print   temps lec  systime 1 tempsun      return reform z   end "); 
    6363a[61] = new Array("./Obsolete/lect.html", "lect.pro", "", "                file_comments         lit les fichiers Vairmer de date1 a date2 et en sort un tableau         1D  2D ou 3D qui peut etre reutilise pour une courbe   hov   animation  cette fonction modifie aussi les variables globales:  varname: huit lettres: nom Vairmer du champ a tracer  vargrid:1 lettre : nom de la grille  varexp: trois lettres :nom de l experience      obsolete      categories Graphics  lecture de fichier Vaimer      examples   IDL  resultat lec nom_Vairmer date1 date2 nomexp direc BOITE boite       param nomchamp  in required  nom de champ Vairmer  chaine de 8 caracteres commencant                      par VO ou SO            param date1  in required  date de depart de la serie temporelle a            param date2  in required  date de fin  date2  de la serie temporelle a               extraire          param nomexp  in required  nom de l  experience a lire  prefix pardefaut             param direc   in required   x   y   z   xy   xz   yz   xyz   xt   yt   zt   xyt   xzt           yzt   xyzt  directions selon lesquelles effectuer les moyennes          si rien n est donne on n effectue pas de moyenne                 keyword boite  in  boite sur laquelle integrer  par defaut tt le domaine           keyword  anom  in  type de fichiers  SE AN  a relire pour calc une   anomalie              keyword expanom  in  experience pour laquelle on veut calculer une anomalie    par defaut la meme que nomexp       uses common vraidate juldate      history Jerome Vialard  jv lodyc jussieu fr    2 7 98                            1      2      3    4      5        function lect  nomchamp date1 date2 nomexp direc BOITE boite                   ANOM anom EXPANOM expanom  REPEAT repeat  common    tempsun   systime 1            pour key_performance      nomchamp   strupcase nomchamp     date1 vraidate date1     date2 vraidate date2       dim string format a2 nomchamp        specification de la date et de l experience        if fictype date1  ne fictype date2  then       return  report Les deux dates doivent correspondre au meme type de fic vairmer     fictyp   fictype date1       creation du nom du fichier      if n_elements nomexp  EQ 0 then nomexp   prefix    ficname iodir nomchamp strcompress date1 remove_all     ficname ficname  fictyp strcompress date2 remove_all nomexp    if  keyword_set anom  then ficname ficname  anom    if  keyword_set expanom  then ficname ficname  expanom    case n_elements boite  of        4 : box   strcompress string format i4 _ i4 _ i4 _ i4 boite                                 remove_all        6 : box   strcompress string format i4 _ i4 _ i4 _ i4 _ i4 _ i4 boite remove_all        else: box  strcompress string format i4 _ i4 _ i4 _ i4 _ i4 _ i4 lon1 lon2 lat1 lat2 prof1 prof2 remove_all     ENDCASE    if n_elements direc  EQ 0 then direc        ficname ficname box direc hovdat      Est ce que le fichier de hovmoller existe         structure du fichier :   jpt  valeur de la dim temporelle  dimtableau  dimension du tableau     dimttab 0  dimttab 1     valeur des dim     time  axe des tps  ttab  tableau a lire    def du domaine  lon1 lon2    prof1 prof2       get_lun  numlec    openr  numlec  ficname   get_lun ERROR err   swap_if_little_endian    if  err eq 0  then begin       jpt   long 1        dimtableau   long 1        readu  numlec  jpt dimtableau       case dimtableau of           1 : begin             n1   long 1              readu  numlec n1             ttab   fltarr n1           end          2 : begin             n1   long 1              n2   long 1              readu  numlec n1 n2             ttab   fltarr n1 n2           end          3 : begin             n1   long 1              n2   long 1              n3   long 1              readu  numlec n1 n2 n3             ttab   fltarr n1 n2 n3           end       endcase       time   lonarr jpt    lecture axe des tps et du tableau       readu  numlec time  ttab       newboite   fltarr 6    lecture du domaine       readu  numlec newboite       domdef  newboite   lecture info complementaire : nom du champs  de l experience       varname aaaaaaaa        readu  numlec  varname       vargrid a        readu  numlec  vargrid       varexp aaa        readu  numlec  varexp         close  numlec       free_lun  numlec       return  ttab    ENDIF    close  numlec    free_lun  numlec     changement de domaine      if keyword_set boite  then BEGIN        Case 1 Of          N_Elements Boite  Eq 1:bte lon1  lon2  lat1  lat2  0 boite 0           N_Elements Boite  Eq 2:bte lon1  lon2  lat1  lat2  boite 0 boite 1           N_Elements Boite  Eq 4:bte Boite  prof1  prof2           N_Elements Boite  Eq 5:bte Boite 0:3  0  Boite 4           N_Elements Boite  Eq 6:bte Boite          Else: return  report Mauvaise Definition de Boite        endcase       oldboite    lon1  lon2  lat1  lat2  prof1  prof2        domdef  bte    ENDIF        Boucle de lecture des fichiers       case fictyp of        DA  : dec   0         MO  : dec   14         SE  : dec   14         AN  : dec   182     endcase  initialisation des variables associees au tps    time   lonarr jptmax     jpt   0    vdat   date1   debut de la boucle    while  vdat le date2  do begin     lecture du fichier a la date vdat  vairmer          tab   lec nomchamp vdat nomexp ANOM anom EXPANOM expanom      attribution du mask et des tableaux de longitude et latitude          if jpt EQ 0 THEN grille  mask  glam  gphi  gdep  nx  ny nz premierx premiery premierz dernierx  derniery  dernierz         if  n_elements tab  eq 1 and tab 0  eq  1  then begin          goto  incrdate       endif else begin          jpt   jpt   1          if  jpt gt jptmax  then return  report lect : augmenter jptmax        endelse     Moyenne du champs tab         IF n_params  EQ 5 THEN if direc NE   then BEGIN           if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN BEGIN              if string format a2 nomchamp  EQ  SO  then tab   reform tab  nx  ny   over                ELSE tab   reform tab  nx  ny  nz   over           ENDIF           tab   moyenne tab direc        endif       if  jpt eq 1  then begin          ttab   tab       endif else BEGIN           ttab   colle ttab  tab   size tab 0 1         endelse       time jpt 1    juldate vdat dec     Incrementation de la date         incrdate :       case fictyp of           DA  : caldat juldate vdat 1 month day year           MO  : begin             caldat julday month 1 year jourdsmois month day year             day 0          end           SE  : month month 1           AN  : year year 1       endcase       Fin de boucle de lecture des fichiers          vdat long 10000 year long 100 month day    ENDWHILE    if ttab 0  EQ  1 then return  report Aucun fichier n a ete lu        Ecriture du fichier      get_lun  numlec    openw  numlec  ficname   get_lun   swap_if_little_endian    taille   size ttab     writeu  numlec  long jpt long taille 0     case taille 0  of        1 : writeu  numlec long taille 1        2 : writeu  numlec long taille 1 long taille 2        3 : writeu  numlec long taille 1 long taille 2 long taille 3     endcase    writeu  numlec long time 0:jpt 1  ttab    writeu  numlec float lon1  lon2  lat1  lat2  prof1  prof2    ecriture info complementaire : nom du champs  de l experience    writeu  numlec  strmid varname 0 8     writeu  numlec  strmid vargrid 0 1     writeu  numlec  strmid varexp 0 3       close  numlec    free_lun  numlec    if keyword_set repeat  then begin     jpt   jpt   repeat     if  jpt gt jptmax  then begin       print   lect : augmenter jptmax        goto  fini     endif     tabadd   ttab     ti  endif      if n_elements oldboite  NE 0 then domdef   oldboite      close   all      IF keyword_set key_performance  THEN print   temps lect  systime 1 tempsun       return  ttab  end    "); 
     
    6565a[63] = new Array("./Obsolete/ncdf_meshlec.html", "ncdf_meshlec.pro", "", "           file_comments use ncdf_meshread instead     obsolete      history   Aug  2005  Sebastien Masson: switch to ncdf_meshread         PRO ncdf_meshlec  filename  _EXTRA   ex     CASE n_params  OF     0:ncdf_meshread  _EXTRA   ex     1:ncdf_meshread  filename  _EXTRA   ex   ENDCASE     return END"); 
    6666a[64] = new Array("./Obsolete/nlec.html", "nlec.pro", "", "           file_comments lit les fichiers Net Cdf de l experience TOTEM ECMWF qui sont sur   maia:  u rech eee reee217 TOTEM REF OUTPUTS    obsolete      param name  in required  nom du tableau contenant le champ que l on veut  le   trouver avec ncdflec fichier var      param debut  in  nombres de 6 ou 8 chiffres  anneemoisjour  par ex:19980507     param fin  in  nombres de 6 ou 8 chiffres  anneemoisjour  par ex:19980507     param nomexperience  in optional  trois lettres designant le nom de l experience              keyword BOITE boite sur laquelle integrer  par defaut tt le domaine             keyword DIREC:  x   y   z   xy   xz   yz   xyz  directions selon lesquelles               effectuer les moyennes  si rien n est donne on n effectue pas de moyenne       keyword GRILLE impose la grille a laquelle est rapporte le champ  rq permet   d aller plus vite ds la lecture       keyword  TOUT oblige a lire le tableau entier en non pas celui reduit a domdef      uses common pro vraidate juldate  nlec5j          nlecserie      history Sebastien Masson  smasson lodyc jussieu fr      14 8 98      REF 07 790101 grid T nc  REF 07 790101 grid U nc   REF 07 790101 grid V nc   REF 07 790101 grid W nc     function nlec name debut fin nomexperience BOITE boite DIREC direc GRILLE grille TOUT tout                   STRUCTURE   structure  SEUILMIN   seuilmin  SEUILMAX   seuilmax  NAN   nan                   _EXTRA   ex  common      tempsun   systime 1            pour key_performance    nom strlowcase name      specification de la date et de l experience      case n_params  of       1:BEGIN           year year 1900 year ne 0 and year ne  1 and year lt 100           date   day 100 month 10000 year       end       2:BEGIN           if size debut   tname  EQ  STRING  then begin             prefix   strupcase debut              year year 1900 year ne 0 and year ne  1 and year lt 100              date   day 100 month 10000 year          ENDIF ELSE BEGIN             date   debut             rien juldate date           ENDELSE       end       3:begin          date   debut          rien juldate date           if size fin   tname  EQ  STRING  then begin             prefix   strupcase fin           ENDIF ELSE BEGIN             date2 vraidate fin              year2 date2 10000             month2 date2 100   year2 100             day2 date2   year2 10000   month2 100          ENDELSE       end       4:BEGIN          date   debut          rien juldate date            if size nomexperience   tname  EQ  STRING  then begin             prefix   strupcase nomexperience              date2   fin          ENDIF ELSE BEGIN             prefix   strupcase fin              date2   nomexperience          ENDELSE          date2 vraidate date2           year2 date2 10000          month2 date2 100   year2 100          day2 date2   year2 10000   month2 100       end    endcase    date   long date     if n_elements date2  NE 0 then date2   long date2     if n_elements date2  NE 0 then if date2 eq date then tempvar   SIZE TEMPORARY date2      verification de la coherence des dates      if n_elements date2  ne 0 then begin       if  day    EQ 0 AND day2  NE 0  OR  month EQ 0 AND month2 NE 0  OR           year   EQ 0 AND year2 NE 0  or  day2  EQ 0 AND day    NE 0  OR           month2 EQ 0 AND month NE 0  OR  year2 EQ 0 AND year   NE 0  then          return   report verifier la coherence des dates        if date2 le date then return  report date2 doit etre posterieure a date     endif     case sur le type de fichiers que l on veut lire    determination ds chaque cas de numsortie et nbretps      if day NE 0 then begin         SORTIES A 5 JOURS     numsortie   testjour:       numsortie 1 julday month day year julday 1 1 year 5 0        if numsortie ne floor numsortie  then begin          if n_elements date2  ne 0 then begin             caldat julday month day 1 year month day year             goto  testjour          endif          return    1       ENDIF       numsortie   long numsortie      determination du nombre de pas de tps a extraire pour la serie temporelle   entiere: nbretps         if n_elements date2  ne 0 then begin          testjour2:          numsortie2 1 julday month2 day2 year2 julday 1 1 year2 5           if numsortie2 ne floor numsortie2  then begin             caldat julday month2 day2 1 year2 month2 day2 year2             goto  testjour2          endif          if year eq year2 then nbretps numsortie2 numsortie 1 else             nbretps 73 numsortie 1 year2 year 1 73 numsortie2          numsortie2   long numsortie2        endif else nbretps 1       nbretps   long nbretps      si on fait une serie temporelle on cherche a lire plutot un fichier   contenant deja une serie temporelle par contre pour une sortie   unique on cherche d abord a lire un fichier contenant toutes les variables          IF n_elements date2  ne 0 THEN BEGIN          serie:          IF n_elements dejaserie  eq 1 then return   1          datejul   5 numsortie 1 julday 1  1  year           if n_elements date2  ne 0 then date2jul   5 numsortie2 1 julday 1  1  year2             ELSE date2jul   datejul           res   nlecserie nom  datejul  date2jul BOITE boite GRILLE grille TOUT tout  _EXTRA   ex           IF res 0  EQ  1 THEN BEGIN              dejaserie   1             GOTO   passerie          ENDIF        ENDIF ELSE BEGIN          passerie:          IF n_elements dejapasserie  eq 1 then return   1          res     nlec5j  nom  numsortie    nbretps BOITE boite GRILLE grille TOUT tout  _EXTRA   ex           IF res 0  EQ  1 THEN BEGIN             dejapasserie   1             GOTO   serie          ENDIF        endelse    ENDIF ELSE BEGIN       CASE 1 of          month NE 0 AND year NE 0:BEGIN   SORTIES MENSUELLES             numsortie79    year 1979 12 month             if n_elements date2  ne 0 then nbretps   month2 month 1 12 year2 year                ELSE nbretps   1             res   nlecmois nom numsortie79 nbretps  BOITE boite GRILLE grille TOUT tout  _EXTRA   ex           end          month EQ 0 AND year NE 0:BEGIN   SORTIES ANNUELLES             numsortie79    year 1978              if n_elements date2  ne 0 then nbretps   year2 year 1               ELSE nbretps   1             res   nlecan nom numsortie79 nbretps  BOITE boite GRILLE grille TOUT tout  _EXTRA   ex           end          month NE 0 AND year EQ 0:BEGIN   SORTIES SAISONNIERES             numsortie79   month             if n_elements date2  ne 0 then nbretps   month2 month 1               ELSE nbretps   1             res   nlecsaison nom numsortie79 nbretps  BOITE boite GRILLE grille TOUT tout  _EXTRA   ex           end          month EQ 0 AND year EQ 0:BEGIN   SORTIES CLIMATOLOGIQUE             numsortie79   13             nbretps   1             res   nlecsaison nom numsortie79 nbretps  BOITE boite GRILLE grille TOUT tout  _EXTRA   ex           end       endcase    endelse      seuil      if n_elements seuilmin  NE 0 then BEGIN       if n_elements valmask  EQ 0 then valmask   1e20       terre   where res GT valmask 10        res   seuilmin   res       if terre 0  NE  1 then res terre    valmask       undefine  terre    endif    if n_elements seuilmax  NE 0 then begin       if n_elements valmask  EQ 0 then valmask   1e20       terre   where res GT valmask 10        res   res   seuilmax       if terre 0  NE  1 then res terre    valmask       undefine  terre    endif     points a metre a nan      if n_elements nan  NE 0 then BEGIN       if n_elements valmask  EQ 0 then valmask   1e20       if abs valmask  LT 1e6 then terre   where abs res  GT abs valmask 10          ELSE terre   where res EQ valmask        if abs nan  LT 1e6 then notan   where res EQ nan          ELSE notan   where abs res  GT abs nan        if notan 0  NE  1 then res notan     values f_nan       notan   notan 0  NE  1       if terre 0  NE  1 then res terre    valmask       undefine  terre    endif     ajustement de niveau pour les tableau 2d simples      if jpt EQ 1 then begin       taille   size res        IF taille 0  EQ 2 THEN niveau   1    endif     moyenne eventuelle      IF keyword_set direc  THEN BEGIN        IF jpt EQ 1 THEN res   moyenne res direc BOITE boite  nan   notan          ELSE res   grossemoyenne res direc BOITE boite  nan   notan     ENDIF      mise en placer des parametres pour le trace        if keyword_set boite  then legende_pltt   boite ELSE legende_pltt    lon1  lon2  lat1  lat2        IF n_elements res  NE 1 THEN res   reform res over     IF NOT keyword_set direc  THEN domdef  lon1  lon2  lat1  lat2  prof1  prof2  _extra   ex  grille   vargrid      ELSE if direc eq  t  then domdef  lon1  lon2  lat1  lat2  prof1  prof2  _extra   ex  grille   vargrid      if keyword_set structure  then res    tab:res  grille:vargrid  unite:varunit  experience:varexp  nom:varname       if keyword_set key_performance  THEN print   temps nlec  systime 1 tempsun     time   time 2l    return res     end              "); 
    67 a[65] = new Array("./Obsolete/nlec5j.html", "nlec5j.pro", "", "           file_comments lit les fichiers Net Cdf de l experience TOTEM ECMWF qui   contiennent les sorties a 5j regroupees par type de grille par   paquets de 6 mois    sur maia:  u rech eee reee217 TOTEM REF OUTPUTS     obsolete      categories lecture de NETCDF      examples   IDL  res nlec5j  nom  numsortie  nbretps       param nom  in required  nom du tableau contenant le champ que l on veut  le   trouver avec ncdflec fichier var     param numsortie  in required le numero du pas de temps que l on veut sortir du   fichier  compte a partir de 1  a partir de year    param nbretps  in required  nombre de pas de temps a extraire              keyword BOITE boite sur laquelle integrer  par defaut tt le domaine       keyword GRILLE impose la grille a laquelle est rapporte le champ  rq permet   d aller plus vite ds la lecture       keyword  TOUT oblige a lire le tableau entier en non pas celui reduit a domdef      returns tableau 2d  qd on ne demande pas de serie  ou 3d ou 4d ds le cas dune serie        uses common pro      restriction appele par nlec      history Sebastien Masson  smasson lodyc jussieu fr            function nlec5j  nom  numsortie  nbretps BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex  common      res 1    anneedepart 1979     gestion du nom du fichier      if numsortie le 36 then BEGIN        mmdd 0101        numsort numsortie    ENDIF  else BEGIN       if leapyr year  then mmdd 0629  else mmdd 0630        numsort numsortie 36    endelse    case 1 of       year lt 10:                 s_year  0 string format i1 year        year lt 100 and year ge 10 :s_year      string format i2 year        year ge 100:                s_year      string format i2 year 1900 year LT 2000     endcase    numfich year anneedepart 2 7 mmdd ne  0101     s_date s_year mmdd    if numfich lt 10 then numfich 0 string format i1 numfich       else numfich     string format i2 numfich      gestion du nom de la grille en testant les differentes possibilites   et ouverture du fichier      if keyword_set grille  then begin       vargrid grille       nomfich prefix numfich s_date grid vargrid nc        IF  version OS_FAMILY EQ  unix  THEN spawn   file  iodir nomfich     dev null        cdfid ncdf_open iodir nomfich        varcontient ncdf_varinq cdfid nom     endif else begin   liste des fichiers pouvant convenir       quelsfichiers   findfile iodir prefix numfich s_date grid        IF quelsfichiers 0  EQ   THEN BEGIN   liste vide          if keyword_set bavard  then             ras   report LES FICHIERS:  iodir prefix numfich s_date grid  n existe pas           return    1       ENDIF        for i 0 n_elements quelsfichiers 1 do begin          IF  version OS_FAMILY EQ  unix  THEN spawn   file  quelsfichiers i     dev null           cdfid ncdf_open quelsfichiers i           contient ncdf_inquire cdfid           for varid 0 contient nvars 1 do BEGIN   ds les fichiers existants on             varcontient ncdf_varinq cdfid varid    cherche le nom des variables             if varcontient name eq nom then BEGIN                vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1   nom de grille                goto  grilletrouvee             ENDIF           endfor          ncdf_close cdfid       endfor       if keyword_set bavard  then          ras   report La variable  nom  n existe pas ds les fichiers iodir prefix numfich s_date grid        return    1    endelse grilletrouvee:     lecture de certains attributs      ncdf_attget cdfid nom title value    varname string value     ncdf_attget cdfid nom units value    varunit string value     if rstrpos varname  eq  1 then varname varname   varunit     if month lt 10 then s_month 0 string format i1 month       else s_month     string format i2 month     if day lt 10 then s_day 0 string format i1 day       else s_day     string format i2 day     vardate s_year s_month s_day    ncdf_attget cdfid file_name value global    varexp string value 0: where value EQ  byte 0 0 1        extraction du tableau qui nous interesse       determination du domaine geographique      if keyword_set tout  then begin       nx jpi       ny jpj       nz jpk       premierx   0       premiery   0       premierz   0    endif else BEGIN      redefinition eventuelle du domaine ajuste a boite  a 6 elements      on recupere la dim du no9uveau domaine         if keyword_set boite  then BEGIN           Case  N_Elements Boite  Of             1:Domdef  lon1  lon2  lat1  lat2  0 boite 0 GRILLE vargrid  _EXTRA   ex             2:Domdef  lon1  lon2  lat1  lat2  boite 0 boite 1 GRILLE vargrid  _EXTRA   ex             4:Domdef   Boite  prof1  prof2 GRILLE vargrid  _EXTRA   ex             5:Domdef   Boite 0:3  0  Boite 4 GRILLE vargrid  _EXTRA   ex             6:Domdef  Boite GRILLE vargrid  _EXTRA   ex             Else: return  report Mauvaise Definition de Boite           endcase       ENDIF       grille  mask  glam  gphi  gdep  nx  ny nz premierx premiery  premierz  dernierx  derniery  dernierz    ENDELSE      determination du nombre de pas de tps a extraire ds ce fichier      if nbretps gt 36 1 mmdd ne  0101 numsort 1 then nt 36 1 mmdd ne  0101 numsort 1      else nt nbretps        if varcontient ndims eq 3 then       ncdf_varget cdfid nom res offset premierx premiery numsort 1 count nx ny nt       else       ncdf_varget cdfid nom res offset premierx premiery  premierz numsort 1 count nx ny nz nt      rappel en boucle de nlec si il faut ouvrir de nouveaux fichiers   pour constituer la serie temporelle      if nbretps gt 36 1 mmdd ne  0101 numsort 1 then begin       if mmdd ne  0101  then year   year 1       if varcontient ndims eq 3 then          res    res                   nlec5j nom 1 36 mmdd eq  0101 nbretps nt tout tout GRILLE vargrid BOITE boite          ELSE BEGIN         res res                 nlec5j nom 1 36 mmdd eq  0101 nbretps nt tout tout GRILLE vargrid  BOITE boite         res reform res nx ny nz nbretps   over       ENDELSE        ncdf_varget cdfid time_counter temps  offset    numsort 1 count nt        time    long temps julday 1  5  1979  time        jpt nt jpt    endif else BEGIN       ncdf_varget cdfid time_counter temps  offset    numsort 1 count nt        time   long temps julday 1  5  1979        jpt nt    endelse      ncdf_close cdfid    return res     end"); 
     67a[65] = new Array("./Obsolete/nlec5j.html", "nlec5j.pro", "", "           file_comments lit les fichiers Net Cdf de l experience TOTEM ECMWF qui   contiennent les sorties a 5j regroupees par type de grille par   paquets de 6 mois    sur maia:  u rech eee reee217 TOTEM REF OUTPUTS     obsolete      categories lecture de NETCDF      examples   IDL  res nlec5j  nom  numsortie  nbretps       param nom  in required  nom du tableau contenant le champ que l on veut  le   trouver avec ncdflec fichier var     param numsortie  in required le numero du pas de temps que l on veut sortir du   fichier  compte a partir de 1  a partir de year    param nbretps  in required  nombre de pas de temps a extraire              keyword BOITE boite sur laquelle integrer  par defaut tt le domaine       keyword GRILLE impose la grille a laquelle est rapporte le champ  rq permet   d aller plus vite ds la lecture       keyword  TOUT oblige a lire le tableau entier en non pas celui reduit a domdef      returns tableau 2d  qd on ne demande pas de serie  ou 3d ou 4d ds le cas dune serie        uses common pro      restrictions appele par nlec      history Sebastien Masson  smasson lodyc jussieu fr            function nlec5j  nom  numsortie  nbretps BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex  common      res 1    anneedepart 1979     gestion du nom du fichier      if numsortie le 36 then BEGIN        mmdd 0101        numsort numsortie    ENDIF  else BEGIN       if leapyr year  then mmdd 0629  else mmdd 0630        numsort numsortie 36    endelse    case 1 of       year lt 10:                 s_year  0 string format i1 year        year lt 100 and year ge 10 :s_year      string format i2 year        year ge 100:                s_year      string format i2 year 1900 year LT 2000     endcase    numfich year anneedepart 2 7 mmdd ne  0101     s_date s_year mmdd    if numfich lt 10 then numfich 0 string format i1 numfich       else numfich     string format i2 numfich      gestion du nom de la grille en testant les differentes possibilites   et ouverture du fichier      if keyword_set grille  then begin       vargrid grille       nomfich prefix numfich s_date grid vargrid nc        IF  version OS_FAMILY EQ  unix  THEN spawn   file  iodir nomfich     dev null        cdfid ncdf_open iodir nomfich        varcontient ncdf_varinq cdfid nom     endif else begin   liste des fichiers pouvant convenir       quelsfichiers   findfile iodir prefix numfich s_date grid        IF quelsfichiers 0  EQ   THEN BEGIN   liste vide          if keyword_set bavard  then             ras   report LES FICHIERS:  iodir prefix numfich s_date grid  n existe pas           return    1       ENDIF        for i 0 n_elements quelsfichiers 1 do begin          IF  version OS_FAMILY EQ  unix  THEN spawn   file  quelsfichiers i     dev null           cdfid ncdf_open quelsfichiers i           contient ncdf_inquire cdfid           for varid 0 contient nvars 1 do BEGIN   ds les fichiers existants on             varcontient ncdf_varinq cdfid varid    cherche le nom des variables             if varcontient name eq nom then BEGIN                vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1   nom de grille                goto  grilletrouvee             ENDIF           endfor          ncdf_close cdfid       endfor       if keyword_set bavard  then          ras   report La variable  nom  n existe pas ds les fichiers iodir prefix numfich s_date grid        return    1    endelse grilletrouvee:     lecture de certains attributs      ncdf_attget cdfid nom title value    varname string value     ncdf_attget cdfid nom units value    varunit string value     if rstrpos varname  eq  1 then varname varname   varunit     if month lt 10 then s_month 0 string format i1 month       else s_month     string format i2 month     if day lt 10 then s_day 0 string format i1 day       else s_day     string format i2 day     vardate s_year s_month s_day    ncdf_attget cdfid file_name value global    varexp string value 0: where value EQ  byte 0 0 1        extraction du tableau qui nous interesse       determination du domaine geographique      if keyword_set tout  then begin       nx jpi       ny jpj       nz jpk       premierx   0       premiery   0       premierz   0    endif else BEGIN      redefinition eventuelle du domaine ajuste a boite  a 6 elements      on recupere la dim du no9uveau domaine         if keyword_set boite  then BEGIN           Case  N_Elements Boite  Of             1:Domdef  lon1  lon2  lat1  lat2  0 boite 0 GRILLE vargrid  _EXTRA   ex             2:Domdef  lon1  lon2  lat1  lat2  boite 0 boite 1 GRILLE vargrid  _EXTRA   ex             4:Domdef   Boite  prof1  prof2 GRILLE vargrid  _EXTRA   ex             5:Domdef   Boite 0:3  0  Boite 4 GRILLE vargrid  _EXTRA   ex             6:Domdef  Boite GRILLE vargrid  _EXTRA   ex             Else: return  report Mauvaise Definition de Boite           endcase       ENDIF       grille  mask  glam  gphi  gdep  nx  ny nz premierx premiery  premierz  dernierx  derniery  dernierz    ENDELSE      determination du nombre de pas de tps a extraire ds ce fichier      if nbretps gt 36 1 mmdd ne  0101 numsort 1 then nt 36 1 mmdd ne  0101 numsort 1      else nt nbretps        if varcontient ndims eq 3 then       ncdf_varget cdfid nom res offset premierx premiery numsort 1 count nx ny nt       else       ncdf_varget cdfid nom res offset premierx premiery  premierz numsort 1 count nx ny nz nt      rappel en boucle de nlec si il faut ouvrir de nouveaux fichiers   pour constituer la serie temporelle      if nbretps gt 36 1 mmdd ne  0101 numsort 1 then begin       if mmdd ne  0101  then year   year 1       if varcontient ndims eq 3 then          res    res                   nlec5j nom 1 36 mmdd eq  0101 nbretps nt tout tout GRILLE vargrid BOITE boite          ELSE BEGIN         res res                 nlec5j nom 1 36 mmdd eq  0101 nbretps nt tout tout GRILLE vargrid  BOITE boite         res reform res nx ny nz nbretps   over       ENDELSE        ncdf_varget cdfid time_counter temps  offset    numsort 1 count nt        time    long temps julday 1  5  1979  time        jpt nt jpt    endif else BEGIN       ncdf_varget cdfid time_counter temps  offset    numsort 1 count nt        time   long temps julday 1  5  1979        jpt nt    endelse      ncdf_close cdfid    return res     end"); 
    6868a[66] = new Array("./Obsolete/nlecan.html", "nlecan.pro", "", "           file_comments lit les moyennes annuelles   sur maia:  u rech eee reee217 TOTEM REF OUTPUTS       obsolete    categories lecture de NETCDF      examples    IDL  res nlecan nom  numsortie79  nbretps       param nom  in required  nom du tableau contenant le champ que l on veut  le   trouver avec ncdflec fichier var    param numsortie79   in required  le numero du pas de temps que l on veut sortir du   fichier  compte a partir de 1  a partir de 79    param nbretps   in required  nombre de pas de temps a extraire      keyword BOITE  boite sur laquelle integrer  par defaut tt le domaine       keyword GRILLE impose la grille a laquelle est rapporte le champ  rq permet   d aller plus vite ds la lecture       keyword  TOUT oblige a lire le tableau entier en non pas celui reduit a domdef      returns tableau 2d  qd la serie ne fait que 1 pas de temps  ou   3d  valable ds 1 premier tps que pour les tableaux 2d        uses common pro      restrictions appele par nlec      history Sebastien Masson  smasson lodyc jussieu fr           REF moyenne annuelle grid T nc   function nlecan  nom  numsortie79  nbretps BOITE   boite GRILLE grille TOUT tout  _EXTRA   ex  common        res 1    anneedepart 1979     gestion du nom de la grille en testant les differentes possibilites   et ouverture du fichier      if keyword_set grille  then begin       vargrid grille       nomfich prefix moyenne annuelle grid vargrid nc        IF  version OS_FAMILY EQ  unix  THEN spawn   file  iodir nomfich     dev null              cdfid ncdf_open iodir nomfich        varcontient ncdf_varinq cdfid nom     endif else begin   liste des fichiers pouvant convenir       quelsfichiers   findfile iodir prefix moyenne annuelle grid        IF quelsfichiers 0  EQ   THEN     liste vide          return   report LES FICHIERS:  iodir prefix moyenne annuelle grid  n existe pas        for i 0 n_elements quelsfichiers 1 do begin          IF  version OS_FAMILY EQ  unix  THEN spawn   file  quelsfichiers i     dev null           cdfid ncdf_open quelsfichiers i           contient ncdf_inquire cdfid           for varid 0 contient nvars 1 do BEGIN     ds les fichiers existants on             varcontient ncdf_varinq cdfid varid    cherche le nom des variables             if varcontient name eq nom then BEGIN                vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1   nom de grille                goto  grilletrouvee             ENDIF           endfor          ncdf_close cdfid       endfor       return  report La variable  nom  n existe pas ds les fichiers iodir prefix moyenne annuelle grid     endelse grilletrouvee:     lecture de certains attributs et de l axe des temps      ncdf_attget cdfid nom title value    varname string value     ncdf_attget cdfid nom units value    varunit string value     if rstrpos varname  eq  1 then varname varname   varunit     varexp prefix     lecture de l axe des temps      ncdf_varget cdfid time_counter time  offset    numsortie79 1 count nbretps     time   long time julday 12  31  1978     jpt nbretps    IF jpt EQ 1 THEN BEGIN       caldat  time 0  month  day  year       case 1 of          year lt 10:                 s_year  0 string format i1 year           year lt 100 and year ge 10 :s_year      string format i2 year           year ge 100:                s_year      string format i2 year 1900        endcase       vardate annee:  s_year    endif       extraction du tableau qui nous interesse         determination du domaine geographique      if keyword_set tout  then begin       nx jpi       ny jpj       nz jpk       glam 1        gphi 1        gdep 1        premierx   0       premiery   0       premierz   0    endif else BEGIN      redefinition eventuelle du domaine ajuste a boite  a 6 elements      on recupere la dim du no9uveau domaine         if keyword_set boite  then BEGIN           Case N_Elements Boite  Of             1:Domdef  lon1  lon2  lat1  lat2  0 boite 0 GRILLE vargrid  _EXTRA   ex             2:Domdef  lon1  lon2  lat1  lat2  boite 0 boite 1 GRILLE vargrid  _EXTRA   ex             4:Domdef   Boite prof1  prof2 GRILLE vargrid  _EXTRA   ex             5:Domdef   Boite 0:3  0  Boite 4 GRILLE vargrid  _EXTRA   ex             6:Domdef  Boite GRILLE vargrid  _EXTRA   ex             Else:return  report Mauvaise Definition de Boite           endcase       ENDIF       grille  mask  glam  gphi  gdep  nx  ny nz premierx premiery  premierz    ENDELSE       if varcontient ndims eq 3 then       ncdf_varget cdfid nom res offset premierx premiery numsortie79 1         count nx ny nbretps  else       ncdf_varget cdfid nom res offset premierx premiery  premierz numsortie79 1         count nx ny nz nbretps       ncdf_close cdfid    return res     end"); 
    6969a[67] = new Array("./Obsolete/nlecmois.html", "nlecmois.pro", "", "             file_comments lit les fichiers Net Cdf  de moyenne mensuel  de   l experience TOTEM ECMWF qui sont sur   maia:  u rech eee reee217 TOTEM REF OUTPUTS    obsolete      keyword BOITE boite sur laquelle integrer  par defaut tt le domaine       keyword GRILLE impose la grille a laquelle est rapporte le champ  rq permet   d aller plus vite ds la lecture       keyword  TOUT oblige a lire le tableau entier en non pas celui reduit a domdef    uses common pro      history Sebastien Masson  smasson lodyc jussieu fr           REF moyenne mensuelle 79 81 grid T nc   function nlecmois nom numsortie79 nbretps  BOITE boite GRILLE grille TOUT tout  _EXTRA   ex  common      res  1     annee du nom du 1er fichier      annee   floor floor numsortie79 1 12 3 3 79     gestion du nom de la grille en testant les differentes possibilites   et ouverture du fichier      if keyword_set grille  then begin       vargrid grille       nomfich prefix moyenne mensuelle strtrim annee  1 strtrim annee 2  1 grid vargrid nc        IF  version OS_FAMILY EQ  unix  THEN spawn   file  iodir nomfich     dev null        cdfid ncdf_open iodir nomfich        varcontient ncdf_varinq cdfid nom     endif else begin   liste des fichiers pouvant convenir       quelsfichiers   findfile iodir prefix moyenne mensuelle strtrim annee  1 strtrim annee 2  1 grid        IF quelsfichiers 0  EQ   THEN     liste vide          return  report LES FICHIERS:  iodir prefix moyenne mensuelle strtrim annee  1 strtrim annee 2  1 grid  n existe pas        for i 0 n_elements quelsfichiers 1 do begin          IF  version OS_FAMILY EQ  unix  THEN spawn   file  quelsfichiers i     dev null           cdfid ncdf_open quelsfichiers i           contient ncdf_inquire cdfid           for varid 0 contient nvars 1 do BEGIN   ds les fichiers existants on             varcontient ncdf_varinq cdfid varid    cherche le nom des variables             if varcontient name eq nom then BEGIN                vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1   nom de grille                goto  grilletrouvee             ENDIF           endfor          ncdf_close cdfid       endfor       return  report La variable  nom  n existe pas ds les fichiers iodir prefix moyenne mensuelle strtrim annee  1 strtrim annee 2  1 grid     endelse grilletrouvee:     lecture de certains attributs et de l axe des temps      ncdf_attget cdfid nom title value    varname string value     ncdf_attget cdfid nom units value    varunit string value     if rstrpos varname  eq  1 then varname varname   varunit     varexp prefix     determination du domaine geographique      if keyword_set tout  then begin       nx jpi       ny jpj       nz jpk       premierx 0       premiery 0       premierz 0    endif else BEGIN      redefinition eventuelle du domaine ajuste a boite  a 6 elements      on recupere la dim du no9uveau domaine         if keyword_set boite  then BEGIN           Case N_Elements Boite  Of             1:Domdef  lon1  lon2  lat1  lat2  0 boite 0 GRILLE vargrid  _EXTRA   ex             2:Domdef  lon1  lon2  lat1  lat2  boite 0 boite 1 GRILLE vargrid  _EXTRA   ex             4:Domdef   Boite  prof1  prof2 GRILLE vargrid  _EXTRA   ex             5:Domdef   Boite 0:3  0  Boite 4 GRILLE vargrid  _EXTRA   ex             6:Domdef  Boite GRILLE vargrid  _EXTRA   ex             Else:return   report Mauvaise Definition de Boite           endcase       ENDIF       grille  mask  glam  gphi  gdep  nx  ny nz premierx premiery  premierz    ENDELSE      determination du nombre de pas de tps a extraire ds ce fichier      numsortie   numsortie79 12 annee 79     if nbretps numsortie 1 gt 36 then nt 36 numsortie 1      else nt nbretps    numsortie   numsortie79 12 annee 79        if varcontient ndims eq 3 then       ncdf_varget cdfid nom res offset premierx premiery numsortie 1 count nx ny nt  else       ncdf_varget cdfid nom res offset premierx premiery premierz numsortie 1 count nx ny nz nt      rappel en boucle de nlec si il faut ouvrir de nouveaux fichiers   pour constituer la serie temporelle      if nbretps gt 36 numsortie 1 then begin       if varcontient ndims eq 3 then          res    res                   nlecmois nom numsortie79 nt nbretps nt tout tout GRILLE vargrid BOITE boite          else BEGIN           res res                   nlecmois nom numsortie79 nt nbretps nt tout tout GRILLE vargrid BOITE boite                      res reform res nx ny nz nbretps   over         ENDELSE        ncdf_varget cdfid time_counter temps  offset    numsortie 1 count nt        time    long temps julday 12  31  1978  time        jpt nt jpt    endif else BEGIN       ncdf_varget cdfid time_counter temps  offset    numsortie 1 count nt        time   long temps julday 12  31  1978        jpt nt    endelse      ncdf_close cdfid    IF n_elements time  EQ 1 THEN BEGIN       caldat  time  m  d  y       if m lt 10 then m 0 string format i1 m          else m     string format i2 m        if n_elements langage  EQ 0 then langage    non definit        if langage EQ  gb  then vardate   strtrim y  1   string format C CMoA 31 m 1          ELSE vardate   string format C CMoA 31 m 1   strtrim y  1     endif      return res     end"); 
     
    243243a[241] = new Array("./ToBeReviewed/MATRICE/union.html", "union.pro", "", "          NAME:union     PURPOSE:calcule l union de 2 matrices D ENTIERS POSITIFS     CATEGORY:calcule sur les matrices     CALLING SEQUENCE:res union a b      INPUTS:a et b:arrays of positive integers  which need                 not be sorted  Duplicate elements are ignored  as they have no                 effect on the result     KEYWORD PARAMETERS:     OUTPUTS:tableau     COMMON BLOCKS:     SIDE EFFECTS:     The empty set is denoted by an array with the first element equal to    1      RESTRICTIONS:     These functions will not be efficient on sparse sets with wide   ranges  as they trade memory for efficiency  The HISTOGRAM function   is used  which creates arrays of size equal to the range of the   resulting set      EXAMPLE:       a    2 4 6 8      b    6 1 3 2      union a b      1  2  3  4  6  8     Elements in either set     MODIFICATION HISTORY:      http: www dfanning com tips set_operations html         FUNCTION union  a  b IF a 0  LT 0 THEN RETURN  b     A union NULL   a IF b 0  LT 0 THEN RETURN  a     B union NULL   b RETURN  Where Histogram a b  OMin   omin    omin   Return combined set END"); 
    244244a[242] = new Array("./ToBeReviewed/MATRICE/zeroun.html", "zeroun.pro", "", "          NAME:zeroun     PURPOSE:renvoie un vecteur ou une matrice constitue de o et de 1 en   alternance     CATEGORY:function  matrices     CALLING SEQUENCE:resultat zeroun n1  n2      INPUTS:  n1 nombre d elements dans la premiere dimension  n2 nombre d elements dans la deuxieme dimension     KEYWORD PARAMETERS:     OUTPUTS:resultat     COMMON BLOCKS:     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          1 12 98         function zeroun  n1 n2    CASE N_PARAMS  OF       1:return  findgen n1  mod 2       2:BEGIN           if fix n1 2  EQ n1 2  then BEGIN  nombre pair de colonnes             res   findgen n1 1 n2  mod 2             return  res 0:n1 1             ENDIF ELSE return  findgen n1 n2  mod 2  nombre impair de colonnes       END       else: return   report Mauvais nombre de parametre dans l appel de ZEROUN     endcase             end"); 
    245 a[243] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", "   Id: bar_plot pro 35 2006 05 02 14:44:47Z pinsard       Copyright  c  1990 2000  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited        PURPOSE:  Create a bar graph  or overplot on an existing one      CATEGORY:  Graphics      CALLING SEQUENCE:  BAR_PLOT  Values     INPUTS:  Values: A vector containing the values to be represented by the bars   Each element in VALUES corresponds to a single bar in the  output      KEYWORD PARAMETERS:     BASELINES: A vector  the same size as VALUES  that contains the  base value associated with each bar   If not specified   a base value of zero is used for all bars           COLORS: A vector  the same size as VALUES  containing the color index  to be used for each bar   If not specified  the colors are  selected based on spacing the color indices as widely as  possible within the available colors  specified by D N_COLORS         BARNAMES: A string array  containing one string label per bar   If the bars are vertical  the labels are placed beneath  them   If horizontal  rotated  bars are specified  the labels  are placed to the left of the bars     TITLE: A string containing the main title to for the bar plot     XTITLE: A string containing the title for the X axis     YTITLE: A string containing the title for the Y axis        BASERANGE: A floating point scalar in the range 0 0 to 1 0  that  determines the fraction of the total available plotting area  in the direction perpendicular to the bars  to be used   If not specified  the full available area is used         BARWIDTH: A floating point value that specifies the width of the bars  in units of  nominal bar width   The nominal bar width is  computed so that all the bars  and the space between them   set by default to 20  of the width of the bars  will fill the  available space  optionally controlled with the BASERANGE  keyword         BARSPACE:  A scalar that specifies  in units of  nominal bar width   the spacing between bars   For example  if BARSPACE is 1 0   then all bars will have one bar width of space between them   If not specified  the bars are spaced apart by 20  of the bar  width        BAROFFSET: A scalar that specifies the offset to be applied to the  first bar  in units of  nominal bar width   This keyword  allows  for example  different groups of bars to be overplotted  on the same graph   If not specified  the default offset is  equal to BARSPACE          OUTLINE: If set  this keyword specifies that an outline should be  drawn around each bar         OVERPLOT: If set  this keyword specifies that the bar plot should be  overplotted on an existing graph       BACKGROUND: A scalar that specifies the color index to be used for  the background color   By default  the normal IDL background  color is used     ROTATE: If set  this keyword indicates that horizontal rather than  vertical bars should be drawn   The bases of horizontal bars  are on the left   Y  axis and the bars extend to the right      OUTPUTS:  A bar plot is created  or an existing one is overplotted      EXAMPLE:  By using the overplotting capability  it is relatively easy to create  stacked bar charts  or different groups of bars on the same graph     For example  if ARRAY is a two dimensional array of 5 columns and 8  rows  it is natural to make a plot with 5 bars  each of which is a  stacked  composite of 8 sections   First  create a 2D COLORS array   equal in size to ARRAY  that has identical color index values across  each row to ensure that the same item is represented by the same color  in all bars     With ARRAYS and COLORS defined  the following code fragment  illustrates the creation of stacked bars  note that the number of rows  and columns is arbitrary :    Y RANGE    0 ymax    Scale range to accommodate the total bar lengths   BASE   INTARR NROWS   FOR I   0  NROWS 1 DO BEGIN     BAR_PLOT  ARRAY I  COLORS COLORS I  BASELINES BASE                  BARWIDTH 0 75  BARSPACE 0 25  OVER I GT 0      BASE   BASE   ARRAY I   ENDFOR    To plot each row of ARRAY as a clustered group of bars within the same  graph  use the BASERANGE keyword to restrict the available plotting  region for each set of bars   The sample code fragment below  illustrates this method:    FOR I   0  NROWS 1 DO       BAR_PLOT  ARRAY I  COLORS COLORVECT  BARWIDTH 0 8 BARSPACE 0 2          BAROFFSET I 1 0 BARSPACE NCOLS  OVER I GT 0  BASERANGE 0 19    where NCOLS is the number of columns in ARRAY  and COLORVECT is a  vector containing the color indices to be used for each group of  bars    In this example  each group uses the same set of colors  but  this could easily be changed      MODIFICATION HISTORY:  August 1990  T J  Armitage  RSI  initial programming   Replacement  for PLOTBAR and OPLOTBAR routines written by William Thompson     September 1990  Steve Richards  RSI  changed defaults to improve the  appearance of the bar plots in the default mode  Included  spacing the bars slightly    pro bar_plot values baselines baselines colors colors barnames barnames              title title xtitle xtitle ytitle ytitle baserange baserange              barwidth barwidth barspace barspace baroffset baroffset              outline outline overplot overplot background background              rotate rotate  _EXTRA   ex if  n_params d  eq 0  then begin   Print call   return if no parameters   print bar_test values baselines baselines colors colors barnames barnames    print  title title xtitle xtitle ytitle ytitle baserange baserange      print  barwidth barwidth barspace barspace baroffset baroffset      print  outline outline overplot overplot background background      print  rotate rotate    return endif  nbars n_elements values  Determine number of bars   Baselines  bars extend from baselines through values  default 0 if not keyword_set baselines  then baselines intarr nbars    Default colors spaced evenly in current color table if not keyword_set colors  then      colors fix d n_colors float nbars indgen nbars 0 5    Labels for the individual bars  none by default if not keyword_set barnames  then barnames strarr nbars      Main title if not keyword_set title  then title    Centered title under X axis if not keyword_set xtitle  then xtitle    Title for Y axis if not keyword_set ytitle  then ytitle    Fraction  0 1  of full X range to use if not keyword_set baserange  then baserange 1 0   Space betw  bars  taken from nominal bar widths  default is none If not keyword_set barspace  then barspace 0 2   Bar width scaling factor  relative to nominal if not keyword_set barwidth  then barwidth 1 0   barspace   barspace   nbars   Initial X offset  in scaled bar widths  default is none if not keyword_set baroffset  then baroffset barspace barwidth   Outline of bars  default is none outline   keyword_set outline    Overplot  do not erase the existing display  default is to create new plot overplot   keyword_set overplot    Background color index  defaults to 0  usually black  if not specified if not keyword_set background  then background 0   Rotate  make horizontal bars  default is vertical bars rotate   keyword_set rotate   mnB   MIN baselines  MAX mxB   NAN  mnV   MIN values  MAX mxV   NAN  range mnB  mxV        Maximum of bases   values  if  rotate  then begin     Horizontal bars    if  x range 0  eq 0  and  x range 1  eq 0      Determine range for X axis       then xrange range         else xrange x range     Or  use range specified    if  y range 0  eq 0  and  y range 1  eq 0      Plot will calculate       then                                           defaults for X  but not         yrange    0  n_elements values              for Ys  so fill in here        else           yrange y range     Axis perpend  to bars    yticks 1     Suppress ticks in plot    ytickname strarr 2       xticks 0    xtickname strarr 1  endif else begin     Vertical bars    if  y range 0  eq 0  and  y range 1  eq 0      Determine range for Y axis       then yrange range         else yrange y range                 Or  use range specified    xrange x range     Axis perpend  to bars    xticks 1     Suppress ticks in plot    xtickname strarr 2       yticks 0    ytickname strarr 1  endelse if  overplot eq 0  then      Create new plot  no data plot values nodata title title xtitle xtitle ytitle ytitle       noerase overplot xrange xrange yrange yrange xticks xticks       xtickname xtickname yticks yticks ytickname ytickname       xstyle 1 ystyle 1 data background background  _EXTRA   ex if  rotate  then begin     Horizontal bars    base_win y window     Window range in Y    scal_fact x s     Scaling factors    tick_scal_fact y s     Tick scaling factors endif else begin     Vertical bars    base_win x window     Window range in X    scal_fact y s     Scaling factors    tick_scal_fact x s     Tick scaling factors endelse winrange baserange base_win 1 base_win 0     Normal  window range barsize barwidth winrange nbars     Normal  bar width winoffset base_win 0 baroffset barsize     Normal  first offset bases scal_fact 0 scal_fact 1 baselines     Baselines  in normal coor  normal scal_fact 0 scal_fact 1 values     Values  in normal coor  barstart indgen nbars barsize barspace winrange nbars   Coor  at left edges tickv winoffset barstart 0 5 barsize     Tick coor   centered  for i 0 nbars 1 do begin     Draw the bars    width winoffset barstart i barstart i         Compute bar width       barstart i barsize barstart i barsize     length bases i normal i normal i bases i    Compute bar length    if  rotate  then begin     Horizontal bars       x length     X axis is  length  axis       y width     Y axis is  width  axis    endif else begin     Vertical bars       x width     X axis is  width  axis       y length     Y axis is  length  axis    endelse    polyfill x y color colors i normal     Polyfill with color    if  outline  then plots x y normal     Outline using  p color endfor  tickv tickv tick_scal_fact 0 tick_scal_fact 1    Locations of the ticks if  rotate  then      Label the bars  Y axis    axis yaxis 0 ystyle 1 yticks nbars 1 ytickv tickv ytickname barnames      yticklen 0 0   else      Label the bars  X axis    axis xaxis 0 xstyle 1 xticks nbars 1 xtickv tickv xtickname barnames      xticklen 0 0 return end"); 
     245a[243] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", "   Id: bar_plot pro 97 2006 06 09 15:18:59Z pinsard       Copyright  c  1990 2000  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited        PURPOSE:  Create a bar graph  or overplot on an existing one      CATEGORY:  Graphics      CALLING SEQUENCE:  BAR_PLOT  Values     INPUTS:  Values: A vector containing the values to be represented by the bars   Each element in VALUES corresponds to a single bar in the  output      KEYWORD PARAMETERS:     BASELINES: A vector  the same size as VALUES  that contains the  base value associated with each bar   If not specified   a base value of zero is used for all bars           COLORS: A vector  the same size as VALUES  containing the color index  to be used for each bar   If not specified  the colors are  selected based on spacing the color indices as widely as  possible within the available colors  specified by D N_COLORS         BARNAMES: A string array  containing one string label per bar   If the bars are vertical  the labels are placed beneath  them   If horizontal  rotated  bars are specified  the labels  are placed to the left of the bars     TITLE: A string containing the main title to for the bar plot     XTITLE: A string containing the title for the X axis     YTITLE: A string containing the title for the Y axis        BASERANGE: A floating point scalar in the range 0 0 to 1 0  that  determines the fraction of the total available plotting area  in the direction perpendicular to the bars  to be used   If not specified  the full available area is used         BARWIDTH: A floating point value that specifies the width of the bars  in units of  nominal bar width   The nominal bar width is  computed so that all the bars  and the space between them   set by default to 20  of the width of the bars  will fill the  available space  optionally controlled with the BASERANGE  keyword         BARSPACE:  A scalar that specifies  in units of  nominal bar width   the spacing between bars   For example  if BARSPACE is 1 0   then all bars will have one bar width of space between them   If not specified  the bars are spaced apart by 20  of the bar  width        BAROFFSET: A scalar that specifies the offset to be applied to the  first bar  in units of  nominal bar width   This keyword  allows  for example  different groups of bars to be overplotted  on the same graph   If not specified  the default offset is  equal to BARSPACE          OUTLINE: If set  this keyword specifies that an outline should be  drawn around each bar         OVERPLOT: If set  this keyword specifies that the bar plot should be  overplotted on an existing graph       BACKGROUND: A scalar that specifies the color index to be used for  the background color   By default  the normal IDL background  color is used     ROTATE: If set  this keyword indicates that horizontal rather than  vertical bars should be drawn   The bases of horizontal bars  are on the left   Y  axis and the bars extend to the right      OUTPUTS:  A bar plot is created  or an existing one is overplotted      EXAMPLE:  By using the overplotting capability  it is relatively easy to create  stacked bar charts  or different groups of bars on the same graph     For example  if ARRAY is a two dimensional array of 5 columns and 8  rows  it is natural to make a plot with 5 bars  each of which is a  stacked  composite of 8 sections   First  create a 2D COLORS array   equal in size to ARRAY  that has identical color index values across  each row to ensure that the same item is represented by the same color  in all bars     With ARRAYS and COLORS defined  the following code fragment  illustrates the creation of stacked bars  note that the number of rows  and columns is arbitrary :    Y RANGE    0 ymax    Scale range to accommodate the total bar lengths   BASE   INTARR NROWS   FOR I   0  NROWS 1 DO BEGIN     BAR_PLOT  ARRAY I  COLORS COLORS I  BASELINES BASE                  BARWIDTH 0 75  BARSPACE 0 25  OVER I GT 0      BASE   BASE   ARRAY I   ENDFOR    To plot each row of ARRAY as a clustered group of bars within the same  graph  use the BASERANGE keyword to restrict the available plotting  region for each set of bars   The sample code fragment below  illustrates this method:    FOR I   0  NROWS 1 DO       BAR_PLOT  ARRAY I  COLORS COLORVECT  BARWIDTH 0 8 BARSPACE 0 2          BAROFFSET I 1 0 BARSPACE NCOLS  OVER I GT 0  BASERANGE 0 19    where NCOLS is the number of columns in ARRAY  and COLORVECT is a  vector containing the color indices to be used for each group of  bars    In this example  each group uses the same set of colors  but  this could easily be changed      MODIFICATION HISTORY:  August 1990  T J  Armitage  RSI  initial programming   Replacement  for PLOTBAR and OPLOTBAR routines written by William Thompson     September 1990  Steve Richards  RSI  changed defaults to improve the  appearance of the bar plots in the default mode  Included  spacing the bars slightly    pro bar_plot values baselines baselines colors colors barnames barnames              title title xtitle xtitle ytitle ytitle baserange baserange              barwidth barwidth barspace barspace baroffset baroffset              outline outline overplot overplot background background              rotate rotate  _EXTRA   ex if  n_params d  eq 0  then begin   Print call   return if no parameters   print bar_test values baselines baselines colors colors barnames barnames    print  title title xtitle xtitle ytitle ytitle baserange baserange      print  barwidth barwidth barspace barspace baroffset baroffset      print  outline outline overplot overplot background background      print  rotate rotate    return endif  nbars n_elements values  Determine number of bars   Baselines  bars extend from baselines through values  default 0 if not keyword_set baselines  then baselines intarr nbars    Default colors spaced evenly in current color table if not keyword_set colors  then      colors fix d n_colors float nbars indgen nbars 0 5    Labels for the individual bars  none by default if not keyword_set barnames  then barnames strarr nbars      Main title if not keyword_set title  then title    Centered title under X axis if not keyword_set xtitle  then xtitle    Title for Y axis if not keyword_set ytitle  then ytitle    Fraction  0 1  of full X range to use if not keyword_set baserange  then baserange 1 0   Space betw  bars  taken from nominal bar widths  default is none If not keyword_set barspace  then barspace 0 2   Bar width scaling factor  relative to nominal if not keyword_set barwidth  then barwidth 1 0   barspace   barspace   nbars   Initial X offset  in scaled bar widths  default is none if not keyword_set baroffset  then baroffset barspace barwidth   Outline of bars  default is none outline   keyword_set outline    Overplot  do not erase the existing display  default is to create new plot overplot   keyword_set overplot    Background color index  defaults to 0  usually black  if not specified if not keyword_set background  then background 0   Rotate  make horizontal bars  default is vertical bars rotate   keyword_set rotate   mnB   MIN baselines  MAX mxB   NAN  mnV   MIN values  MAX mxV   NAN  range mnB  mxV        Maximum of bases   values  if  rotate  then begin     Horizontal bars    if  x range 0  eq 0  and  x range 1  eq 0      Determine range for X axis       then xrange range         else xrange x range     Or  use range specified    if  y range 0  eq 0  and  y range 1  eq 0      Plot will calculate       then                                           defaults for X  but not         yrange    0  n_elements values              for Ys  so fill in here        else           yrange y range     Axis perpend  to bars    yticks 1     Suppress ticks in plot    ytickname strarr 2       xticks 0    xtickname strarr 1  endif else begin     Vertical bars    if  y range 0  eq 0  and  y range 1  eq 0      Determine range for Y axis       then yrange range         else yrange y range                 Or  use range specified    xrange x range     Axis perpend  to bars    xticks 1     Suppress ticks in plot    xtickname strarr 2       yticks 0    ytickname strarr 1  endelse if  overplot eq 0  then      Create new plot  no data plot values nodata title title xtitle xtitle ytitle ytitle       noerase overplot xrange xrange yrange yrange xticks xticks       xtickname xtickname yticks yticks ytickname ytickname       xstyle 1 ystyle 1 data background background  _EXTRA   ex if  rotate  then begin     Horizontal bars    base_win y window     Window range in Y    scal_fact x s     Scaling factors    tick_scal_fact y s     Tick scaling factors endif else begin     Vertical bars    base_win x window     Window range in X    scal_fact y s     Scaling factors    tick_scal_fact x s     Tick scaling factors endelse winrange baserange base_win 1 base_win 0     Normal  window range barsize barwidth winrange nbars     Normal  bar width winoffset base_win 0 baroffset barsize     Normal  first offset bases scal_fact 0 scal_fact 1 baselines     Baselines  in normal coor  normal scal_fact 0 scal_fact 1 values     Values  in normal coor  barstart indgen nbars barsize barspace winrange nbars   Coor  at left edges tickv winoffset barstart 0 5 barsize     Tick coor   centered  for i 0 nbars 1 do begin     Draw the bars    width winoffset barstart i barstart i         Compute bar width       barstart i barsize barstart i barsize     length bases i normal i normal i bases i    Compute bar length    if  rotate  then begin     Horizontal bars       x length     X axis is  length  axis       y width     Y axis is  width  axis    endif else begin     Vertical bars       x width     X axis is  width  axis       y length     Y axis is  length  axis    endelse    polyfill x y color colors i normal     Polyfill with color    if  outline  then plots x y normal     Outline using  p color endfor  tickv tickv tick_scal_fact 0 tick_scal_fact 1    Locations of the ticks if  rotate  then      Label the bars  Y axis    axis yaxis 0 ystyle 1 yticks nbars 1 ytickv tickv ytickname barnames      yticklen 0 0   else      Label the bars  X axis    axis xaxis 0 xstyle 1 xticks nbars 1 xtickv tickv xtickname barnames      xticklen 0 0 return end"); 
    246246a[244] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt.html", "plt.pro", "", "          NAME:  PLT     PURPOSE:  trace des graphes horizontaux  cartes      CATEGORY:         Graphics  trace des graphes horizontaux     CALLING SEQUENCE:  plt  champ  min  max      INPUTS:  champ: le champ dont on veut faire la carte horizontale champ  peut etre de 2 types:           1  an array  if needed  its mean along the z and t direction           will be automatically performed            2  une structure repondant aux critaire specifies par           litchamp pro  cf  IDL  xhelp litchamp      ces ARGUMENTS ne sont pas obligatoires:      MAX: valeur maximum que l on veut prendre en compte dans le trace   des contours  Par defaut on prend le max de tab1  sur les pts mer     MIN: valeur minimum que l on veut prendre en compte dans le trace   des contours  Par defaut on prend le min de tab1  sur les pts mer      KEYWORD PARAMETERS:    BOXZOOM:vecteur indiquant la zone geographique sur laquelle doit etre   faite la coupe  Si BOXZOOM a :   1 element : l extraction est faite sur  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: l extraction est faite sur  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: l extraction est faite sur  Boxzoom  0  max gdept  gdepw    5 elements: l extraction est faite sur  Boxzoom 0:3  0  Boxzoom 4    6 elements: l extraction est faite sur Boxzoom     Ou lon1  lon2 lat1 lat2 sont les variables globales   definies lors du dernier domdef     REALCONT:Permet de dessiner les continents definits ds IDL  REALCONT  peut prendre deux formes:              REALCONT: on dessine les continents a la place du mask             REALCONT 2 on dessine le contours des continents par             dessus le dessin masque  ceci permet de voir si le masque             correspond bien aux continents reels           CB_TITLE: le titre de la colorbar          CB_SUBTITLE: le soustitre de la colorbar          CB_CHARSIZE: The character size of the color bar annotations          CMREF: la longeur en cm sur le papier que doit faire la fleche        de norme normeref  par defaut ajuste au dessin et compris entre         5 et 1 5 cm            COAST_COLOR: the color of the coastline                        defaut value is 0   black            COAST_THICK: the thickness of the coastline                        defaut value is 1             CONT_NOFILL: activer pour ne pas remplir les points masques          pour les laisser en transparent            Rq: on trace qd meme le contour du mask            CONT_COLOR: the color of the continent  defaut value is           d n_colors   1   white    CONTINTERVALLE: lorsque CONTOUR est active  valeur d un   intervalle entre deux isolignes traces par un trait  Il peut ainsi   etre different de celui specifie par INTERVALLE    qui  cas ce cas  ne controle que les isolignes coloriees en   couleurs  Si aucun min n est specifie  on choisit un contour min qui va   bien avec l intervalle specifie  Si ce mot cle n est pas   specifie  on trace 20 isolignes du min au max      CONTLABEL: un entier n  lorsque CONTOUR est active  si n   different de 0  choisit le type de label correspondant aux cas n   pour les isolignes tracees par un trait  Pour specifier le type de   label du contour en couleur  utiliser LABEL    CONTMAX: lorsque CONTOUR est active  valeur maximum que l on   veut prendre en compte dans le trace des isolignes traces par un   trait  Par defaut on prend le max  sur les pts mer    du tableau passe ds le mot cle CONTOUR      CONTMIN: lorsque CONTOUR est active  valeur minimum que l on   veut prendre en compte dans le trace des isolignes traces par un   trait  Par defaut on prend le max  sur les pts mer    du tableau passe ds le mot cle CONTOUR      CONTNLEVEL: lorsque CONTOUR est active  nombre de contours   trace par un trait a dessiner  actif si   CONTLABEL 0  par defaut  20     CONTOUR: si on veut tracer les contours d un champ different que celui   que l on dessin en couleur  par ex E P en couleur et QSR en   contours  Doit etre un champ repondant aux meme caracteristiques   que l argument numero 1 de plt           GRIDTYPE: U T V W  ou  F  pour specifer eventuellement la         grille a laquelle est rattache le champ  Rq: il afaut mieux         utiliser ds ce cas une structure comme champ    INTERVALLE: valeur d un intervalle entre deux isolignes  Si   aucun min n est specifie  on choisit un contour min qui va bien   avec l intervalle specifie  Si ce mot cle n est pas specifie  on   trace 20 isolignes du min au max  Rq: Qd CONTOUR est active   INTERVALLE ne specifie que intervalle entre 2 isolignes coloriees en   couleur  Pour specifier l intervalle entre 2 isolignes traces par un trait   utiliser CONTINTERVALLE     INV: inverse le vecteur couleur utilise pour colorier le graphe                sans toucher au noir  au blanc et a la palette utilisee      LABEL: un entier n  si n different de 0  choisit le type de   label correspondant aux cas n  cf label pro   Rq: Qd CONTOUR est active  ne specifie le type de label que pour les   isolignes coloriees en couleur  Pour celles tracees par un trait   utiliser CONTLABEL      LANDSCAPE: oblige la feuille ou le fenetre a l ecran a etre  en position  allongee            LCT: entier designant le numero de la palette de couleur que         l on veut utiliser pour le plot             MAP:Mot cle a actine losque l on veut faire une projection    Ce mot cle peut etre de 2 formes:       MAP P0lat P0lon Rot  Pour la description de ces 3 valeurs cf            l aide en ligne de MAP_SET         MAP: dans ce cas map est calcule tout seul et vaut:             map    0   lon1 lon2 2  0    Rq: Un bon moyen de choisir sa projection est la valeur du vecteur   MAP est d utiliser la demo d IDL5 2:   IDL  demo   Puis choisir earth sciences et mapping    Rq2: Par defaut c est une projection cylindrique qui est effectuee    avec ou sans le mot cle map  Si on veut une autre projection MAP   doit etre active et il faut rajouter le mot cle:  nom_projection    par ex pour une projection polaire centree sur le pole sud:   IDL  domdef 180 180 90 45   IDL  plt  tab   stereo map 90 0 0            labmap: corresponds to label keywords of map_set  Defaut         definition is labmap 1             MAXIN: permet de specifier la valeur maximum que l on veut         prendre en compte dans le trace des contours a l aide d un         mot cle plutot que par l argument max  Si l argument et le         mot cle sont specifies en meme temps  c est la valeur         specifiee par le mot cle qui est retenue            MININ: permet de specifier la valeur minimum que l on veut         prendre en compte dans le trace des contours a l aide d un         mot cle plutot que par l argument min  Si l argument et le         mot cle sont specifies en meme temps  c est la valeur         specifiee par le mot cle qui est retenue     NLEVEL: nombre de contours a dessiner  par defaut  20  actif si   LABEL 0 ou n est pas specifie     NOCOLORBAR: activer si on ne veut pas de colorbar    NOCONTOUR: activer si on ne veut pas de contour mais juste  les couleurs    NOFILL: activer si on veut juste les contours en noir et  blanc sur fond blanc            NOERASE: activer pour faire un dessin a l ecran sans creer         une nouvelle fenetre          NORMEREF: la norme de la fleche de reference  par defaut on        essaie de faire qqch qui colle pas trop mal             NOTRI: pour forcer a ne pas utiliser de         triangulation  Attention dans ce cas le trace ne marchera que         si la grille est non deformee  cad  chaque pts d une         longitude donnee a la meme latitude et chaque pts d une         latitude donnee a la meme longitude  sauf si on utilise le mot         clef CELL_FILL 2  Rq si le champ contient des points a          values f_nan alors on fait qd meme une triangulation            OVERPLOT: pour faire un plt par dessus un autre  Rq:         contrairemnet a l utilisation de CONTOUR ou de VECTEUR          l utilisation de ce mot clef ne modifie pas la legende ou et         la barre de couleur     PETITDESSIN: vecteur de 3 ou 4 elements  applique pour faire un   dessin sur une petite portion de feuille ou d ecran  il delimite   la zone ds laquelle va etre fait le dessin   si il a 4 elements:         il est alors constitute des coordonnees  exprime en cm reperes par         rapport au coin en bas a gauche de la feuille ou de la fenetre          en portrait comme en landscape  du coin en bas a         gauche et du coin en haut a droite  de la zone de dessin    si il a 3 elements:         Ds ce cas  on divise la fenetre ou l ecran en PETITDESSIN 0          colonnes  en PETITDESSIN 1  lignes le dessin se faisant ds la         case numero PETITDESSIN 2 La numerotation commencant en haut         a gauche par le numero 1 et suivant apres dans le sens de         l ecriture    Par defaut on fait un dessin occupant la plus grande place possible   tout en concervant le rapport d aspect  sauf qd REMPLI est active     PORTRAIT: oblige la feuille ou la fenetre a etre en position  debout     POST: faire une sortie postscript  Ne marche que si on fait  un seul dessin sur la feuille  Si on fait plusieurs dessins   utiliser  ps ou plein2dessins    REMPLI:oblige le dessin a occuper l espace maximum definit  par petitdessin            REVERSE_X: pour inverser l axe des x  et aussi le dessin             REVERSE_Y: pour inverser l axe des y  et aussi le dessin             STRICTFILL: activer ce mot clef pour que le remplissage des         contours ce fasse precisement entre le min et le max specifie         en laissant en banc les valeurs inferieurs au min specifie et         superieurs au max specifie     STYLE: style de tracer a adopter pour dessiner les isolignes par   defaut style 0  cf style pro            UNLABSUR: entier n  specifant qu on ne labelle qu un          contour sur n  Par defaut unlabsur 2    UNSUR2: si on veut tracer un countour sur deux  par  defaut trace   tous les contours    UNVECTSUR:un scalaire n on un tableau a 2 elements  n1 n2            dans le premier cas  on tracera un vecteur sur n suivant les           x et les y            dans le second cas on tracera un vecteur sur n1 suivant x           et un vecteur sur n2 suivant y         Rq  pour tracer tous les vecteurs suivant y et 1 sur 2 suivant         x mettre unvectsur 2 1          Rq: ce mot cle est passe ds _extra           VECTCOLOR: la couleur de la fleche  Par defaut noir  couleur 0     VECTEUR: une structure a 2 elements contenant les 2 champs U  et V des valeurs de la composante zonale et meridienne du  champ de vecteurs a tracer  Ces champs peuvent etre un tableau  ou une structure         par ex: vecteur matriceu:lec unsurface matricev:lec vnsurface          rq:le nom des elements de vecteur n a aucune importance          vecteur u:lec unsurface v:lec vnsurface  convient aussi    VECTMIN norme minimum des vecteurs a tracer     VECTMAX norme maximum des vecteurs a tracer            VECTTHICK  l epaissuer de la fleche  par defaut 1     WINDOW: numero de la fenetre ou l on veut faire le graphe  permet   d ouvrir plusieurs fenetres  par defaut on ouvre  IDL0     YXASPECT: rapport d echelle entre y et x  par ex:  1 pour un repere   orthonorme   2 si l axe des y est deux fois plus dilate que celui des x    Par defaut on adapte pour occupe une grande partie de la feuille en sortie   postScript ou pour cree une fenetre pas trop etiree            ZEROMIDDLE: fo force the middle of the colorbar to be equal         to 0  force max max abs min max  and min max      COMMON BLOCKS:  common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr   7 1999                         Sebastien Masson 08 02 2000 checkfield and                         notri keyword  or triangule    1            pro plt  tab1  giventype  givenmin  givenmax  REALCONT   realcont  CONTOUR   contour              INTERVALLE   intervalle  INV   inv  GRIDTYPE   gridtype  BOXZOOM   boxzoom              CONTINTERVALLE   contintervalle  LABEL   label  CONTLABEL   contlabel              STYLE   style  CONTMAX   contmax  CONTMIN   contmin  NLEVEL   nlevel  CONTNLEVEL   contnlevel              VECTEUR   vecteur  MAP   map  MININ   minin  MAXIN   maxin              CONT_NOFILL   cont_nofill              USETRI   usetri  NOTRI   notri  MASKFILL   maskfill              DUPLICATE   duplicate  STRICTFILL   strictfill  OVERPLOT   overplot              DECIMATETRI   decimatetri   LABMAP   labmap  _extra   ex     include common  cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             pour key_performance       I  preparation de l environnement graphique et petites verifications       I1  verification du type de grille associe a tab1     if keyword_set gridtype  then vargrid   gridtype   if keyword_set vecteur  AND  NOT keyword_set gridtype  then BEGIN     vargrid   litchamp tab1   grid      if vargrid eq   then BEGIN       vargrid   xquestion What is the grid associated to the data to contour   T   chkwidget        vargrid   strupcase vargrid      endif   ENDIF     I2  lecture du champ et checkup      if keyword_set boxzoom  AND n_elements contour  ne 4  then BEGIN     savedbox   1b     saveboxparam   boxparam4plt dat    END   if n_elements giventype  NE 0 then type   giventype   if n_elements givenmin  NE 0 then min   givenmin   if n_elements givenmax  NE 0 then max   givenmax   if n_elements minin  NE 0 then min   minin    if n_elements maxin  NE 0 then max   maxin   checktypeminmax   plt  TYPE   type  MIN   min  MAX   max  _extra   ex   z2d   checkfield tab1   plt  TYPE   type  BOXZOOM   boxzoom  DIREC   direc  VECTEUR   vecteur  _extra   ex     if z2d 0  EQ  1 then BEGIN      IF keyword_set savedbox  THEN restoreboxparam   boxparam4plt dat      return   ENDIF   IF n_elements usetri  EQ 0 THEN BEGIN   do we have holes in the triangulation      holeintri   n_elements triangles_list 3 LT  jpi 1 keyword_set key_periodic jpj 1 2     the triangulation must be used to draw the data    do we have a triangulation      wehavetri   triangles_list 0  NE  1     the triangulation must be used to draw the continents   if we make a map  are we periodic and nx jpi       CASE strupcase vargrid  OF        T :nx   nxt        W :nx   nxt        U :nx   nxu        V :nx   nxv        F :nx   nxf     ENDCASE     mapperio   keyword_set map keyword_set key_periodic nx eq jpi       usetri    wehavetri wehavetri holeintri mapperio keyword_set key_irregular    2 notri    ENDIF     I3  reinitialisation   p x y    Rq: on ne reinitialise pas qd on rapelle plt en boucle pour utiliser contour     if n_elements contour  ne 4 AND NOT keyword_set overplot  then reinitplt   z   invert     I4  attribution du mask et des tableaux de longitude et latitude     IF  strupcase vargrid  EQ  W  THEN profond   firstzw NE 0     ELSE profond   firstzt NE 0    do we need to extract now the triangulation that will be use for   contouring the data    if keyword_set profond        OR  usetri EQ 0 AND  vargrid EQ  T  OR vargrid EQ  W        OR  usetri NE 2 AND  vargrid NE  T  AND vargrid NE  W  THEN BEGIN     grille  mask  glam  gphi  gdep  nx  ny  nz           firstx  firsty  firstz  lastx           lasty  lastz   forplt  _extra   ex   ENDIF ELSE BEGIN     grille  mask  glam  gphi  gdep  nx  ny  nz           firstx  firsty  firstz  lastx  lasty           lastz  TRI   trifield   forplt  _extra   ex   ENDELSE     I5 determination du mi:min et du ma:max de z2d ainsi que de max: max et      min: min pour le dessin      masknan   finite z2d    nan   total masknan  NE n_elements z2d     faudra t il faire un autoscale     autoscale   testvar var   min  EQ testvar var   max  AND NOT keyword_set intervalle    determineminmax  z2d  mask  mi  ma  glam  gphi  MININ   min  MAXIN   max         nan   nan  INTERVALLE   intervalle  usetri   usetri  _extra   ex   if z2d 0  EQ  1 THEN GOTO  sortie   on fait un autoscale si besoin   if autoscale then autoscale  min  max  intervalle       II  mise en place du dessin sur la fenetre ou la page et ouverture   eventuelle de la fenetre et de la page     if n_elements contour  NE 4 AND NOT keyword_set overplot  THEN       placedessin   plt  posfenetre  posbar         CONTOUR   contour  VECTEUR   vecteur  MAP   map  DIREC   direc  _extra   ex       III  habillage du dessin  labels style axe            III1  choix des labels     if keyword_set intervalle  AND NOT keyword_set label  then label   1   if keyword_set label  eq 0 then cas   0 else cas   label   label  cas  min  max  ncontour  level_z2d  colnumb  NLEVEL   nlevel         INTERVALLE   intervalle  strictfill   strictfill     III2 choix de style     if not keyword_set style  then style   0   style  style  level_z2d  linestyle  thick   if keyword_set inv  then colnumb   reverse colnumb      III3  definition des axes     if NOT keyword_set overplot  THEN axe   xy  _EXTRA   ex         IV  dessin         extrapolation des donnees sur les terres et seuillage     if keyword_set nan  then begin     z2d where masknan EQ 0    max   ENDIF ELSE masknan   1   filling the mask values   we fill only masknan or we fill mask masknan    IF keyword_set nan  AND keyword_set cont_nofill  THEN       z2d   remplit z2d  nite   1 vargrid NE  T  AND vargrid NE  W                        mask   masknan  _extra   ex       ELSE z2d   remplit z2d  nite    1    vargrid NE  T  AND vargrid NE  W                                         keyword_set nan                           1 keyword_set cont_nofill                           1 n_elements maskfill  NE 0                      mask   mask masknan  _extra   ex    IF keyword_set strictfill  EQ 0 AND n_elements maskfill  EQ 0 then       z2d   min   z2d    max   if n_elements maskfill  NE 0 then BEGIN     z2d   temporary z2d mask masknan     if maskfill NE 0 then z2d   temporary z2d    maskfill 1 mask masknan    ENDIF     check the mask and the triangulation according to the grid type and    nan values       si on fait un dessin en profondeur on redefinit une triangulation   sur le zoom  cette triangulation sera utilisee pour tracer le   champ  on utilise tmask pour que les trous de cette triangulation   soient bien les memes que ceux utilises pour tracer le   masque et correspondent bien au trous qu il y a a cette nouvelle   profondeur    if  keyword_set profond  OR keyword_set cont_nofill        AND  usetri GE 1 AND  vargrid EQ  T  OR vargrid EQ  W             OR  usetri EQ 2 AND  vargrid NE  T  AND vargrid NE  W  then BEGIN     trifield   triangule tmask firstx:lastx  firsty:lasty  firstz                               coinmonte   coinmontemask                              coindescend   coindescendmask                              keep_cont   cont_nofill  _extra   ex      indicezoommask    lindgen jpi  jpj firstx:lastx  firsty:lasty    ENDIF   triangulation for nan mask   if keyword_set nan  then BEGIN     trinan   triangule masknan   keep_cont                            coinmonte   coinmontenan                            coindescend   coindescendnan      indicezoomnan    lindgen jpi  jpj firstx:lastx  firsty:lasty    ENDIF    IF n_elements twin_corners_up  EQ 0 THEN coinmontemask    1 ELSE coinmontemask   twin_corners_up    IF n_elements twin_corners_dn  EQ 0 THEN coindescendmask     1 ELSE coindescendmask   twin_corners_dn   if vargrid EQ  T  OR vargrid EQ  W  then BEGIN      glammsk   glam     gphimsk   gphi   ENDIF ELSE begin   decoupe terre: pour que le trace des cotes soit propre on essaye de   prendre des points en   pour la terre comme ca on ne voit pas le   decalage des grilles  c est ce que fait decoupeterre  au passage on   redefinit trimsk      decoupeterre  mask  glammsk  gphimsk  type    xy          TRI   trimsk  usetri   usetri  indicezoom   indicezoommask           coinmonte   coinmontemask  coindescend   coindescendmask           _EXTRA   ex   ENDELSE     IV1  choix du type de dessin     typetrace    classique    if keyword_set map  AND key_onearth then BEGIN    appelle de mapset qd on veut faire des projections     IF n_elements map  NE 3 THEN map    0   lon1 lon2 2  MOD 360  0      typetrace    projection      map_lat   map 0      map_lon   map 1      map_rot   map 2      if chkstru ex   TITLE  then begin       maptitre   ex title        ex title         endif     map_set  map_lat  map_lon  map_rot  _extra   ex  position   posfenetre   iso           limit    lat1  lon1  lat2  lon2   noborder     if n_elements maptitre  ne 0 then ex title   maptitre     if n_elements trifield  GE 2 then trifield   ciseauxtri trifield  glam  gphi  _EXTRA   ex      if n_elements trimsk  GE 2 then trimsk   ciseauxtri trimsk  glammsk  gphimsk  _EXTRA   ex      if n_elements trinan  GE 2 then BEGIN        trinan   ciseauxtri trinan  glam  gphi  _EXTRA   ex        if trinan 0  EQ  1 then undefine  trinan     endif   ENDIF ELSE BEGIN   pour que les axes de coordonees soient pris en compte     if  x type EQ 0 AND n_elements contour  LE 4 then         plot   0   0   nodata  xstyle   5  ystyle   5  title     subtitle      noerase      if keyword_set key_periodic  then BEGIN   ds ce cas la triangulation est refermee en x et couvre toute la   sphere  il faut dont la couper au niveau ou l on coupe la sphere   pour faire le dessin       if n_elements trifield  GE 2 then trifield   ciseauxtri trifield  glam  gphi  _EXTRA   ex        if n_elements trimsk  GE 2 then trimsk   ciseauxtri trimsk  glammsk  gphimsk  _EXTRA   ex        if n_elements trinan  GE 2 then trinan   ciseauxtri trinan  glam  gphi  _EXTRA   ex      ENDIF   endelse     IV2  coutours et coloriages     if keyword_set duplicate   then BEGIN   pour marina uniquement ATTENTION C EST TRES MAL CODE     lon   glam  0      decalage   max lon min lon lon shift lon  1 n_elements lon 1       x range 1     x range 1 duplicate 1 decalage     for i   1  duplicate 1 do BEGIN       z2d    z2d  z2d        gphi    gphi  gphi        mask    mask  mask        gphimsk    gphimsk  gphimsk        glam    glam  glam i decalage        glammsk    glammsk  glammsk      ENDFOR   endif   save  glam  gphi  trifield  file    tri dat    if keyword_set decimatetri  then BEGIN     tempsdeux   systime 1         pour key_performance     IF n_elements trimsk  EQ 0 THEN trimsk   trifield     Verts   transpose temporary glam   temporary gphi                              temporary z2d      Conn    replicate 3  1  n_elements trifield 3  trifield      Result   mesh_decimate temporary verts   temporary Conn                                 Connout  vertices   Vertsout                                percent_vertices   decimatetri      connout   reform connout  4   n_elements connout 4   over       trifield    temporary connout 1:3        glam   reform Vertsout 0        gphi   reform Vertsout 1        z2d   reform Vertsout 2        undefine  Vertsout     print   temps decimatetri  systime 1 tempsdeux    ENDIF   pltbase  z2d  glam  gphi         mask  glammsk  gphimsk  trichamp   trifield  trimsk   trimsk   forplt         level_z2d  colnumb  contour   contour  usetri   usetri  realcont   realcont         overplot   keyword_set overplot keyword_set map          c_linestyle   linestyle  c_labels   1 indgen n_elements level_z2d  MOD 2          c_thick   thick  cont_nofill   cont_nofill  nan   nan         coinmontemask   coinmontemask  coindescendmask   coindescendmask         coinmontenan   coinmontenan  coindescendnan   coindescendnan         indicezoommask   indicezoommask  indicezoomnan   indicezoomnan         masknan   masknan  trinan   trinan  _extra   ex     IV3  rappelle de plt en boucle qd contour est active     if n_elements contour  eq 4 then BEGIN   c est la 2eme fois que je passe ds pltt     contour    mietma: mi  ma  unit:varunit  inter:intervalle    je renvoie le min  le max et l unite     return   endif   if keyword_set contour  THEN BEGIN      pourlegende    1  1  1  1      oldattributs   saveatt      oldcolnumb   colnumb     plt  contour  contmin  contmax  CONTOUR   pourlegende   NOERASE           USETRI   usetri           INTERVALLE   contintervalle  LABEL   contlabel  STYLE   style           NLEVEL   contnlevel  DUPLICATE   duplicate  STRICTFILL   strictfill           MASKFILL   maskfill  _extra   ex     restoreatt  oldattributs     colnumb   oldcolnumb   ENDIF       V  petites finitions           V1  ajout eventuel de vecteurs en surimpression     if keyword_set vecteur  then BEGIN      oldattributs   saveatt      ajoutvect  vecteur  vectlegende  _extra   ex     restoreatt  oldattributs   ENDIF     if keyword_set overplot  then GOTO  fini     V2  Trace de la ligne de changement de date l equateur et   le meridien de greenwich        if NOT keyword_set map  AND key_onearth then meridienparallele   xy      V3  pour tracer les continents d IDL     if keyword_set realcont  then BEGIN   si noease est passe de _extra  on s assure qu il est a 1     if chkstru ex   NOERASE  then begin       oldnoerase   ex noerase       ex noerase   1     ENDIF     if chkstru ex   coast_thick  then mlinethick   ex coast_thick ELSE mlinethick   1     if chkstru ex   coast_color  then mcolor   ex coast_color ELSE mcolor   0     IF NOT keyword_set map  THEN         map_set  0   lon1 lon2 2  MOD 360  0  position   posfenetre            limit    lat1  lon1  lat2  lon2   NOERASE   noborder  color   0           _extra   ex     if realcont NE 2 AND NOT keyword_set cont_nofill  then BEGIN       if chkstru ex   cont_color  then cntcol   ex coast_color         ELSE cntcol    d n_colors   1     255       map_continents   fill_continents  color   cntcol  _extra   ex   noerase     ENDIF     map_continents   continents  color   mcolor  MLINETHICK   mlinethick   noerase  _extra   ex     if chkstru ex   NOERASE  THEN  ex noerase   oldnoerase   ENDIF     V4  legendes   affichage de celles ci     legende  mi  ma   xy  CONTOUR   pourlegende  VECTLEGENDE   vectlegende  INTERVALLE   intervalle  DIREC   direc  _EXTRA   ex   if n_elements ex  NE 0 then BEGIN    pour garder les axes du cadre en noir     if  where tag_names ex  EQ  COLOR 0  NE  1 then ex COLOR   coast_color   endif     case typetrace of      classique :         plot   0   0   nodata   noerase  color   0  xstyle   1  ystyle   1  _extra   ex      projection : BEGIN        if chkstru ex   NOERASE  then begin         oldnoerase   ex noerase         ex noerase   1       endif       if chkstru ex   SUBTITLE  then  p subtitle   ex SUBTITLE       if n_elements maptitre  ne 0 then ex title   maptitre       map_set  map_lat  map_lon  map_rot  _extra   ex   iso  limit    lat1  lon1  lat2  lon2             NOERASE   noborder  title    p title  color   0           map_proj_info  numproj   current           map_proj_info  numproj  name   nomproj           if nomproj EQ  Mercator  OR nomproj EQ  Cylindrical  OR nomproj EQ  LambertConic             OR nomproj EQ  Gnomic  OR nomproj EQ  AlbersEqualAreaConic               OR nomproj EQ  TransverseMercator  OR nomproj EQ  MillerCylindrical               OR nomproj EQ  LambertConicEllipsoid  then map_grid  box_axes 1 latdel 10 londel 10             ELSE map_grid  charsize   0 75   label latalign   1 lonalign             1 latdel   10 londel   30       IF n_elements labmap  EQ 0 THEN labmap   1       map_grid  charsize   0 75  label   labmap  latalign   1  lonalign   1  latdel   10  londel   30  color   0  _extra   ex       if chkstru ex   NOERASE  THEN  ex noerase   oldnoerase     end   endcase     V5  barre de couleur     colnumb   colnumb 0:ncontour 1 keyword_set strictfill    barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                     position   posbar  _extra   ex       VI  impression eventuelle     fini:   terminedessin  _extra   ex     sortie:   if keyword_set savedbox  THEN restoreboxparam   boxparam4plt dat    if keyword_set key_performance  NE 0 THEN print   temps plt  systime 1 tempsun        return end  "); 
    247247a[245] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt1d.html", "plt1d.pro", "", "      NAME:  PLT1D     PURPOSE:  trace des graphes 1d     CATEGORY:         Graphics  trace des graphes 1d: x y z  ou t mais ds ce cas  on         rapelle directement pltt      CALLING SEQUENCE:  plt1d  champ type  min  max      INPUTS:  champ: le champ dont on veut faire le hovmoller champ  peut etre de 2 types:  1  un tableu qui peut etre:              2d  3d ou 4d:  tableau xy  xyz  xyt ou xyzt  dans ce cas               le tableau va passer dans moyenne ou grossemoyenne pour              etre moyennee et devenir un tableau 1 1d                1d:type doit qd meme etre specifie pour qu on sache de            quel trace il sagit  Pour avoir une legende correcte             respecifier la zone d extraction via BOXZOOM         2  une structure repondant aux critaires specifies par         litchamp pro  cf  IDL  xhelp litchamp  Le tableau contennu ds         la structure repondant aux criteres du cas 1  cf  ci dessus           TYPE: un string: type de plot 1d que l on veut faire:         trace suivant:  x y z        ces arguments ne sont pas obligatoires:      MAX: valeur maximum que l on veut prendre en compte dans le trace   du plot  Par defaut on prend le max de tableau  sur les pts mer     MIN: valeur minimum que l on veut prendre en compte dans le trace   du plot  Par defaut on prend le min de tableau  sur les pts mer      KEYWORD PARAMETERS:    BOXZOOM:vecteur indiquant la zone geographique  3d  sur laquelle doit   etre fait l extraction du champ pour faire le hovmoeller    Si BOXZOOM a :   1 element : l extraction est faite sur  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: l extraction est faite sur  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: l extraction est faite sur  Boxzoom  vert1  vert2    5 elements: l extraction est faite sur  Boxzoom 0:3  0  Boxzoom 4    6 elements: l extraction est faite sur Boxzoom     Ou lon1  lon2 lat1 lat2 vert1 vert2 sont les variables globales   definies lors du dernier domdef            COL1d:  OBSOLETE numero de la couleur qd on fait un trace 1d         par defaut  0  il faut mieux utiliser le mot cle COLOR utilise         par plot           ENDPOINTS: mot clef specifiant que l on veut faire une coupe         verticale en diagonale  les coordonnees des extremites de         celle ci sont alors definies les 4 elements du vecteur         ENDPOINTS:  x1 y1 x2 y2  qui sont les coordonnees     LANDSCAPE: oblige la feuille ou le fenetre a l ecran a etre  en position  allongee            MAXIN: permet de specifier la valeur maximum que l on veut         prendre en compte dans le trace des contours a l aide d un         mot cle plutot que par l argument max  Si l argument et le         mot cle sont specifies en meme temps  c est la valeur         specifiee par le mot cle qui est retenue            MININ: permet de specifier la valeur minimum que l on veut         prendre en compte dans le trace des contours a l aide d un         mot cle plutot que par l argument min  Si l argument et le         mot cle sont specifies en meme temps  c est la valeur         specifiee par le mot cle qui est retenue             NOERASE: activer pour faire un dessin a l ecran sans creer   une nouvelle fenetre  Rq: activer ds le cas d un Postscript de   plusieurs traces de type  t  pour ne pas faire un Postscript de   plusieurs pages             OV1D:permet de surimprimer un courbe 1d a un precedent trace 1d     PETITDESSIN: vecteur de 3 ou 4 elements  applique pour faire un   dessin sur une petite portion de feuille ou d ecran  il delimite   la zone ds laquelle va etre fait le dessin   si il a 4 elements:         il est alors constitute des coordonnees  exprime en cm reperes par         rapport au coin en bas a gauche de la feuille ou de la fenetre          en portrait comme en landscape  du coin en bas a         gauche et du coin en haut a droite  de la zone de dessin    si il a 3 elements:         Ds ce cas  on divise la fenetre ou l ecran en PETITDESSIN 0          colonnes  en PETITDESSIN 1  lignes le dessin se faisant ds la         case numero PETITDESSIN 2 La numerotation commencant en haut         a gauche par le numero 1 et suivant apres dans le sens de         l ecriture    Par defaut on fait un dessin occupant la plus grande place possible   tout en concervant le rapport d aspect  sauf qd REMPLI est active     PORTRAIT: oblige la feuille ou la fenetre a etre en position  debout     POST: faire une sortie postscript  Ne marche que si on fait  un seul dessin sur la feuille  Si on fait plusieurs dessins   utiliser  ps ou plein2dessins    REMPLI:oblige le dessin a occuper l espace maximum definit  par petitdessin            REVERSE_X: pour inverser l axe des x  et aussi le dessin             REVERSE_Y: pour inverser l axe des y  et aussi le dessin             SIN: activer ce mot cle si l on veut que l  axe des x soit         trace en sinus de la latitude qd on fait un frace f y            STY1D:  OBSOLETE numero du style utilise lors d un trace         1d  Il faut mieux utiliser le mot cle LINESTYLE qui est celui         de plot  Attention ce mot cle est encore utile si on veut         faire des barres plutot qu un courbe  mettre sty1d bar     TRANS: fait un postscript  active  post automatiquement  et l imprime    si on le desire  sur un transparant    WINDOW: nimero de la fenetre ou l on veut faire le graphe  permet   d ouvrir plusieurs fenetres  par defaut on ouvre  IDL0     YXASPECT: rapport d echelle entre y et x  Par defaut 1   Par defaut on adapte pour occupe une grande partie de la feuille en sortie   postScript ou pour cree une fenetre pas trop etiree            ZEROMIDDLE: fo force the middle of the colorbar to be equal         to 0  force max max abs min max  and min max      COMMON BLOCKS:  common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: creation 24 6 99 Eric Guilyardi                           a partir routine pltt de Sebastien Masson    8 7 1999 Sebastien Masson  smasson lodyc jussieu fr     inspection des travaux finis   8 2 2000 Sebastien Masson: checkfield         pro plt1d  tab  giventype  givenmin  givenmax  BOXZOOM   boxzoom  SIN   sin                MININ   minin  MAXIN   maxin  TYPEIN   typein  ENDPOINTS   endpoints                COL1D   col1d  STY1D   sty1d  OV1D   ov1d  X   x  Y   y  Z   z  TT   tt                REVERSE_X   reverse_x  REVERSE_Y   reverse_y  SWITCHXY   switchxy                _extra   ex     include common  cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             pour key_performance     1ere partie: initialisation et petits calculs          verification de la valeur de type       if n_elements giventype  NE 0 then type   giventype   if n_elements givenmin  NE 0 then min   givenmin   if n_elements givenmax  NE 0 then max   givenmax   if n_elements minin  NE 0 then min   minin   if n_elements maxin  NE 0 then max   maxin   if keyword_set tt  then typein    t    if keyword_set typein  then BEGIN      if size type   type  NE 7 AND size type   type  NE 0 then begin       if n_elements min  NE 0 then max   min       min   type     endif     type   typein   endif     checktypeminmax   plt1d  TYPE   type  MIN   min  MAX   max  ENDPOINTS   endpoints         XX   keyword_set x  YY   keyword_set y  ZZ   keyword_set z     if type EQ  t  then BEGIN     pltt  tab  type  min  max  BOXZOOM   boxzoom  SIN   sin  TYPEIN   typein           COL1D   col1d  STY1D   sty1d  OV1D   ov1d  ENDPOINTS   endpoints  _extra   ex     return   endif     I2  reinitialisation   p x y    Rq: on ne reinitialise pas qd on rapelle plt1d     if NOT keyword_set ov1d  then reinitplt     I1  lecture du champ      if  keyword_set boxzoom  OR keyword_set endpoints  THEN BEGIN      savedbox   1b      saveboxparam   boxparam4plt1d dat     ENDIF     if keyword_set endpoints  then begin     section  tab  z1d  glam  gphi  ENDPOINTS   endpoints  TYPE   type           BOXZOOM   boxzoom  DIREC   direc     nx   n_elements glam       ny   nx     if strupcase vargrid  EQ  W  then begin       z   gdepw firstzw:lastzw        nz   nzw     ENDIF ELSE BEGIN       z   gdept firstzt:lastzt        nz   nzt     ENDELSE   ENDIF ELSE BEGIN      z1d   checkfield tab   plt1d  TYPE   type  BOXZOOM   boxzoom                          direc   direc  _extra   ex      grille  mask  glam  gphi  gdep  nx  ny  nz   ENDELSE   if z1d 0  EQ  1 then BEGIN      IF keyword_set savedbox  THEN restoreboxparam   boxparam4plt1d dat      return   endif   on construit le mask pour cela le tableau doit etre masque  fait   automatiquement a la valeure valmask si on passe ds moyenne ou grossemoyenne    mask   fltarr n_elements z1d    if n_elements valmask  EQ 0 then valmask   1e20   nan   total finite z1d   nan     1   if keyword_set nan  then begin     notanum   where finite z1d  EQ 0      z1d notanum    0     mask where z1d LT valmask 10    1     z1d notanum     values f_nan   ENDIF ELSE mask where z1d LT valmask 10    1     determination du min et du max apres la moyenne     nan   total finite z1d   nan    1   determineminmax  z1d  mask  mi  ma  MININ   min  MAXIN   max  nan   nan  INTERVALLE   intervalle  _extra   ex   if z1d 0  EQ  1 THEN return       if NOT keyword_set ov1d  THEN placedessin   autre  posfenetre  posbar  contour   contour  DIREC   direc  endpoints   endpoints  _extra   ex       2eme partie: dessin       definition des vecteurs abscisse et ordonee   la triangulation est definie pour que le trace soit effectue du bas   a gauche vers le haut a droite  il faut donc la matrice e contourer   se presente de cette maniere  d ou certains transpose et reverse       case type of      y : begin       yy   z1d       IF  size gphi 0  EQ 1 then xx   gphi ELSE BEGIN          IF keyword_set key_irregular  THEN BEGIN            cln    where gphi EQ max gphi 0            xx   reform gphi cln MOD nx            ENDIF ELSE xx   reform gphi 0          ENDELSE       if keyword_set sin  then xx   sin pi 180 xx        min0   lat1   max0   lat2     END      x :begin       yy   z1d       xx   glam  0        min0   lon1   max0   lon2     END       z :begin       yy   reverse gdep  1        xx   reverse z1d  1        min0   0   max0   0       case n_elements boxzoom  of         0: y range    vert1  vert2          1: y range    0  boxzoom          2: y range   boxzoom         4: y range    vert1  vert2          5: y range    0  boxzoom 4          6: y range   boxzoom 4:5        endcase       if NOT keyword_set ov1d  then  y range   reverse y range      END    ENDCASE          definition des axes        if keyword_set integrationtps  then axe  type  time 0  time jpt 1  SIN   sin  _extra   ex        ELSE axe  type  SIN   sin   if NOT keyword_set ov1d  then axe  type  SIN   sin       dessin       if type EQ  z  then begin     idx   where xx NE valmask      if NOT keyword_set ov1d  then BEGIN        if min EQ mi then  x range    min abs max min 5  max abs max min 5          ELSE  x range    min  max      ENDIF   ENDIF ELSE BEGIN      idx   where yy NE valmask      if NOT keyword_set ov1d  then BEGIN        if min EQ mi then  y range    min abs max min 5  max abs max min 5          ELSE  y range    min  max      ENDIF   ENDELSE      if NOT keyword_set ov1d  then BEGIN      legende  mi  ma  type  CONTOUR   contour  DIREC   direc  ENDPOINTS   endpoints  _EXTRA   ex     ENDIF   IF keyword_set switchxy   THEN BEGIN     tmp   xx     xx   yy     yy   temporary tmp      if NOT keyword_set ov1d  then BEGIN        tmp    x        x    y        y   temporary tmp      ENDIF   ENDIF   if NOT keyword_set ov1d  then BEGIN      if keyword_set reverse_x  then  x range   reverse x range      if keyword_set reverse_y  then  y range   reverse y range    ENDIF     xx   xx idx    yy   yy idx    if  not keyword_set col1d  then col1d   0   if keyword_set sty1d  then BEGIN  si on veut faire des barres     IF strlowcase strtrim sty1d  EQ  bar  then begin        y range    y range 0 y range 1 y range 0 05   y range 1         bar_plot  yy  background    d n_colors 1    255             baselines   replicate y range 0  n_elements yy  barnames                 colors      replicate col1d  n_elements yy   outline       if n_elements ex  NE 0 then BEGIN    pour avoir un cadre de la couleur noire         if  where tag_names ex  EQ  COLOR 0  NE  1 then ex COLOR   0       ENDIF       plot   0   0   noerase   nodata  _extra   ex       GOTO  fini     ENDIF    ENDIF     if NOT keyword_set ov1d  then BEGIN        plot  xx  yy  color   col1d  linestyle   sty1d  thick   2  title     subtitle     _extra   ex     if n_elements ex  NE 0 then BEGIN    pour avoir un cadre de la couleur 0 et trace une ligne a y 0       if  where tag_names ex  EQ  COLOR 0  NE  1 then ex COLOR   0       if  where tag_names ex  EQ  LINESTYLE 0  NE  1 then ex LINESTYLE   0       if  where tag_names ex  EQ  THICK 0  NE  1 then ex THICK   0     ENDIF     plot   x range   0  0   noerase   nodata           xstyle   1 4 keyword_set endpoints  AND                          type EQ  x  AND lat1 NE lat2  OR  type EQ  y  AND lon1 NE lon2            ystyle   1  _extra   ex   ajout d un axe ds le cas ou l on utilise endpoints     if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex   trace une ligne a x 0     plot   0  0   y range   noerase   nodata  title     subtitle     _extra   ex   ENDIF ELSE oplot  xx  yy  color   col1d  linestyle   sty1d  thick   2  _extra   ex       3eme partie: impression eventuelle     fini:   terminedessin  _extra   ex   if keyword_set savedbox  THEN restoreboxparam   boxparam4plt1d dat      if n_elements key_performance  NE 0 then       IF key_performance EQ 1 THEN print   temps plt1d  systime 1 tempsun          return end  "); 
     
    271271a[269] = new Array("./ToBeReviewed/PLOTS/DIVERS/terminedessin.html", "terminedessin.pro", "", "          NAME:terminedessin     PURPOSE:termnine le dessin si besion est qd c est un postcsript      CATEGORY:mise en forme et allegement de l ecrityre de plt  pltz et pltt     CALLING SEQUENCE:terminedessin     INPUTS:     KEYWORD PARAMETERS:POST et SMALL cf l aide de plt     OUTPUTS:     COMMON BLOCKS:  common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          3 6 1999         PRO terminedessin  POST   post  SMALL   small  _extra   ex    cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF      if keyword_set post  then BEGIN       if keyword_set small  then         if total small  NE            page_margins 2 page_margins 0 total page_size              page_margins 1 page_margins 3  then return       closeps       printps    endif    return end"); 
    272272a[270] = new Array("./ToBeReviewed/PLOTS/LABEL/label.html", "label.pro", "", "          NAME:label     PURPOSE:permet de choisir le stype de label que l on veut utiliser   lors d un contour     CATEGORY:graphique     CALLING SEQUENCE:pro label cas min max ncontour level_z2d     INPUTS:  cas numero du type de label que l on veut tracer  min et max   valeures min et max entre lesquelles on veut faire   des contours     KEYWORD PARAMETERS:    INTERVALLE: valeur d un intervalle entre deux isolignes  par defaut   est calcule pour tracer 20 isolighnes  Dans tous les cas ce not cle   doit etre retourne pour pouvoir avoir une belle legende  Si les   niveaux ne comportent pas d intevalle regulier  le mettre a  1    NLEVEL: nombre de contours a dessiner  par defaut  20  actif si   LABEL 0 ou nest pas specifie      OUTPUTS:  ncontour nombre de contour a tracer  level_z2d vecteur contenant les valeurs des contours que l on trace         colnumb: un vecteur contenant le numero des couleurs qui serviront a                 remplir entre les contours      COMMON BLOCKS:  common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr   7 5 98         pro label  cas  min  max  ncontour  level_z2d  colnumb  NLEVEL   nlevel              INTERVALLE intervalle  STRICTFILL   strictfill  common    if  d name EQ  PS  OR  d name EQ  Z  then BEGIN       old_dname    d name       thisOS    VERSION OS_FAMILY       thisOS   STRMID thisOS  0  3        thisOS   STRUPCASE thisOS        CASE thisOS of           MAC : SET_PLOT  thisOS           WIN : SET_PLOT  thisOS          ELSE: SET_PLOT   X        ENDCASE        p BACKGROUND d n_colors 1   ncontour          level_z2d    min    max min findgen Ncontour Ncontour           colnumb      ncoul findgen Ncontour Ncontour ncoul 2 ncontour           intervalle   level_z2d 1 level_z2d 0        end       1: begin  un certain nombre de label en partant du min jusqu au plus pres de max avec   un pas fixe par intervalle          ncontour    fix max min intervalle           ncontour   1   ncontour          level_z2d   min   intervalle findgen Ncontour            colnumb     ncoul findgen Ncontour Ncontour ncoul 2 ncontour           max level_z2d Ncontour 1 intervalle       end   label pour faire les memes sss que dessier        2: begin          lct  63  file    palette tbl           level_z2d     20  25  30  31  32  33  33 5  34 25 findgen 16           ncontour 23          colnumb      findgen 23 1          masx   37 75          intervalle    1          return       end       3: begin   lecture intervalles   palette dans fichier GMT           label_gmt  min  max  intervalle  ncoul  ncontour  level_z2d  colnumb        end       else: begin          ras   report Le numero de label demande n existe pas        end    ENDCASE    if keyword_set strictfill  then begin       ncontour   ncontour 1       level_z2d    level_z2d  max        colnumb    colnumb  ncoul 1     endif    return end"); 
    273 a[271] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", "   Id: label_date pro 39 2006 05 02 15:05:06Z pinsard       Copyright  c  1993 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited       NAME:  LABEL_DATE     PURPOSE:  This function labels axes with dates and times      CATEGORY:  Plotting      CALLING SEQUENCE:  To set up:  dummy   LABEL_DATE DATE_FORMAT string   To use:  PLOT  x  y  XTICKFORMAT LABEL_DATE      INPUTS:  No explicit user defined inputs  When called from the plotting  routines  the input parameters are  Axis  Index  Value      KEYWORD PARAMETERS:  DATE_FORMAT: a format string which may contain the following:          M for month  3 character abbr           N for month  2 digit abbr           D for day of month           Y for 4 digit year           Z for last two digits of year        For time:          H for Hours  2 digits           I for mInutes  2 digits           S for Seconds  2 digits            is         Other characters are passed directly thru        For example   M  D   Y  prints DEC 11  1993          M  2Y  yields DEC 93          D M  yields 11 DEC          D N Y  yields 11 12 1993          M C Y  yields DEC on the top line  1993 on         the bottom  C is the new line graphic command     MONTHS:      The names of the months  a twelve element string array        If omitted  use Jan  Feb    Dec     OFFSET:      An optional starting offset of the plot   Unfortunately  single precision floating point is not accurate  enough to properly represent Julian times   This offset  which  may be double precision  contains an offset that is added to  all x values  before conversion to Julian date and time     OUTPUTS:  The date string to be plotted      COMMON BLOCKS:  LABEL_DATE_COM      RESTRICTIONS:  Only one date axis may be simultaneously active      PROCEDURE:  Straightforward            For an alternative way to label a plot axis with dates  refer to         the C  format code accepted within format strings  applicable via         the  XYZ TICKFORMAT keywords   This new format code was          introduced in IDL 5 2      EXAMPLE:  For example  to plot from Jan 1  1993  to July 12  1994:    Start_date   julday 1  1  1993     End_date   julday 7  12  1994     Dummy   LABEL_DATE DATE_FORMAT N D    Simple mm dd    x   findgen end_date 1   start_date    start_date  Time axis    PLOT  x  sqrt x  XTICKFORMAT    LABEL_DATE  XSTYLE 1     Plot with X axis style set to exact      Example with times:  For example  to plot from 3PM  Jan 1  1993  to 5AM  Jan 3   1993:  Start_date   Julday 1 1 1993     Also starting offset  Start_time    3 12 24           Starting_time less offset  End_time    Julday 1 3 1993    Start_date    5 24   Ending          date time   offset  note that the order of operations is                   important to avoid loss of precision   Dummy   LABEL_DATE DATE_FORMAT D  M C H: I     offset Start_date         MMM NN  HH:MM format  x   findgen 20     End_time   Start_time    19   start_time  Time axis  PLOT  x  sqrt x  XTICKFORMAT    LABEL_DATE  XSTYLE 1     MODIFICATION HISTORY:  DMS  RSI April  1993 Written   DMS  RSI March  1997 Added Time format     FUNCTION LABEL_DATE  axis  index  x  DATE_FORMAT   format  MONTHS   months                  OFFSET  offs  _EXTRA   ex COMMON label_date_com  fmt  month_chr  offset  if keyword_set format  then begin  Save format string      if n_elements offs  ne 0 then offset   double offs  else offset   0 0d0     if keyword_set months  then month_chr   months       else month_chr    Jan Feb Mar   Apr   May   Jun   Jul                           Aug   Sep   Oct   Nov   Dec      fmt   format     return  0 endif  if n_elements month_chr  ne 12 or n_elements fmt  le 0     or n_elements offset  eq 0 then     message  Not initialized   x1   x   offset caldat  long x1  month  day  year  _EXTRA   ex Get the calendar date from julian frac   x1   long x1              time of day  from 0 to 1   n   strlen fmt  out      for i 0  n 1 do begin            Each format character      c   strmid fmt  i  1         The character      if c eq   then begin         i   i   1         c   strmid fmt  i  1     The function         case c of format character               M  : out   out   month_chr month 1               N  : out   out   string format i2 2  month               D  : out   out   string format i2 2  day               Y  : out   out   string format i4  year               Z  : out   out   string format i2 2  year  mod 100               H  : out   out   string format i2 2  floor 24 frac               I  : out   out   string format i2 2  floor 1440   frac mod 60               S  : out   out   string format i2 2  86400L   frac mod 60                : out   out                 else : message   Illegal character in date format string:  fmt         endcase     endif else out   out   c endfor return  out end"); 
     273a[271] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", "   Id: label_date pro 97 2006 06 09 15:18:59Z pinsard       Copyright  c  1993 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited       NAME:  LABEL_DATE     PURPOSE:  This function labels axes with dates and times      CATEGORY:  Plotting      CALLING SEQUENCE:  To set up:  dummy   LABEL_DATE DATE_FORMAT string   To use:  PLOT  x  y  XTICKFORMAT LABEL_DATE      INPUTS:  No explicit user defined inputs  When called from the plotting  routines  the input parameters are  Axis  Index  Value      KEYWORD PARAMETERS:  DATE_FORMAT: a format string which may contain the following:          M for month  3 character abbr           N for month  2 digit abbr           D for day of month           Y for 4 digit year           Z for last two digits of year        For time:          H for Hours  2 digits           I for mInutes  2 digits           S for Seconds  2 digits            is         Other characters are passed directly thru        For example   M  D   Y  prints DEC 11  1993          M  2Y  yields DEC 93          D M  yields 11 DEC          D N Y  yields 11 12 1993          M C Y  yields DEC on the top line  1993 on         the bottom  C is the new line graphic command     MONTHS:      The names of the months  a twelve element string array        If omitted  use Jan  Feb    Dec     OFFSET:      An optional starting offset of the plot   Unfortunately  single precision floating point is not accurate  enough to properly represent Julian times   This offset  which  may be double precision  contains an offset that is added to  all x values  before conversion to Julian date and time     OUTPUTS:  The date string to be plotted      COMMON BLOCKS:  LABEL_DATE_COM      RESTRICTIONS:  Only one date axis may be simultaneously active      PROCEDURE:  Straightforward            For an alternative way to label a plot axis with dates  refer to         the C  format code accepted within format strings  applicable via         the  XYZ TICKFORMAT keywords   This new format code was          introduced in IDL 5 2      EXAMPLE:  For example  to plot from Jan 1  1993  to July 12  1994:    Start_date   julday 1  1  1993     End_date   julday 7  12  1994     Dummy   LABEL_DATE DATE_FORMAT N D    Simple mm dd    x   findgen end_date 1   start_date    start_date  Time axis    PLOT  x  sqrt x  XTICKFORMAT    LABEL_DATE  XSTYLE 1     Plot with X axis style set to exact      Example with times:  For example  to plot from 3PM  Jan 1  1993  to 5AM  Jan 3   1993:  Start_date   Julday 1 1 1993     Also starting offset  Start_time    3 12 24           Starting_time less offset  End_time    Julday 1 3 1993    Start_date    5 24   Ending          date time   offset  note that the order of operations is                   important to avoid loss of precision   Dummy   LABEL_DATE DATE_FORMAT D  M C H: I     offset Start_date         MMM NN  HH:MM format  x   findgen 20     End_time   Start_time    19   start_time  Time axis  PLOT  x  sqrt x  XTICKFORMAT    LABEL_DATE  XSTYLE 1     MODIFICATION HISTORY:  DMS  RSI April  1993 Written   DMS  RSI March  1997 Added Time format     FUNCTION LABEL_DATE  axis  index  x  DATE_FORMAT   format  MONTHS   months                  OFFSET  offs  _EXTRA   ex COMMON label_date_com  fmt  month_chr  offset  if keyword_set format  then begin  Save format string      if n_elements offs  ne 0 then offset   double offs  else offset   0 0d0     if keyword_set months  then month_chr   months       else month_chr    Jan Feb Mar   Apr   May   Jun   Jul                           Aug   Sep   Oct   Nov   Dec      fmt   format     return  0 endif  if n_elements month_chr  ne 12 or n_elements fmt  le 0     or n_elements offset  eq 0 then     message  Not initialized   x1   x   offset caldat  long x1  month  day  year  _EXTRA   ex Get the calendar date from julian frac   x1   long x1              time of day  from 0 to 1   n   strlen fmt  out      for i 0  n 1 do begin            Each format character      c   strmid fmt  i  1         The character      if c eq   then begin         i   i   1         c   strmid fmt  i  1     The function         case c of format character               M  : out   out   month_chr month 1               N  : out   out   string format i2 2  month               D  : out   out   string format i2 2  day               Y  : out   out   string format i4  year               Z  : out   out   string format i2 2  year  mod 100               H  : out   out   string format i2 2  floor 24 frac               I  : out   out   string format i2 2  floor 1440   frac mod 60               S  : out   out   string format i2 2  86400L   frac mod 60                : out   out                 else : message   Illegal character in date format string:  fmt         endcase     endif else out   out   c endfor return  out end"); 
    274274a[272] = new Array("./ToBeReviewed/PLOTS/LABEL/label_gmt.html", "label_gmt.pro", "", "    Apply GMT palette into IDL color intervals system   PRO label_gmt  min  max  intervalle  ncoul  ncontour  level_z2d  coul  common  com_eg     IF pal_type NE  2dom  THEN BEGIN      color defined in lec_pal_gmt pro        ncontour   ncont_gmt       level_z2d   levels_gmt       coul   coul_gmt       max   max_gmt       intervalle     1     ENDIF ELSE BEGIN           grey_shade palette  case 1 in label        IF finite min  EQ 0 THEN read    Grey shade needs a min max :  min  max       ncontour    fix max min intervalle        level_z2d   min   intervalle findgen Ncontour         max level_z2d Ncontour 1 intervalle        print        Number of contour intervals  plotting min   max   ncontour  min  max       print               color index        IF idx_pal EQ 0 THEN BEGIN              build palette          red   lonarr 99           red    255          red 50:98    long 100 float grey_shade 100 255            IF field origin EQ  diff  THEN BEGIN                      difference plot : lighter below first negative interval             red 51:98    long 100 float grey_shade_2 100 255              red 1:48    long 100 float grey_shade 100 255              red 50    255           ENDIF              first color black            last   white          red    0  red           red 99    255            gray scale          green   red          blue   red           tvlct  red  green  blue        ENDIF           mid_index   max where level_z2d LE fldatt mid        coul   findgen Ncontour 49 mid_index  2     ENDELSE    END "); 
    275275a[273] = new Array("./ToBeReviewed/PLOTS/LABEL/lataxe.html", "lataxe.pro", "", "          NAME:LATAXE     PURPOSE:fonction appelee par  XYZ TICKFORMAT  cf l help pour voir           comment l utiliser  pour labeller les axes en latitude      CATEGORY:graphe     CALLING SEQUENCE: XYZ TICKFORMAT lataxe      INPUTS:fournis  et imposes  automatiquement par IDL: axis  index  value:  Axis is the axis number: 0 for X axis  1 for Y axis  2 for Z axis   Index is the tick mark index which starts at 0   Value is the default tick mark value  a floating point number    KEYWORD PARAMETERS:     OUTPUTS:un string  utilise automatiquement pour labeller     COMMON BLOCKS:     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                                                    14 10 1999 format des labels         FUNCTION lataxe  axis  index  value     on ramenne value ds le segment  0 180     lat value mod 360    if lat lt 0 then lat lat 360    if lat gt 180 then lat lat 180   format des labels:    case 1 of       lat EQ round lat :fmt    i4        10 lat EQ round 10 lat :fmt    f6 1        ELSE:fmt    f7 2     endcase   on ecrit le label    if lat le 90 and lat ne 0 then nom string lat      format fmt N     if lat gt 90              then nom string 180 lat  format fmt S     if lat eq  0              then nom string lat      format fmt       return  nom end "); 
     
    277277a[275] = new Array("./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html", "ajoutvect.pro", "", "          NAME:ajoutvect     PURPOSE:surimprimme des vecteur sur un champ tarce par plt     CATEGORY:grafique     CALLING SEQUENCE:ajoutvect vecteur      INPUTS:  vecteur: une structure a 2 elements contenant les 2 matrices U  et V des valeurs de la composante zonale et meridienne du  champ de vecteurs a tracer          par ex:         vecteur matriceu:lec unsurface matricev:lec vnsurface          rq:le nom des elements de vecteur n a aucune importance          vecteur u:lec unsurface v:lec vnsurface  convient aussi     KEYWORD PARAMETERS:    UNVECTSUR:un scalaire n on un tableau a 2 elements  n1 n2            dans le premier cas  on tracera un vecteur sur n suivant les           x et les y            dans le second cas on tracera un vecteur sur n1 suivant x           et un vecteur sur n2 suivant y         Rq  pour tracer tous les vecteurs suivant y et 1 sur 2 suivant         x mettre unvectsur 2 1     VECTMIN norme minimun des vecteurs a tracer     VECTMAX norme minimun des vecteurs a tracer      OUTPUTS:     COMMON BLOCKS:  common pro      SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr   10 3 1999                         11 6 1999 compatibilite avec NAN et la lecture                         des structures          pro ajoutvect vecteur  vectlegende  UNVECTSUR unvectsur VECTMIN vectmin  VECTMAX vectmax  _EXTRA   ex  common    tempsun   systime 1            pour key_performance        u   litchamp vecteur 0     u   checkfield u   plt  TYPE    xy   NOQUESTION     v   litchamp vecteur 1     v   checkfield v   plt  TYPE    xy   NOQUESTION        on recupere les eventuelles info sur les champs      grilleu   litchamp vecteur 0   grid     if grilleu EQ   then grilleu    U     grillev   litchamp vecteur 1   grid     if grillev EQ   then grillev    V      IF grilleu EQ  V  AND grillev EQ  U  THEN inverse   1    IF grilleu EQ grillev THEN interpolle    0 ELSE interpolle   1    if keyword_set inverse  then begin       rien   u       u   v       v   rien    endif     on trouve les points que u et v ont en communs      if interpolle then begin       indicexu    lindgen jpi firstxu:firstxu nxu 1        indicexv    lindgen jpi firstxv:firstxv nxv 1        indicex   inter indicexu  indicexv        indiceyu    lindgen jpj firstyu:firstyu nyu 1        indiceyv    lindgen jpj firstyv:firstyv nyv 1        indicey   inter indiceyu  indiceyv        nx   n_elements indicex         ny   n_elements indicey        indice2d   lindgen jpi  jpj        indice2d   indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1      extraction de u et v sur le domaine qui convient         case 1 of           size u 0  NE 2 OR  size v 0  NE 2: return           size u 1  EQ nxu AND  size u 2  EQ nyu AND              size v 1  EQ nxv AND  size v 2  EQ nyv:BEGIN              if nxu NE nx then                if indicex 0  EQ firstxu then u   u 0:nx 1    ELSE u   u 1: nx                 IF nxv NE nx THEN                if indicex 0  EQ firstxv then v   v 0:nx 1    ELSE v   v 1: nx                IF nyu NE ny THEN                if indicey 0  EQ firstyu then u   u  0:ny 1  ELSE u   u  1: ny               IF nyv NE ny THEN                if indicey 0  EQ firstyv then v   v  0:ny 1  ELSE v   v  1: ny           END           size u 1  EQ jpi AND  size u 2  EQ jpj AND              size v 1  EQ jpi AND  size v 2  EQ jpj:BEGIN              u   u indice2d              v   v indice2d           END          ELSE:BEGIN              ras   report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs              return          end       endcase     on reform u et v pour s assurer qu aucune dimension n a ete ecrasee         if ny EQ 1 then begin          u   reform u  nx  ny           v   reform v  nx  ny        endif     construction de u et v aux pts T         a u 0        u u shift u 1 0 2        if NOT keyword_set key_periodic  OR nx NE jpi then u 0 a       a v 0        v v shift v 0 1 2        if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution du mask et des tableau de longitude et latitude   on recupere la grille complette pour etablir un grand mask etendu ds les 4   directions pour couvrir les points pour lesquels un pt terre a ete pris en   compte  faire un petit dessin          vargrid T        msku    umask indice2d jpi jpj firstzt        mskv    vmask indice2d jpi jpj firstzt        glam   glamt indice2d        gphi   gphit indice2d        if ny EQ 1 then begin          msku   reform msku  nx  ny           mskv   reform mskv  nx  ny             glam   reform glam  nx  ny             gphi   reform gphi  nx  ny        endif     on masque u et v le long des cotes  la on l on ne peut pas calculer   la moyenne      extention du mask       u   u msku shift msku 1 0        v   v mskv shift mskv 0 1     ENDIF ELSE BEGIN        u   u tmask firstxt:lastxt firstyt:lastyt firstzt        v   v tmask firstxt:lastxt firstyt:lastyt firstzt        indice2d   lindgen jpi  jpj        indice2d   indice2d firstxt:lastxt  firstyt:lastyt        nx   nxt       ny   nyt    endelse    tabnorme sqrt u 2 v 2     nan   where finite u   nan  EQ 1     if nan 0  NE  1 then u nan    1e5    nan   where finite v   nan  EQ 1     if nan 0  NE  1 then v nan    1e5    if keyword_set vectmin  then BEGIN        toosmall where tabnorme lt vectmin        if toosmall 0  NE  1 then begin          u toosmall    1e5          v toosmall    1e5       ENDIF    endif    if keyword_set vectmax  then BEGIN       toobig where tabnorme gt vectmax        if toobig 0  NE  1 then begin          u toobig    1e5          v toobig    1e5       ENDIF    ENDIF     remise d une grande valeur sur tous les points pour lesquelles on ne   put faire le calcul      if interpolle then t2   msku shift msku 1 0 mskv shift mskv 0 1       ELSE t2   tmask firstxt:lastxt firstyt:lastyt firstzt     if NOT keyword_set key_periodic  OR nx NE jpi then t2 0   0     t2 0 0     terre where t2 eq 0     if terre 0  ne  1 then begin       u terre 1e5       v terre 1e5    ENDIF     tracer qu un vecteur sur      if keyword_set unvectsur  then BEGIN     indx est un vecteur contenant les numero des colonnes a selectionner    indy est un vecteur contenant les numero des lignes a selectionner        if n_elements unvectsur  EQ 1 then begin          indx   where lindgen nx  MOD unvectsur 0  eq 0           indy   where lindgen ny  MOD unvectsur 0  eq 0        ENDIF ELSE BEGIN           indx   where lindgen nx  MOD unvectsur 0  eq 0           indy   where lindgen ny  MOD unvectsur 1  eq 0        ENDELSE   a partir de indx et indy on va construire un tableau d indices 2d   qui donnera les indices des points intersections des colonnes   specifiee par indx        indicereduit   indx replicate 1 n_elements indy nx replicate 1 n_elements indx indy   on reduit les tableaux qui vont etre passes a vecteur        u   u indicereduit        v   v indicereduit        tabnorme   tabnorme indicereduit       endif           if keyword_set inverse  then begin       rien   u       u   v       v   rien    endif     trace des vecteurs      vecteur  u  v  tabnorme  indice2d  indicereduit  missing 1e5  _extra   ex     on complete la legende      if terre 0  ne  1 then mini   min tabnorme where t2 eq 1  max   maxi   nan       ELSE mini   min tabnorme  max   maxi   nan         if litchamp vecteur 0   u  NE   then       vectlegende    minmax: mini  maxi  unite:litchamp vecteur 0   u       ELSE vectlegende    minmax: mini  maxi  unite:varunit    sortie:    if keyword_set key_performance  NE 0 THEN print   temps ajoutvect  systime 1 tempsun     return end  "); 
    278278a[276] = new Array("./ToBeReviewed/PLOTS/VECTEUR/vecteur.html", "vecteur.pro", "", "          NAME:vecteur     PURPOSE: trace des vecteurs  meme situees sur une grille tordue  sur   n importe quelle projection  de telle sorte que tous les vecteurs   aient une norme comparable sur le dessin  en clair  un vecteur qui   doit faire 1cm le fait quelque soit la projection et sa position sur   la sphere       CATEGORY:trace de vecteur     CALLING SEQUENCE:vecteur  composanteu  composantev  normevecteur  indice2d  reduitindice2d      INPUTS: COMPOSANTEU et COMPOSANTEV: ce sont les composantes des   vecteurs a tracer  Ces tableaux 2d ont la meme dimension que   reduitindice2d  cf apres          INDICE2D: indice permettant de passer d un tableau jpi jpj au         zoom surlequel on fait le dessin          REDUITINDICE2D: indice permettant de passer d un tableau         definit par indice2d au tableau pourlequel on a reelement des         vecteurs a tracer  en clair: c est par ex qd on ne trace par exemple         que un vecteur sur 2      KEYWORD PARAMETERS:          CMREF: la longeur en cm sur le papier que diot faire la fleche        de norme normeref  par defaut ajuste au dessin et compris entre         5 et 1 5 cm          MISSING: la valeur d une missing value  ne pas utilisder ce        mot cle  fixe a 1e5 par ajoutvect pro                NORMEREF: la norme de la fleche de reference  par defaut on        essaie de faire qqch qui colle pas trop mal           VECTCOLOR: la couleur de la fleche  Par defaut noir  couleur 0           VECTTHICK  l epaissuer de la fleche  par defaut 1           VECTREFPOS: vecteur de 2 elements specifiant la position en        coordonnees DATA du debut du vecteur de reference  Par defaut        en bas a droite du dessin           VECTREFFORMAT: format a utiliser pour specifier la norme du        vecteur de reference            NOVECTREF: pour supprimer l affichage du vecteur de reference      OUTPUTS:     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:    Creation : 13 02 98 G  Roullet  grlod lodyc jussieu fr     Modification : 14 01 99 realise la transformation    spheriquecartesien G  Roullet                   12 03 99 verification de la routine G  Roullet    8 11 1999:    G  Roullet et Sebastien Masson  smasson lodyc jussieu fr     adaptation pour les zoom  reverification traitement separe de la    direction et de la norme des vecteurs  mots cles NORMEREF et CMREF           FUNCTION cv_cm2normal  angle     donne la longeur en coordonnes normales d un trait ortiente de   angle par rapport a l axe des x et qui doit faire 1 cm sur le   dessin    angle peut etre un tableau     common   quelle est la longeur en coordonnees normales d un trait qui fera 1   cm sur le parier et qui est parallele a x    mipgsz   min page_size  max   mapgsz     sizexfeuille   mipgsz key_portrait mapgsz 1 key_portrait     sizeyfeuille   mapgsz key_portrait mipgsz 1 key_portrait     cm_en_normal   1 sizexfeuille      si le rapport d aspect de la fenetre n est pas egale a 1  la    longeur en coordonees normalise d un trait de 1cm varie suivant    l angle polaire de ce trait       aspect   sizexfeuille sizeyfeuille    cm_en_normal   cm_en_normal sqrt  1  aspect 2 1 sin angle 2        return  cm_en_normal END   PRO normalise  u  v  w     normalise le vecteur      IF n_elements w  NE 0 THEN BEGIN        norme   sqrt u 2 v 2 w 2        ind   where norme NE 0        u ind    u ind norme ind        v ind    v ind norme ind        w ind    w ind norme ind     ENDIF ELSE BEGIN       norme   sqrt u 2 v 2        ind   where norme NE 0        u ind    u ind norme ind        v ind    v ind norme ind     ENDELSE  END PRO vecteur  composanteu  composantev  normevecteur  indice2d  reduitindice2d                  CMREF   cmref  MISSING   missing  NORMEREF   normeref                  VECTCOLOR   vectcolor  VECTTHICK   vectthick  VECTREFPOS   vectrefpos                  VECTREFFORMAT   vectrefformat  NOVECTREF   novectref  _extra   extra  common    tempsun   systime 1            pour key_performance        taille   size composanteu     nx   taille 1     ny   taille 2     if n_elements reduitindice2d  EQ 0 then reduitindice2d   lindgen nx  ny     zu   composanteu    zv   composantev    norme   normevecteur    taille   size indice2d     nxgd   taille 1     nygd   taille 2       msk   replicate 1  nx  ny     if keyword_set missing  then terre   where abs zu  GE missing 10  ELSE terre    1    if terre 0  NE  1  then BEGIN        msk terre    0       zu terre    0       zv terre    0       norme terre    0    ENDIF     Etape 1:      etant donne la direction et le sens que le vecteur a sur la   sphere  il faut se debrouiller pour determiner cette direction et le   sens qu aura le vecteur sur l ecran ou la feuille une fois qu il   aura ete projete      En theorie: sur la sphere  un vecteur en un point donne a pour   direction la tangente au cercle qui passe par le centre de la terre   et par le vecteur  Donc trouver la direction une fois la projection   faite ds le plan 2d  c est trouver la tangente a la courbe   representant la projection du cercle sur le plan 2d au point   representant la projection du point de depart de la shere sur le   plan 2d      En pratique on ne connait pas la definition de la courbe que donne   la projection d un cercle alors trouver sa tangente en un point      Ce que l on fait:   Ds un repere cartesien 3d           a  on trouve les coordonnees du point T  debut de la fleche          situe sur la shere          b  pour chaque point T on determine les directions locales         definies par la grille en ce point et auxquelles se rapportent         les coordonnes  u v  du vecteur  Ces directions locales sont         definies par les gradiants des glam et gphi  Une fois ces         directions obtenues  on les considere comme orthogonales et en         les normant on construit un repere orthonormal  nu nv  auquel se         rapporte les coordonnes  u v  du vecteur  Ds le repere         cartesien 3d de depart  le vecteur est definit par:         V u nu v nv  ou V  nu et nv sont des vecteurs 3d et u et v des         scalaires          c  pour approximer la tangente au cercle par la corde definie         par le debut et la fin de la fleche  on va normaliser V puis         le diviser par 100          d  ceci nous permet de determiner les coordonnees ds le repere         cartesien 3d des extremites de la corde  on les passe en         coordonnes sphereriques de facon a recuperer les positions en         latitude longitude de ces points sur la sphere          e  on passe les coordonnees de ces points en coordonnees         normalise puis en corrdonnes polaire de facon a trouver         l angle et la direction qu ils determinent sur le dessin        etape 1  a        coordonnes du point T  debut de la fleche  en coordonnes sheriques    glam   glamt indice2d reduitindice2d     gphi   gphit indice2d reduitindice2d      coordonnes du point T  debut de la fleche  dans le repere cartesien   on utilise comme shere  une shere de rayon 1       radius   replicate 1 nx ny     coord_sphe   transpose   glam   gphi   radius       r   cv_coord from_sphere coord_sphe to_rect degrees       x0   reform r 0    nx  ny     y0   reform r 1    nx  ny     z0   reform r 2    nx  ny      etape 1  b      Construction du vecteur nu  resp  nv  vecteur norme porte par   l axe des points u i j  et u i 1 j   resp v i j  et v i j 1    qui definissent pour chaque point sur la shere les directions locales   associee a u et v  ces vecteurs definissent un repere orthonorme   local     ces vecteurs sont construits dans un repere cartesien  cv_coord    on a choisit un rayon de la terre unite  unit      definition de nu    radius   replicate 1 nxgd nygd     IF finite glamu 0 gphiu 0  NE 0 THEN        coord_sphe   transpose   glamu indice2d   gphiu indice2d   radius         ELSE coord_sphe   transpose   glamf indice2d   gphit indice2d   radius       r   cv_coord from_sphere coord_sphe to_rect degrees    coordonnes de points de la grille u en cartesien    ux   reform r 0    nxgd  nygd     uy   reform r 1    nxgd  nygd     uz   reform r 2    nxgd  nygd    calcul de nu     nux   ux shift ux  1  0     nuy   uy shift uy  1  0     nuz   uz shift uz  1  0    conditions aux limites    if NOT keyword_set key_periodic  OR nxgd NE jpi then begin       nux 0      nux 1          nuy 0      nuy 1          nuz 0      nuz 1       ENDIF   reduction de la grille    nux   nux reduitindice2d     nuy   nuy reduitindice2d     nuz   nuz reduitindice2d    definition de nv    IF finite glamv 0 gphiv 0  NE 0 THEN      coord_sphe   transpose   glamv indice2d   gphiv indice2d   radius         ELSE coord_sphe   transpose   glamt indice2d   gphif indice2d   radius                       r   cv_coord from_sphere coord_sphe to_rect degrees    coordonnes de points de la grille v en cartesien    vx   reform r 0    nxgd  nygd     vy   reform r 1    nxgd  nygd     vz   reform r 2    nxgd  nygd    calcul de nv     nvx   vx shift vx  0  1     nvy   vy shift vy  0  1     nvz   vz shift vz  0  1    conditions aux limites    nvx  0    nvx  1     nvy  0    nvy  1     nvz  0    nvz  1    reduction de la grille    nvx   nvx reduitindice2d     nvy   nvy reduitindice2d     nvz   nvz reduitindice2d      normalisation      normalise  nux  nuy  nuz    normalise  nvx  nvy  nvz     etape 1  c      coordonnes du vecteur V ds le repere cartesion      direcx   zu nux   zv nvx    direcy   zu nuy   zv nvy    direcz   zu nuz   zv nvz   normalisation du vecteur v    normalise  direcx  direcy  direcz   on divise par 100     direcx   direcx 100     direcy   direcy 100     direcz   direcz 100      etape 1  d    coordonnees de la pointe de la fleche dans le repere cartesien     x1   x0   direcx    y1   y0   direcy    z1   z0   direcz    coordonnees de la pointe en spherique     coord_rect   transpose   x1   y1   z1       r   cv_coord from_rect coord_rect to_sphere degrees     glam1   reform r 0    nx  ny     gphi1   reform r 1    nx  ny       modif des glam tout se passe bien au niveau de la ligne de   changement de date attention  il ne faut pas couper les fleches   qui sortent de la fenetre    test: si il sort du cadre mais qu avec un   360 il y rentre on le   modifie       ind   where glam1 LT  x range 0  AND glam1 360  LE  x range 1     if ind 0  NE  1 then glam1 ind    glam1 ind 360     ind   where glam1 GT  x range 1  AND glam1 360  GE  x range 0     if ind 0  NE  1 then glam1 ind    glam1 ind 360      ind   where glam LT  x range 0  AND glam 360  LE  x range 1     if ind 0  NE  1 then glam ind    glam ind 360     ind   where glam  GT  x range 1  AND glam 360  GE  x range 0     if ind 0  NE  1 then glam ind    glam ind 360        etape 1  e       r   convert_coord glam gphi data to_normal      x0   r 0                      coordonnes normales du debut de la fleche    y0   r 1                              r   convert_coord glam1 gphi1 data to_normal      x1   r 0                      coordonnes normales de la fin de la fleche  avant scaling     y1   r 1                           tests pour eviter que des fleches soient dessineees hors du domaine      out   where x0 LT  p position 0  OR x0 GT  p position 2                    OR y0 LT  p position 1  OR y0 GT  p position 3     if out 0  NE  1 THEN x0 out     values f_nan     suivant les projections  il peu y a voir des points a nan qd on   passe en coordonnes normales  on supprime ces points       nan   finite x0 y0 x1 y1     number   where nan EQ 1     x0   x0 number    x1   x1 number     y0   y0 number    y1   y1 number     msk   msk number     norme   norme number      on definit le vecteur direction dans le repere normalise      dirx   x1 x0    diry   y1 y0     on passe en polaire pour recuperer l angle qui etait le but de   toute la partie 1        dirpol   cv_coord from_rect   transpose   dirx   diry     to_polar     dirpol   msk dirpol 0        2eme etape      maintenant on s occupe de la norme      Mise a l echelle automatique      if NOT keyword_set cmref  then BEGIN        mipgsz   min page_size  max   mapgsz        sizexfeuille   mipgsz key_portrait mapgsz 1 key_portrait        sizexfeuille   10 sizexfeuille       cmref   5   floor sizexfeuille 10    15       cmref   cmref 10     ENDIF    if NOT keyword_set normeref  then BEGIN       value   max norme        puissance10   10 floor alog10 value        normeref   puissance10 floor value puissance10     endif    cm   1 normeref cmref     on modifie le tableau norme de facon a ce que un element qui a la   valeur cm soit represente par un trait de longueur 1cm sur le   papier    norme contient la norme des vecteur que l on veut dessiner      norme   1 1 cm norme cv_cm2normal dirpol        3eme etape    maintenant qu on a l angle et la norme  et bien on recupere les   coordonnes en rectangulaire et on dessine les fleches       r   cv_coord from_polar   transpose   dirpol   norme     to_rect     composantex   r 0       composantey   r 1         x1   x0 composantex    y1   y0 composantey     c est parti pour le trace        if NOT KEYWORD_SET vectcolor  then vectcolor   0     points   where msk EQ 1     IF points 0  NE  1 THEN arrow  x0 points  y0 points  x1 points  y1 points   norm         hsize    2  COLOR   vectcolor  THICK   vectthick      Dessine une fleche en bas a droite de la figure en guise de legende      if NOT keyword_set novectref  then BEGIN       dx   cmref cv_cm2normal 0    longuer du vecteur de reference en coordonnes normalisees        if keyword_set vectrefformat  then          normelegende   strtrim string normeref  format   vectrefformat  1            ELSE normelegende   strtrim normeref  1            if keyword_set vectrefpos  then begin          r   convert_coord vectrefpos data   to_normal           x0   r 0           y0   r 1        ENDIF ELSE BEGIN          x0    x window 1 dx          r   convert_coord d x_ch_size   d y_ch_size   device   to_normal           dy   3 r 1 p charsize          y0    y window 0 dy       ENDELSE        arrow  x0  y0  x0 dx  y0   norm  hsize    2  color   0       xyouts  x0  y0  normelegende   norm  align   1  charsize    p charsize  color   0     endif         if keyword_set key_performance  NE 0 THEN print   temps vecteur  systime 1 tempsun         return END     "); 
    279 a[277] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", "   Id: velovect pro 41 2006 05 02 15:12:07Z pinsard       Copyright  c  1983 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited   PRO VELOVECT U V X Y  Missing   Missing  Length   length  Dots   dots             Color color  CLIP clip  NOCLIP noclip  OVERPLOT overplot  _EXTRA extra        NAME:  VELOVECT     PURPOSE:  Produce a two dimensional velocity field plot     A directed arrow is drawn at each point showing the direction and   magnitude of the field                     CATEGORY:  Plotting  two dimensional      CALLING SEQUENCE:  VELOVECT  U  V   X  Y      INPUTS:  U: The X component of the two dimensional field     U must be a two dimensional array     V: The Y component of the two dimensional field   Y must have  the same dimensions as X   The vector at point  i j  has a   magnitude of:    U i j 2   V i j 2 0 5    and a direction of:    ATAN2 V i j U i j      OPTIONAL INPUT PARAMETERS:    X: Optional abcissae values   X must be a vector with a length   equal to the first dimension of U and V     Y: Optional ordinate values   Y must be a vector with a length  equal to the first dimension of U and V      KEYWORD INPUT PARAMETERS:  COLOR: The color index used for the plot     DOTS: Set this keyword to 1 to place a dot at each missing point    Set this keyword to 0 or omit it to draw nothing for missing  points   Has effect only if MISSING is specified     LENGTH: Length factor   The default of 1 0 makes the longest  U V   vector the length of a cell            MISSING: Missing data value   Vectors with a LENGTH greater  than MISSING are ignored            OVERPLOT: Set this keyword to make VELOVECT  overplot   That is  the                 current graphics screen is not erased  no axes are drawn  and                 the previously established scaling remains in effect       Note:   All other keywords are passed directly to the PLOT procedure  and may be used to set option such as TITLE  POSITION    NOERASE  etc    OUTPUTS:  None      COMMON BLOCKS:  None      SIDE EFFECTS:  Plotting on the selected device is performed   System  variables concerning plotting are changed      RESTRICTIONS:  None      PROCEDURE:  Straightforward   Unrecognized keywords are passed to the PLOT  procedure        MODIFICATION HISTORY:  DMS  RSI  Oct  1983   For Sun  DMS  RSI  April  1989   Added TITLE  Oct  1990   Added POSITION  NOERASE  COLOR  Feb 91  RES   August  1993   Vince Patrick  Adv  Visualization Lab  U  of Maryland   fixed errors in math   August  1993  DMS  Added _EXTRA keyword inheritance   January  1994  KDB  Fixed integer math which produced 0 and caused              divide by zero errors   December  1994  MWR  Added _EXTRA inheritance for PLOTS and OPLOT   June  1995  MWR  Removed _EXTRA inheritance for PLOTS and changed   OPLOT to PLOTS          September  1996  GGS  Changed denominator of x_step and y_step vars           February  1998  DLD   Add support for CLIP and NO_CLIP keywords          June  1998  DLD   Add support for OVERPLOT keyword              on_error 2                       Return to caller if an error occurs         s   size u          t   size v          if s 0  ne 2 then begin  baduv:   message   U and V parameters must be 2D and same size                  endif         if total abs s 0:2 t 0:2  ne 0 then goto baduv           if n_params 0  lt 3 then x   findgen s 1  else                   if n_elements x  ne s 1  then begin badxy:                  message   X and Y arrays have incorrect size                          endif         if n_params 1  lt 4 then y   findgen s 2  else                   if n_elements y  ne s 2  then goto badxy           if n_elements missing  le 0 then missing   1 0e30         if n_elements length  le 0 then length   1 0          mag   sqrt u 2 v 2               magnitude                   Subscripts of good elements         nbad   0                          of missing points         if n_elements missing  gt 0 then begin                 good   where mag lt missing                   if keyword_set dots  then bad   where mag ge missing  nbad          endif else begin                 good   lindgen n_elements mag          endelse          ugood   u good          vgood   v good          x0   min x                       get scaling         x1   max x          y0   min y          y1   max y   x_step x1 x0 s 1 1 0      Convert to float  Integer math  y_step y1 y0 s 2 1 0      could result in divide by 0   maxmag max max abs ugood x_step max abs vgood y_step   sina   length    ugood maxmag   cosa   length    vgood maxmag            if n_elements title  le 0 then title                plot to get axes            if n_elements color  eq 0 then color    p color         if n_elements noclip  eq 0 then noclip   1         x_b0 x0 x_step  x_b1 x1 x_step  y_b0 y0 y_step  y_b1 y1 y_step         if  not keyword_set overplot  then begin           if n_elements position  eq 0 then begin             plot x_b0 x_b1 y_b1 y_b0 nodata xst yst                  color color  _EXTRA   extra           endif else begin             plot x_b0 x_b1 y_b1 y_b0 nodata xst yst                  color color  _EXTRA   extra           endelse         endif         if n_elements clip  eq 0 then               clip    x crange 0 y crange 0 x crange 1 y crange 1            r    3                           len of arrow head         angle   22 5    dtor             Angle of arrowhead         st   r   sin angle               sin 22 5 degs   length of head         ct   r   cos angle            for i 0 n_elements good 1 do begin      Each point                 x0   x good i  mod s 1          get coords of start   end                 dx   sina i                  x1   x0   dx                 y0   y good i    s 1                  dy   cosa i                  y1   y0   dy  xd x_step  yd y_step                 plots x0 x1 x1 ct dx xd st dy yd xd     x1 x1 ct dx xd st dy yd xd                           y0 y1 y1 ct dy yd st dx xd yd     y1 y1 ct dy yd st dx xd yd                          color color clip clip noclip noclip  _EXTRA   extra                 endfor         if nbad gt 0 then                Dots for missing                  PLOTS  x bad mod s 1  y bad   s 1  psym 3  color color                           clip clip noclip noclip  _EXTRA   extra end"); 
     279a[277] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", "   Id: velovect pro 97 2006 06 09 15:18:59Z pinsard       Copyright  c  1983 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited          NAME:  VELOVECT     PURPOSE:  Produce a two dimensional velocity field plot     A directed arrow is drawn at each point showing the direction and   magnitude of the field                     CATEGORY:  Plotting  two dimensional      CALLING SEQUENCE:  VELOVECT  U  V   X  Y      INPUTS:  U: The X component of the two dimensional field     U must be a two dimensional array     V: The Y component of the two dimensional field   Y must have  the same dimensions as X   The vector at point  i j  has a   magnitude of:    U i j 2   V i j 2 0 5    and a direction of:    ATAN2 V i j U i j      OPTIONAL INPUT PARAMETERS:    X: Optional abcissae values   X must be a vector with a length   equal to the first dimension of U and V     Y: Optional ordinate values   Y must be a vector with a length  equal to the first dimension of U and V      KEYWORD INPUT PARAMETERS:  COLOR: The color index used for the plot     DOTS: Set this keyword to 1 to place a dot at each missing point    Set this keyword to 0 or omit it to draw nothing for missing  points   Has effect only if MISSING is specified     LENGTH: Length factor   The default of 1 0 makes the longest  U V   vector the length of a cell            MISSING: Missing data value   Vectors with a LENGTH greater  than MISSING are ignored            OVERPLOT: Set this keyword to make VELOVECT  overplot   That is  the                 current graphics screen is not erased  no axes are drawn  and                 the previously established scaling remains in effect       Note:   All other keywords are passed directly to the PLOT procedure  and may be used to set option such as TITLE  POSITION    NOERASE  etc    OUTPUTS:  None      COMMON BLOCKS:  None      SIDE EFFECTS:  Plotting on the selected device is performed   System  variables concerning plotting are changed      RESTRICTIONS:  None      PROCEDURE:  Straightforward   Unrecognized keywords are passed to the PLOT  procedure        MODIFICATION HISTORY:  DMS  RSI  Oct  1983   For Sun  DMS  RSI  April  1989   Added TITLE  Oct  1990   Added POSITION  NOERASE  COLOR  Feb 91  RES   August  1993   Vince Patrick  Adv  Visualization Lab  U  of Maryland   fixed errors in math   August  1993  DMS  Added _EXTRA keyword inheritance   January  1994  KDB  Fixed integer math which produced 0 and caused              divide by zero errors   December  1994  MWR  Added _EXTRA inheritance for PLOTS and OPLOT   June  1995  MWR  Removed _EXTRA inheritance for PLOTS and changed   OPLOT to PLOTS          September  1996  GGS  Changed denominator of x_step and y_step vars           February  1998  DLD   Add support for CLIP and NO_CLIP keywords          June  1998  DLD   Add support for OVERPLOT keyword      PRO VELOVECT U V X Y  Missing   Missing  Length   length  Dots   dots             Color color  CLIP clip  NOCLIP noclip  OVERPLOT overplot  _EXTRA extra         on_error 2                       Return to caller if an error occurs         s   size u          t   size v          if s 0  ne 2 then begin  baduv:   message   U and V parameters must be 2D and same size                  endif         if total abs s 0:2 t 0:2  ne 0 then goto baduv           if n_params 0  lt 3 then x   findgen s 1  else                   if n_elements x  ne s 1  then begin badxy:                  message   X and Y arrays have incorrect size                          endif         if n_params 1  lt 4 then y   findgen s 2  else                   if n_elements y  ne s 2  then goto badxy           if n_elements missing  le 0 then missing   1 0e30         if n_elements length  le 0 then length   1 0          mag   sqrt u 2 v 2               magnitude                   Subscripts of good elements         nbad   0                          of missing points         if n_elements missing  gt 0 then begin                 good   where mag lt missing                   if keyword_set dots  then bad   where mag ge missing  nbad          endif else begin                 good   lindgen n_elements mag          endelse          ugood   u good          vgood   v good          x0   min x                       get scaling         x1   max x          y0   min y          y1   max y   x_step x1 x0 s 1 1 0      Convert to float  Integer math  y_step y1 y0 s 2 1 0      could result in divide by 0   maxmag max max abs ugood x_step max abs vgood y_step   sina   length    ugood maxmag   cosa   length    vgood maxmag            if n_elements title  le 0 then title                plot to get axes            if n_elements color  eq 0 then color    p color         if n_elements noclip  eq 0 then noclip   1         x_b0 x0 x_step  x_b1 x1 x_step  y_b0 y0 y_step  y_b1 y1 y_step         if  not keyword_set overplot  then begin           if n_elements position  eq 0 then begin             plot x_b0 x_b1 y_b1 y_b0 nodata xst yst                  color color  _EXTRA   extra           endif else begin             plot x_b0 x_b1 y_b1 y_b0 nodata xst yst                  color color  _EXTRA   extra           endelse         endif         if n_elements clip  eq 0 then               clip    x crange 0 y crange 0 x crange 1 y crange 1            r    3                           len of arrow head         angle   22 5    dtor             Angle of arrowhead         st   r   sin angle               sin 22 5 degs   length of head         ct   r   cos angle            for i 0 n_elements good 1 do begin      Each point                 x0   x good i  mod s 1          get coords of start   end                 dx   sina i                  x1   x0   dx                 y0   y good i    s 1                  dy   cosa i                  y1   y0   dy  xd x_step  yd y_step                 plots x0 x1 x1 ct dx xd st dy yd xd     x1 x1 ct dx xd st dy yd xd                           y0 y1 y1 ct dy yd st dx xd yd     y1 y1 ct dy yd st dx xd yd                          color color clip clip noclip noclip  _EXTRA   extra                 endfor         if nbad gt 0 then                Dots for missing                  PLOTS  x bad mod s 1  y bad   s 1  psym 3  color color                           clip clip noclip noclip  _EXTRA   extra end"); 
    280280a[278] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", "          NAME:axe     PURPOSE:gerre les axes pour les differents dessins crees par plt    pltz et pltt     CATEGORY:environnement graphique     CALLING SEQUENCE:axe coupe tempsmin tempsmax      INPUTS:          coupe: un string qui designe le type de coupe auquel doit de          raporter les axes que l on cree  par ex:  xy xt             tempsmin et tempsmax: ds le cas ou l on fait une coupe          contenant la dimension temps  il faut specifier le debut et          la fin de l axe des temps en jours julien      KEYWORD PARAMETERS:  SIN active qd on trace en sinus de la latitude            SEPDATE: string separant les differents constituants de la          date  Par defaut c est un retour a la ligne qd on fait un           yt   zt  ou  t  dans les autres cas c est un blanc              DIGITSYEAR 2 to use  Z format  2 digits  to code years          instead of  Y format  See help of label_date for more          informations on  Z and  Y      OUTPUTS:les variables globales d environnement graphique:  x  et  y      COMMON BLOCKS:  common pro     SIDE EFFECTS:modifie  x  et  y      RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                         Eric Guilyardi types x y z   amelioration de                         l axe temporel         PRO axe  coupe tempsmin tempsmax  REVERSE_X   reverse_x  REVERSE_Y   reverse_y  SIN   sin  SEPDATE   sepdate  DIGITSYEAR   digitsyear  _EXTRA   ex  common    tempsun   systime 1            pour key_performance     gestion des ticks de l axe des temps ds le ces ou tempsmin et   tempsmax sont definits      divday   0    if n_params  EQ 3 then BEGIN         if keyword_set sepdate  then sep   sepdate ELSE          if coupe EQ  yt  OR coupe EQ  zt  OR coupe EQ  t  then sep    C  ELSE sep               caldat tempsmin  mmin  dmin  ymin  hmin  mnmin  smin  _EXTRA   ex       caldat tempsmax  mmax  dmax  ymax  hmax  mnmax  smax  _EXTRA   ex   format used for the year  2 or 4 5 digits        IF NOT keyword_set digitsyear  THEN digitsyear   4       IF digitsyear EQ 2 THEN fmtyr    Z  ELSE fmtyr    Y          if ymax EQ ymin then BEGIN          if mmin ne mmax then BEGIN   meme annee mais plusieurs mois             nticks   mmax mmin 1             ticknom   lonarr nticks              for m   0 nticks 1 do ticknom m    julday m mmin  1  ymin  _EXTRA   ex              tminor   6             datfmt    M sep fmtyr   on verifie que les labels rentrent bien entre tempsmin et tempsmax              ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1              nticks   n_elements ticknom    cas particulier ou l on est a cheval sur 2 mois             if nticks LE 1 then begin                nticks    dmax jourdsmois mmin  ymin 0 dmin 1 2                ticknom   lonarr nticks                 for d   0 nticks 1 do ticknom d    julday mmin  d 2 dmin  ymin  _EXTRA   ex                 ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax                                          AND ticknom NE  1                 nticks   n_elements ticknom                 tminor   2                datfmt    D sep M              endif          ENDIF ELSE BEGIN    meme annee et meme mois             IF dmax dmin 1 GT 4 THEN BEGIN   more than 4 days                nticks   dmax dmin 1                ticknom   lonarr nticks                 for d   0 nticks 1 do ticknom d    julday mmin  d dmin  ymin  _EXTRA   ex                 ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax                                          AND ticknom NE  1                 nticks   n_elements ticknom                 tminor   2                datfmt    D sep M              ENDIF ELSE BEGIN      less than 4 days : divday ticks per day                divday   4                nticks    dmax dmin divday   1                ticknom   fltarr nticks                 for d   0 nticks 1 do                   ticknom d    julday mmin  d divday dmin  ymin  _EXTRA   ex                     d MOD divday float divday                 tminor   2                datfmt    H:00              ENDELSE           ENDELSE        ENDIF ELSE BEGIN    plusieurs annees          CASE 1 OF          ymax ymin 1 LE 10: BEGIN   freq   1    tminor   12   datfmt    M sep fmtyr   end          ymax ymin 1 LE 20: BEGIN   freq   2    tminor   6   datfmt    M sep fmtyr   end          ymax ymin 1 LE 50: BEGIN   freq   5    tminor   5   datfmt    M sep fmtyr   end          ymax ymin 1 LE 100: BEGIN   freq   10    tminor   10   datfmt   fmtyr   end          ymax ymin 1 LE 1000: BEGIN   freq   50    tminor   5   datfmt   fmtyr   end          ELSE : BEGIN   freq   100    tminor   50   datfmt    Y    end          ENDCASE           nticks   floor ymax ymin freq 1          IF floor ymin freq  NE  ymin freq THEN             yminf    floor ymin freq 1 freq ELSE              yminf    floor ymin freq freq          ticknom   lonarr nticks           for y   0  nticks 1 do ticknom y    julday 1  1  yminf y freq  _EXTRA   ex    on verifie que les labels rentrent bien entre tempsmin et tempsmax           ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1           nticks   n_elements ticknom    cas particulier ou l on est a cheval sur 2 annees          if nticks LE 1 then begin             nticks    mmax 12 mmin 1             ticknom   lonarr nticks              for m   0 nticks 1 do ticknom m    julday m mmin  1  ymin  _EXTRA   ex              ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1              nticks   n_elements ticknom              tminor   6             datfmt    M sep fmtyr   cas particulier ou l on est a cheval sur 2 mois             if nticks LE 1 then begin                nticks    dmax jourdsmois mmin  ymin 0 dmin 1 2                ticknom   lonarr nticks                 for d   0 nticks 1 do ticknom d    julday mmin  d 2 dmin  ymin  _EXTRA   ex                 ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax                                          AND ticknom NE  1                 nticks   n_elements ticknom                 tminor   2                datfmt    D sep M              endif          endif       ENDELSE        toto   label_date 0  0  0  DATE_FORMAT   datfmt  _EXTRA   ex        if chkstru ex   DATE_FORMAT  then ex DATE_FORMAT        ENDIF      definition des parametres des axes au cas par cas      case coupe of        xy :BEGIN           if keyword_set reverse_x  then  x range lon2 lon1  ELSE  x range lon1 lon2           if keyword_set reverse_y  then  y range lat2 lat1  ELSE  y range lat1 lat2           IF key_onearth THEN  x tickformat lonaxe           IF key_onearth THEN  y tickformat lataxe        END        yz :BEGIN           if keyword_set reverse_x  then  x range lat2 lat1  ELSE  x range lat1 lat2           if keyword_set reverse_y  then  y range 0   1  ELSE  y range    1  0           if keyword_set sin  then BEGIN   nombre de ticks par defaut             plot   0   0   noerase   nodata  xtick_get   xaxe   on augmente ce nombre pour qu il soit autour de 10              ticks   n_elements xaxe 1             ticks   ticks 1  2  4  8              ticks   ticks sort abs ticks 10 0    on recupere l axex pour ce nouveau nombre de ticks             plot   0   0 xticks   ticks   noerase   nodata  xtick_get   xaxe              x ticks   ticks              x tickv   sin pi 180 xaxe              tickname   strarr ticks 1              for i   0 ticks do tickname i    lataxe 0  0  xaxe i               x tickname   tickname              x range   sin pi 180 x range           endif       end        xz :BEGIN           if keyword_set reverse_x  then  x range lon2 lon1  ELSE  x range lon1 lon2           if keyword_set reverse_y  then  y range 0   1  ELSE  y range    1  0        end        xt  : begin          if keyword_set reverse_x  then  x range    lon2 lon1  ELSE  x range lon1 lon2           if keyword_set reverse_y  then  y range tempsmax  tempsmin tempsmin            ELSE  y range tempsmin tempsmax tempsmin          IF key_onearth THEN  x tickformat lonaxe             result   LABEL_DATE DATE_FORMAT    M sep fmtyr              y tickformat LABEL_DATE            y tickname   LABEL_DATE 1  0 ticknom _EXTRA   ex             y ticklen 1            y gridstyle 2           y ticks nticks 1           y tickv ticknom tempsmin           y minor tminor          IF divday GT 0 THEN  y title    Time from  strtrim dmin 1                 def_month 1m  strtrim mmin  1   strtrim ymin 1        end        yt  : begin          if keyword_set reverse_x  then  x range    tempsmax tempsmin tempsmin            ELSE  x range tempsmin tempsmax tempsmin          if keyword_set reverse_y  then  y range lat2  lat1  ELSE  y range lat1 lat2           IF key_onearth THEN  y tickformat lataxe            x tickname   LABEL_DATE 0  0 ticknom _EXTRA   ex             x ticklen 1            x gridstyle 2           x ticks nticks 1           x tickv ticknom tempsmin           x minor tminor          IF divday GT 0 THEN  y title    Time from  strtrim dmin 1                 def_month 1m  strtrim mmin  1   strtrim ymin 1        end        zt  : begin          if keyword_set reverse_x  then  x range    tempsmax tempsmin tempsmin            ELSE  x range tempsmin tempsmax tempsmin          if vargrid EQ  W  then gdep gdepw 0:nzw 1  ELSE gdep gdept 0:nzt 1             x tickname   LABEL_DATE 0  0 ticknom _EXTRA   ex             x ticklen 1            x gridstyle 2           x ticks nticks 1           x tickv ticknom tempsmin           x minor tminor          IF divday GT 0 THEN  y title    Time from  strtrim dmin 1                 def_month 1m  strtrim mmin  1   strtrim ymin 1        end        t  : BEGIN          if keyword_set reverse_x  then  x range    tempsmax tempsmin tempsmin            ELSE  x range tempsmin tempsmax tempsmin           x tickname   LABEL_DATE 0  0 ticknom _EXTRA   ex             x ticklen 1            x gridstyle 2           x ticks nticks 1           x tickv ticknom tempsmin           x minor tminor          IF divday GT 0 THEN  y title    Time from  strtrim dmin 1                 def_month 1m  strtrim mmin  1   strtrim ymin 1        end        x  : begin           x range lon1 lon2           IF key_onearth THEN  x tickformat lonaxe        END        y  : begin          if keyword_set sin  then BEGIN   nombre de ticks par defaut             plot   0   0   nodata   noerase  xstyle   5  ystyle   5  xtick_get   xaxe   on augmente ce nombre pour qu il soit autour de 10              ticks   n_elements xaxe 1             ticks   ticks 1  2  4  8              ticks   ticks sort abs ticks 10 0    on recupere l axex pour ce nouveau nombre de ticks             plot   0   0 xticks   ticks nodata noerase xstyle 5 ystyle 5 xtick_get xaxe              x ticks   ticks              x tickv   sin pi 180 xaxe              tickname   strarr ticks 1              for i   0 ticks do tickname i    lataxe 0  0  xaxe i               x tickname   tickname              x range   sin pi 180 x range           ENDIF ELSE  x range lat1 lat2           IF key_onearth THEN  x tickformat lataxe        END        z  : begin            if vargrid EQ  W  then gdep gdepw 0:nzw 1  ELSE gdep gdept 0:nzt 1              if keyword_set reverse_y  then  y range gdep 0  gdep n_elements gdep 1               ELSE  y range gdep n_elements gdep 1  gdep 0        END     endcase    if keyword_set key_performance  THEN print   temps axe  systime 1 tempsun     return end"); 
    281281a[279] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", "          NAME:legende pro     PURPOSE:fournit les legendes     CATEGORY:graph annexe     CALLING SEQUENCE:legende  mi ma coupe title subtitle xtitle ytitle     INPUTS:mi et ma: le max et le min du dessin  cf plt pro et pltz pro    coupe caractere de 2 lettres donnant le type de coupe  par ex: xz      KEYWORD PARAMETERS:    TITRE: chaine de caracteres qui doit etre le titre du dessin  Par   defaut le titre est le nom vairmer du champ           ENDPOINTS:utilise qd on fait des coupes veticales en diagonale     OUTPUTS:le titre  sous titre titre de x et titre de y     COMMON BLOCKS:  common pro     SIDE EFFECTS: l utilisation de la variable globale langage permet   de changer de langue ou de facon de legender facilement  On peut   facilement personnaliser la chose en rajoutant un cas au case sur la   valeur de langage      RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr   14 8 98                         Eric Guilyardi  ericg lodyc jussieu fr  GB version  11 6 99         pro legende mi ma coupe CONTOUR   contour ENDPOINTS   endpoints  DIREC   direc                 VECTLEGENDE   vectlegende                 INTERVALLE   intervalle  TYPE_YZ   type_yz  VARNAME2   varname2                 NPTS   npts  _EXTRA   ex  common    tempsun   systime 1            pour key_performance      grille   1   1   1  gdep  nx  ny  nz     English legends      fmt_mm    f12 2     fmt_bt    f7 1     colorf        contourf    Contour plot     vecteurf    Vector norm       expf        datef            fieldf            depthf            endpointsf    Diag  Section     zonalf        IF key_onearth THEN latintf    latitudes in   ELSE latintf    j index in      timintf    time in      onf            depthf2    Depth  m     Meridf    Zonal Mean       IF key_onearth THEN lonintf    longitudes in   ELSE lonintf    i in      hovxt    XT plot        diaghovxt    Diag  XT plot        depintf    depths in      timef    Time     hovyt    YT plot        diaghovyt    Diag  YT plot        hovzt    ZT plot        hovt        IF key_onearth THEN lontitle    Longitude  ELSE lontitle    i index     IF key_onearth THEN lattitle    Latitude  ELSE lattitle    j index         vertz   depthf2    legniv     m     IF keyword_set TYPE_YZ  THEN BEGIN      IF type_yz EQ  hPa  THEN vertz    hPa        IF type_yz EQ  hPa  THEN legniv     hPa      ENDIF      Start legende       definition et complement eventuelle de  p subtitle      if n_elements varunit  ne 0 then unite varunit  else unite      p subtitle colorf unite : Min   strtrim string format fmt_mm mi  2        Max   strtrim string format fmt_mm ma  2     if keyword_set intervalle  then BEGIN       if intervalle NE  1 then           p subtitle p subtitle  Int   strtrim string format fmt_mm intervalle  2     endif    if size contour   type  EQ 8 then BEGIN   c est une structure       unite contour 1         p subtitle p subtitle C  contourf unite           : Min   strtrim string format fmt_mm contour 0 0  2           Max   strtrim string format fmt_mm contour 0 1  2        if contour inter NE  1  then           p subtitle p subtitle  Int   strtrim string format fmt_mm contour inter  2     ENDIF    if size vectlegende   type  EQ 8  then begin       unite vectlegende 1         p subtitle p subtitle C  vecteurf unite           : Min   strtrim string format fmt_mm vectlegende 0 0  2           Max   strtrim string format fmt_mm vectlegende 0 1  2     endif     mise en forme des dimensions du sous domaine      la1 strtrim string format fmt_bt  lat1  2     la2 strtrim string format fmt_bt  lat2  2     lo1 strtrim string format fmt_bt  lon1  2     lo2 strtrim string format fmt_bt  lon2  2     pr1 strtrim string format fmt_bt  vert1  2     pr2 strtrim string format fmt_bt  vert2  2      gestion de la date      if n_elements vardate  EQ 0 then vardate        if NOT keyword_set direc  then direc        if strpos direc   t  NE  1 then begin       svardate   strtrim vairdate time 0  1     strtrim vairdate time jpt 1  1     ENDIF ELSE svardate   vardate     case sur le cas auquel s applique la legende      case coupe of        xy :begin                   if strupcase vargrid  EQ  W  then firstz   firstzw           ELSE firstz   firstzt         if strpos direc   z  EQ  1 AND firstz NE 0  then BEGIN           prof   strtrim round gdep 0  1             p title   expf varexp datef svardate fieldf varname depthf prof legniv         ENDIF ELSE  p title   expf varexp datef svardate fieldf varname          x title   lontitle          y title   lattitle       end         xz :begin          IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim ny  1           IF long n  LE 3 THEN zonalf    Section              if keyword_set endpoints  AND lat1 NE lat2 then              p title   endpointsf varexp datef svardate fieldf varname ELSE              p title   zonalf varexp datef svardate fieldf varname           x title   lontitle          if keyword_set endpoints  AND lat1 EQ lat2 then BEGIN             IF key_onearth THEN  x title    x title  at  strtrim lataxe 0  0  lat1  1  ELSE  x title    x title  at j index  strtrim lat1  1           ENDIF           y title   depthf2       end         yz :begin          IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim nx  1           IF long n  LE 3 THEN meridf              if keyword_set endpoints  AND lon1 NE lon2 then              p title   endpointsf varexp datef svardate fieldf varname ELSE              p title   meridf varexp datef svardate fieldf varname           y title   vertz           x title   lattitle          if keyword_set endpoints  AND lon1 EQ lon2 then BEGIN             IF key_onearth THEN  x title    x title  at  strtrim lonaxe 0  0  lon1  1  ELSE  x title    x title  at i index  strtrim lon1  1           ENDIF       end         xt :begin           IF keyword_set npts  THEN n   strtrim npts  1           if keyword_set endpoints  AND lat1 NE lat2 then              p title   diaghovxt varexp fieldf varname ELSE             p title        hovxt varexp fieldf varname          IF  time size time 0 1    time 0  GE 10 THEN  y title   timef           x title   lontitle          if keyword_set endpoints  AND lat1 EQ lat2 then BEGIN             IF key_onearth THEN  x title    x title  at  strtrim lataxe 0  0  lat1  1  ELSE  x title    x title  at j index  strtrim lat1  1           ENDIF       end         yt :begin           IF keyword_set npts  THEN n   strtrim npts  1            if keyword_set endpoints  AND lon1 NE lon2 then              p title   diaghovyt varexp fieldf varname ELSE             p title        hovyt varexp fieldf varname          IF  time size time 0 1    time 0  GE 10 THEN  x title   timef           y title   lattitle          if keyword_set endpoints  AND lon1 EQ lon2 then BEGIN             IF key_onearth THEN  x title    x title  at  strtrim lonaxe 0  0  lon1  1  ELSE  x title    x title  at i index  strtrim lon1  1           ENDIF       end         zt :begin           IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim nx ny  1            p title   hovzt varexp fieldf varname           y title   depthf2          IF  time size time 0 1    time 0  GE 10 THEN  x title   timef       end        t :begin           IF keyword_set npts  THEN n   strtrim npts  1  ELSE BEGIN               if keyword_set integration3d  then n strtrim nx ny nz  1  ELSE n strtrim nx ny  1            ENDELSE            p title   hovt varexp fieldf varname           y title   varname          IF  time size time 0 1    time 0  GE 10 THEN  x title   timef       end        x :begin                       IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim ny nz  1           if keyword_set endpoints  AND lat1 NE lat2 then              p title   endpointsf varexp datef svardate fieldf varname ELSE             p title               varexp datef svardate fieldf varname           x title   lontitle          if keyword_set endpoints  AND lat1 EQ lat2 then BEGIN             IF key_onearth THEN  x title    x title  at  strtrim lataxe 0  0  lat1  1  ELSE  x title    x title  at j index  strtrim lat1  1           ENDIF           y title   varname       end        y :begin                       IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim nx nz  1           if keyword_set endpoints  AND lon1 NE lon2 then              p title   endpointsf varexp datef svardate fieldf varname ELSE             p title               varexp datef svardate fieldf varname           x title   lattitle          if keyword_set endpoints  AND lon1 EQ lon2 then BEGIN             IF key_onearth THEN  x title    x title  at  strtrim lonaxe 0  0  lon1  1  ELSE  x title    x title  at i index  strtrim lon1  1           ENDIF           y title   varname       end        z :begin          IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim nx ny  1            p title   varexp datef svardate fieldf varname           y title   depthf2           x title   varname       end        yfx : BEGIN          IF keyword_set npts  THEN n   strtrim npts  1  ELSE n strtrim nx ny nz  1            p title   varexp datef svardate varunit           x title   varname2           y title   varname       END        else:    ENDCASE    if keyword_set direc  then BEGIN       if strpos direc   x  NE  1 then           p subtitle   lonintf lo1   lo2 onf strtrim nx  1  points    C   p subtitle       if strpos direc   y  NE  1 then BEGIN          if strpos p subtitle    EQ  1 then              p subtitle   latintf la1   la2 onf strtrim ny  1  points    C p subtitle            ELSE  p subtitle   latintf la1   la2 onf strtrim ny  1  points    p subtitle       ENDIF       if strpos direc   z  NE  1 AND  nz NE 1 OR coupe NE  xy  then BEGIN           if strpos p subtitle    EQ  1 then              p subtitle   depintf pr1   pr2 onf strtrim nz  1  points    C p subtitle            ELSE  p subtitle   depintf pr1   pr2 onf strtrim nz  1  points    p subtitle       ENDIF    ENDIF    if keyword_set endpoints  AND coupe NE  yt  AND lat1 NE lat2 then  p title    p title C C         if keyword_set key_performance  THEN print   temps legende  systime 1 tempsun     return end"); 
  • trunk/SRC/Interpolation/angle.pro

    r59 r101  
    11;--------- 
    22;+ 
    3 ; NAME:angle.pro (fom angle.F,v 2.2 in OPA8.2) 
     3; @file_comments north stereographic polar projection 
    44; 
    5 ; PURPOSE:Compute angles between grid lines and direction of the North 
     5; @keyword    /DOUBLE use double precision (default is float) 
    66; 
    7 ; CALLING SEQUENCE:  
    8 ;     angle, fileocemesh, gcosu, gsinu, gcosv, gsinv, gcost, gsint 
    9 ; 
    10 ; INPUTS: 
    11 ;     fileocemesh a netcdf file that contains (at least): 
    12 ;        glamu, gphiu: longitudes and latitudes at U-points 
    13 ;        glamv, gphiv: longitudes and latitudes at V-points 
    14 ;        glamf, gphif: longitudes and latitudes at F-points 
    15 ; 
    16 ; KEYWORD PARAMETERS: 
    17 ; 
    18 ;    IODIRECTORY: the directory path where is located fileocemesh 
    19 ; 
    20 ;    /DOUBLE: use double precision (default is float) 
    21 ; 
    22 ; OUTPUTS: 
     7; @returns 
    238;       gsinu,gcosu : sinus and cosinus of the angle  
    249;       gsinv,gcosv   between north-south direction  
    2510;       gsint,gcost   and the j-direction of the mesh 
    26 ;                      
    2711; 
    28 ; RESTRICTIONS: to compute the lateral boundary conditions, we assume 
     12; @restrictions to compute the lateral boundary conditions, we assume 
    2913; that:  
    3014;     (1) the first line is similar to the second line 
     
    3721; 
    3822; 
    39 ; MODIFICATION HISTORY: 
     23; @history 
    4024;   -------------- 
    4125;       Original :  96-07 (O. Marti) 
     
    4529;--------- 
    4630; 
    47 ;  fsnspp: north stereographic polar projection 
    4831FUNCTION fsnspp, plam, pphi, DOUBLE = double 
    4932  IF keyword_set(double) THEN BEGIN 
     
    5942END 
    6043;--------- 
     44;+ 
     45; @file_comments Compute angles between grid lines and direction of the North 
     46;(fom angle.F,v 2.2 in OPA8.2) 
     47; 
     48; @param fileocemesh {in}{required} a netcdf file that contains (at least): 
     49;        glamu, gphiu: longitudes and latitudes at U-points 
     50;        glamv, gphiv: longitudes and latitudes at V-points 
     51;        glamf, gphif: longitudes and latitudes at F-points 
     52; 
     53; @keyword IODIRECTORY the directory path where is located fileocemesh 
     54; @keyword    /DOUBLE use double precision (default is float) 
     55;- 
    6156;--------- 
    6257; 
  • trunk/SRC/Interpolation/clickincell.pro

    r69 r101  
    11;+ 
    2 ; NAME:clickincell 
     2; @file_comments click on a map and find in which cell the click was 
    33; 
    4 ; PURPOSE: click on a map and find in which cell the click was 
     4; @categories finding where is a point on a grid 
    55; 
    6 ; CATEGORY:finding where is a point on a grid 
    7 ; 
    8 ; CALLING SEQUENCE: 
     6; @examples  
    97; 
    108;     res = clickincell() 
     
    1311;     Click on the right button to quit.   
    1412; 
    15 ; INPUTS:None 
    16 ; 
    17 ; KEYWORD PARAMETERS: 
    18 ; 
    19 ;     CELLTYPE = 'T', 'W', 'U', 'V' or 'F': This this the type of point 
     13; @keyword     CELLTYPE = 'T', 'W', 'U', 'V' or 'F' This this the type of point 
    2014;     that is located in the center of the cell which the click is 
    2115;     located. default is T type of cell (with corner defined by F 
    2216;     points). 
    2317; 
    24 ;     /DRAWCELL: to draw the cell in which we clicked 
     18; @keyword     /DRAWCELL to draw the cell in which we clicked 
    2519; 
    26 ;     COLOR = the color used to draw the cells (Clicking one more 
     20; @keyword     COLOR the color used to draw the cells (Clicking one more 
    2721;     time in the same cell will draw the cell with the white color) 
    2822; 
    29 ;     /ORIGINAL: to get the position of the cell regarding the original 
     23; @keyword     /ORIGINAL to get the position of the cell regarding the original 
    3024;     grid (with no key_shift, ixminmesh, iyminmesh...) 
    3125; 
    32 ;     /IJ: see outpus 
     26; @keyword     /IJ see outpus 
    3327; 
    34 ;     _EXTRA: to pass extra keywords to inquad and plot (when /drawcell) 
     28; @keyword     _EXTRA to pass extra keywords to inquad and plot (when /drawcell) 
    3529; 
    36 ; OUTPUTS: 
    37 ;     the the index of the selected cells regarding to the grid which 
     30; @returns 
     31;     the index of the selected cells regarding to the grid which 
    3832;     is in memory in the variable of the common. If /ij keyword is 
    3933;     activated give 2D array (2, n) which are the i,j position of the 
    4034;     n selected cells.  
    4135; 
    42 ; COMMON BLOCKS:common.pro 
     36; @uses common.pro 
    4337; 
    44 ; SIDE EFFECTS: 
    45 ; 
    46 ; RESTRICTIONS: 
    47 ; 
    48 ; EXAMPLE: 
     38; @examples  
    4939; 
    5040;   IDL> plt, findgen(jpi,jpj),/nodata,map=[90,0,0],/ortho 
    5141;   IDL> print, clickincell(/draw,color=150,/xy) 
    5242; 
    53 ; MODIFICATION HISTORY: 
    54 ;      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     43; @history 
     44;      Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    5545;      August 2003 
    5646; 
  • trunk/SRC/Interpolation/compute_fromreg_bilinear_weigaddr.pro

    r98 r101  
    11;+ 
    2 ; NAME: compute_fromreg_bilinear_weigaddr 
    3 ; 
    4 ; PURPOSE: compute the weight and address neede to interpolate data from a 
     2; @file_comments compute the weight and address neede to interpolate data from a 
    53;          "regular grid" to any grid using the bilinear method 
    64;    
    7 ; CATEGORY:interpolation 
    8 ; 
    9 ; CALLING SEQUENCE:  
    10 ;     compute_fromreg_bilinear_weigaddr, alon, alat, olon, olat, weig, addr 
    11 ; 
    12 ; INPUTS: 
    13 ;     lonin and latin: longitude/latitude of the input data. Must be 1D arrays 
    14 ;     lonout and latout: longitude/latitude of the output data. Must be 2D arrays 
    15 ; 
    16 ; KEYWORD PARAMETERS:  
    17 ; 
    18 ;     /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 
    19 ;          account the northen/southern line of the input data when perfoming the 
     5; @categories interpolation 
     6; 
     7;     @param alonin {in}{required} longitudeof the input data  
     8;     @param alatin  {in}{required} latitude of the input data  
     9;     @param olonin {in}{required} longitude of the output data  
     10;     @param olat  {in}{required} latitude of the output data  
     11; 
     12; @keyword     /NONORTHERNLINE activate if you don't whant to take into 
     13;          account the northen line of the input data when perfoming the 
     14; @keyword     /NOSOUTHERNLINE activate if you don't whant to take into 
     15;          account the southern line of the input data when perfoming the 
    2016;          interpolation. 
    2117; 
    22 ; OUTPUTS:  
     18; @returns  
    2319;     weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    2420;     perform the interpolation: 
     
    2622;          dataout = reform(dataout, jpio, jpjo, /over) 
    2723; 
    28 ; COMMON BLOCKS: none 
    29 ; 
    30 ; SIDE EFFECTS: ? 
    31 ; 
    32 ; RESTRICTIONS: 
     24; @restrictions 
    3325;  -  the input grid must be a "regular grid", defined as a grid for which each 
    3426;     lontitudes lines have the same latitude and each latitudes columns have the 
     
    3931;     using a linear interpolation only along the longitudinal direction. 
    4032;  
    41 ; EXAMPLE:  
    42 ; 
    43 ; MODIFICATION HISTORY: 
     33; @history 
    4434;  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
    4535;  
  • trunk/SRC/Interpolation/compute_fromreg_imoms3_weigaddr.pro

    r69 r101  
    11;+ 
    2 ; NAME: compute_fromreg_imoms3_weigaddr 
    3 ; 
    4 ; PURPOSE: compute the weight and address neede to interpolate data from a 
     2; 
     3; @file_comments compute the weight and address neede to interpolate data from a 
    54;          "regular grid" to any grid using the imoms3 method 
    65;    
    7 ; CATEGORY:interpolation 
    8 ; 
    9 ; CALLING SEQUENCE:  
    10 ;     compute_fromreg_imoms3_weigaddr, alon, alat, olon, olat, weig, addr 
    11 ; 
    12 ; INPUTS: 
    13 ;     lonin and latin: longitude/latitude of the input data  
    14 ;     lonout and latout: longitude/latitude of the output data  
    15 ; 
    16 ; KEYWORD PARAMETERS:  
    17 ; 
    18 ;     /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 
     6; @categories interpolation 
     7PRO compute_fromreg_imoms3_weigaddr, alonin, alatin, olonin, olat, weig, addr $ 
     8; 
     9;     @param alonin {in}{required} longitude of the input data  
     10;     @param alatin  {in}{required} latitude of the input data  
     11;     @param olonin {in}{required} longitude of the output data  
     12;     @param olat {in}{required} latitude of the output data  
     13; 
     14; @keyword /NONORTHERNLINE and /NOSOUTHERNLINE activate if you don't whant to take into 
    1915;          account the northen/southern line of the input data when perfoming the 
    2016;          interpolation. 
    2117; 
    22 ; OUTPUTS:  
     18; @returns  
    2319;     weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    2420;     perform the interpolation: 
     
    2622;          dataout = reform(dataout, jpio, jpjo, /over) 
    2723; 
    28 ; COMMON BLOCKS: none 
    29 ; 
    30 ; SIDE EFFECTS: ? 
    31 ; 
    32 ; RESTRICTIONS: 
     24; @restrictions 
    3325;  -  the input grid must be a "regular/rectangular grid", defined as a grid for 
    3426;     which each lontitudes lines have the same latitude and each latitudes columns 
     
    4234;     using a imoms3 interpolation only along the longitudinal direction. 
    4335;  
    44 ; EXAMPLE:  
    45 ; 
    46 ; MODIFICATION HISTORY: 
    47 ;  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
     36; @history 
     37;  November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr)  
    4838;  March 2006: works for rectangular grids 
    4939;- 
  • trunk/SRC/Interpolation/cutpar.pro

    r59 r101  
    11;+ 
    2 ; NAME: cutpar 
    32; 
    4 ; PURPOSE: cut p parallelogram(s) into p*n^2 parallelograms 
     3; @file_comments cut p parallelogram(s) into p*n^2 parallelograms 
    54; 
    6 ; CATEGORY: basic work 
     5; @categories basic work 
    76; 
    8 ; CALLING SEQUENCE:res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
     7; @examples  
     8; res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
    99; 
    10 ; INPUTS: 
    11 ;       x0,y0 1d arrays of p elements, giving the edge positions. The 
     10;       @param x0,y0  {in}{required} 1d arrays of p elements, giving the edge positions. The 
    1211;       edges must be given as in plot to traw the parallelogram. (see 
    1312;       example). 
    14 ;       n: each parallelogram will be cutted in n^2 pieces 
     13;       @param n {in}{required} each parallelogram will be cutted in n^2 pieces 
    1514; 
    16 ; KEYWORD PARAMETERS:  
     15; @keyword         /endpoints see outputs 
    1716; 
    18 ;         /endpoints: see outputs 
    19 ; 
    20 ;         /onsphere: to specify that the points are located on a 
     17; @keyword         /onsphere to specify that the points are located on a 
    2118;         sphere. In this case, x and y corresponds to longitude and 
    2219;         latitude in degrees. 
    2320; 
    24 ; OUTPUTS: 
     21; @returns 
    2522;        -defaut: 3d array(2,n^2,p) giving the center position of each 
    2623;        piece of the parallelograms 
     
    2825;        of each piece of the parallelograms 
    2926; 
    30 ; COMMON BLOCKS: no 
     27; @uses cutsegment.pro 
    3128; 
    32 ; SIDE EFFECTS: need cutsegment.pro 
    33 ; 
    34 ; RESTRICTIONS: ? 
    35 ; 
    36 ; EXAMPLE: 
     29; @examples  
    3730; 
    3831; x0 = [2,6,2] 
     
    5043; for i=0,2 do oplot, [res[0,*,i]], [res[1,*,i]], color = 20+10*i, psym = 1, thick = 3 
    5144; 
    52 ; MODIFICATION HISTORY: 
    53 ;           S. Masson (smasson@lodyc.jussieu.fr) 
     45; @history 
     46;           S. Masson (smasson\@lodyc.jussieu.fr) 
    5447;           July 5th, 2002 
    5548;- 
  • trunk/SRC/Interpolation/cutsegment.pro

    r59 r101  
    11;+ 
    2 ; NAME: cutsegment 
    32; 
    4 ; PURPOSE: cut p segments into p*n equal parts 
     3; @file_comments cut p segments into p*n equal parts 
    54; 
    6 ; CATEGORY: basic work 
     5; @categories basic work 
    76; 
    8 ; CALLING SEQUENCE: res = cutsegment(x0, y0, x1, y1, n) 
     7; @examples   
     8; res = cutsegment(x0, y0, x1, y1, n) 
    99; 
    10 ; INPUTS:  
    11 ;         x0,y0 and x1,y1, 1d arrays of p elements, the coordinates of 
     10;         @param x0,y0 and x1,y1  {in}{required}  1d arrays of p elements, the coordinates of 
    1211;         the endpoints of the p segmements 
    13 ;         n: the number of pieces we want to cut each segment 
     12;         @param  n {in}{required} the number of pieces we want to cut each segment 
    1413; 
    15 ; KEYWORD PARAMETERS: 
    1614; 
    17 ;         /endpoints: see ouputs 
     15; @keyword         /endpoints see ouputs 
    1816; 
    19 ;         /onsphere: to specify that the points are located on a 
     17; @keyword         /onsphere to specify that the points are located on a 
    2018;         sphere. In this case, x and y corresponds to longitude and 
    2119;         latitude in degrees. 
    2220; 
    23 ; OUTPUTS: 
     21; @returns 
    2422;        defaut: a 3d array (2,n,p) that gives the coordinates of the 
    2523;        middle of the cutted segments. 
     
    2725;        coordinates of the endpoints of the cutted segments. 
    2826; 
    29 ; COMMON BLOCKS: no 
    30 ; 
    31 ; SIDE EFFECTS: no 
    32 ; 
    33 ; RESTRICTIONS: ? 
    34 ; 
    35 ; EXAMPLE: 
     27; @examples  
    3628; 
    3729;  IDL> x0=[2,5] 
     
    4638;  IDL> oplot, [res[0,*,1]], [res[1,*,1]], color = 40, psym = 1, thick = 3 
    4739; 
    48 ; MODIFICATION HISTORY: 
    49 ;           S. Masson (smasson@lodyc.jussieu.fr) 
     40; @history 
     41;           S. Masson (smasson\@lodyc.jussieu.fr) 
    5042;           July 5th, 2002 
    5143;- 
  • trunk/SRC/Interpolation/extrapolate.pro

    r69 r101  
     1;+ 
     2; @file_comments extrapolate data (zinput) where maskinput eq 0 by filling step by 
     3; step the coastline points with the mean value of the 8 neighbourgs. 
     4; 
     5;- 
    16FUNCTION extrapolate, zinput, maskinput, nb_iteration, x_periodic = x_periodic, MINVAL = minval, MAXVAL = maxval 
    27; 
    38  compile_opt strictarr, strictarrsubs  
    4 ; 
    5 ; extrapolate data (zinput) where maskinput eq 0 by filling step by 
    6 ; step the coastline points with the mean value of the 8 neighbourgs. 
    79; 
    810; check the number of iteration used in the extrapolation. 
  • trunk/SRC/Interpolation/fromreg.pro

    r69 r101  
    11;+ 
    2 ; NAME: fromreg 
    32; 
    4 ; PURPOSE: interpolate data from a "regular/rectangular grid" to any grid. 
     3; @file_comments interpolate data from a "regular/rectangular grid" to any grid. 
    54;   2 metods availables: bilinear and imoms3  
    65;   A "regular/rectangular grid" is defined as a grid for which each lontitudes lines have  
    76;   the same latitude and each latitudes columns have the same longitude. 
    87;    
    9 ; CATEGORY:interpolation 
     8; @categories interpolation 
    109; 
    11 ; CALLING SEQUENCE: dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 
     10; @examples   
     11; dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 
    1212; 
    13 ; INPUTS: 
    14 ;    method: a string defining the interpolation method.  
     13;    @param method {in}{required}  a string defining the interpolation method.  
    1514;            must be 'bilinear' or 'imoms3' 
    16 ;    datain: a 2D array the input data to interpolate 
    17 ;    lonin and latin: longitude/latitude of the input data. optionals if 
     15;    @param datain {in}{required} a 2D array the input data to interpolate 
     16;    @param lonin latin {in}{required} longitude/latitude of the input data. optionals if 
    1817;            WEIG and ADDR keywords used. 
    19 ;    lonout and latout: longitude/latitude of the output data. optionals if 
     18;    @param lonout latout {in}{required} longitude/latitude of the output data. optionals if 
    2019;            WEIG and ADDR keywords used. 
    2120; 
    22 ; KEYWORD PARAMETERS:  
    23 ; 
    24 ;     WEIG, ADDR: 2D arrays, weig and addr are the weight and addresses used to 
     21; @keyword     WEIG, ADDR 2D arrays, weig and addr are the weight and addresses used to 
    2522;     perform the interpolation: 
    2623;          dataout = total(weig*datain[addr], 1) 
     
    3128;     case, lonin, latin, lonout and latout are not necessary. 
    3229; 
    33 ;     /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 
     30; @keyword     /NONORTHERNLINE and /NOSOUTHERNLINE activate if you don't whant to take into 
    3431;          account the northen/southern line of the input data when perfoming the 
    3532;          interpolation. 
    3633; 
    37 ; OUTPUTS: 2D array: the interpolated data 
     34; @returns 2D array: the interpolated data 
    3835; 
    39 ; COMMON BLOCKS: none 
     36; @restrictions We supposed the data are located on a sphere, with a  
     37; periodicity along the longitude. 
    4038; 
    41 ; SIDE EFFECTS: ? 
    42 ; 
    43 ; RESTRICTIONS:We supposed the data are located on a sphere, with a periodicity along 
    44 ;              the longitude. 
    45 ; 
    46 ; EXAMPLE:  
     39; @examples   
    4740 
    4841;  topa = fromreg('bilinear', tncep, xncep, yncep, glamt, gphit) 
     
    5447;  t2opa = fromreg('bilinear', t2ncep, xncep, WEIG = a, ADDR = b) 
    5548; 
    56 ; MODIFICATION HISTORY: 
    57 ;  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
     49; @history 
     50;  November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr)  
    5851;  
    5952;- 
  • trunk/SRC/Interpolation/get_gridparams.pro

    r69 r101  
    11;+ 
    2 ; NAME: get_gridparams 
    3 ; 
    4 ; PURPOSE:  
     2; 
     3; @file_comments  
    54;   1) extract from a NetCDF file the longitude, latidude, and their dimensions 
    65;      and make sure it is 1D or 2D arrays  
     
    98;      they are 1D or 2D arrays  
    109; 
    11 ; CATEGORY:for interpolations tools 
    12 ; 
    13 ; CALLING SEQUENCE: 
     10; @categories interpolation 
     11; 
     12; @examples  
    1413;  
    1514; 1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions 
     
    1918; 2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 
    2019; 
    21 ; INPUTS: 
    22 ; 
    2320; 1)  
    24 ;  file: the name of the netcdf file 
    25 ;  loname: the name of the variable that contains the longitude in the NetCDF file 
    26 ;  latname: the name of the variable that contains the latitude in the NetCDF file 
     21; @param in1 {in}{required}  the name of the netcdf file 
     22;  @param in2 {in}{required}  the name of the variable that contains the longitude in the NetCDF file 
     23;  @param in3 {in}{required}  the name of the variable that contains the latitude in the NetCDF file 
     24;  @param in4  {out} the number of points in the longitudinal direction 
     25;  @param in5  {out} the number of points in the latitudinal direction 
     26; @param in6 {out} the variable that will contain the longitudes 
     27;  @param in7  {out} the variable that will contain the latitudes 
     28;  @param in8 {out} 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
    2729; 
    2830; or  
    2931; 
    30 ; 2) lon and lat: 1d or 2D arrays defining longitudes and latitudes.  
     32; 2)  
     33; @param lon lat {in}{required}  1d or 2D arrays defining longitudes and latitudes.  
    3134;    Note that these arrays are also outputs and can therefore be modified.  
    3235 
    33 ; KEYWORD PARAMETERS: none 
    34 ; 
    35 ; OUTPUTS: 
    36 ;  lon the variable that will contain the longitudes 
    37 ;  lat the variable that will contain the latitudes 
    38 ;  jpi the number of points in the longitudinal direction 
    39 ;  jpj the number of points in the latitudinal direction 
    40 ;  n_dimensions: 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
     36; @param in1 {out} the variable that will contain the longitudes 
     37;  @param in2  {out} the variable that will contain the latitudes 
     38;  @param in3  {out} the number of points in the longitudinal direction 
     39;  @param in4  {out} the number of points in the latitudinal direction 
     40;  @param in5 {out} 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
    4141;    arrays or 2D arrays (jpi,jpj). Note that of  n_dimensions = 1, then the 
    4242;    grid must be regular (each longitudes must be the same for all latitudes 
    4343;    and each latitudes should be the sae for all longitudes).  
    4444; 
    45 ; COMMON BLOCKS: none 
    46 ; 
    47 ; SIDE EFFECTS: ? 
    48 ; 
    49 ; RESTRICTIONS: ? 
    50 ; 
    51 ; EXAMPLE:  
     45; @examples   
    5246;  
    5347; 1) ncdf_get_gridparams, 'coordinates_ORCA_R05.nc', 'glamt', 'gphit' $ 
     
    5650; 2) ncdf_get_gridparams, olon, olat, jpio, jpjo, 2 
    5751; 
    58 ; MODIFICATION HISTORY: 
    59 ;  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
     52; @history 
     53;  November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr)  
    6054;  
    6155;- 
  • trunk/SRC/Interpolation/imoms3.pro

    r69 r101  
     1;+ 
     2;  
     3;- 
    14FUNCTION imoms3, xin 
    25 
  • trunk/SRC/Interpolation/inquad.pro

    r59 r101  
    11;+ 
    2 ; NAME:inquad 
    3 ; 
    4 ; PURPOSE: to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 
    5 ; 
    6 ; CATEGORY:grid manipulation 
    7 ; 
    8 ; CALLING SEQUENCE: 
     2; @file_comments to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 
     3; 
     4; @categories grid manipulation 
     5; 
     6; @examples  
    97; 
    108;     res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
    119; 
    12 ; INPUTS: 
    13 ; 
    14 ;     x,y: the coordinates of the point we want to know where it 
     10;     @param x y {in}{required}  the coordinates of the point we want to know where it 
    1511;     is. Must be a scalar if /onsphere activated else can be scalar 
    1612;     or array.  
    1713; 
    18 ;     x1, y1, x2, y2, x3, y3, x4, y4: the coordinates of the 
     14;     @param x1 y1 x2 y2 x3 y3 x4 y4 {in}{required} the coordinates of the 
    1915;     quadrilateral given in the CLOCKWISE order. Scalar or array. 
    2016; 
    21 ; KEYWORD PARAMETERS: 
    22 ; 
    23 ;    /DOUBLE: use double precision to perform the computation  
    24 ; 
    25 ;    /ONSPHERE: to specify that the quadilateral are on a sphere and 
     17; 
     18; @keyword    /DOUBLE use double precision to perform the computation  
     19; 
     20; @keyword    /ONSPHERE to specify that the quadilateral are on a sphere and 
    2621;    that teir coordinates are longitude-latitude coordinates. In this 
    2722;    case, est-west periodicity, poles singularity and other pbs 
     
    2924;    automatically.  
    3025; 
    31 ;    ZOOMRADIUS:the zoom (circle centred on the (x,y) with a radius of 
     26; @keyword    ZOOMRADIUS :the zoom (circle centred on the (x,y) with a radius of 
    3227;    zoomradius degree where we look for the the quadrilateral which;    contains the (x,y) point) used for the satellite projection 
    3328;    when /onsphere is activated. Default is 4 and seems to be the 
     
    3530;    larger than 5 degrees. 
    3631;    
    37 ;    /NOPRINT: to suppress the print messages. 
    38 ; 
    39 ; OUTPUTS: 
    40 ; 
    41 ;    res, a n element vector. Where n is the number of elements of 
     32; @keyword    /NOPRINT to suppress the print messages. 
     33; 
     34; @returns 
     35;    a n element vector. Where n is the number of elements of 
    4236;    x. res[i]=j means that the point number i is located in the 
    4337;    quadrilateral number j with (0 <= j <= n_elements(x0)-1) 
    4438; 
    45 ; COMMON BLOCKS:none 
    46 ; 
    47 ; SIDE EFFECTS: 
    48 ; 
    49 ; RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 
     39; @restrictions I think degenerated quadrilateral (e.g. flat of 
    5040; twisted) is not work. This has to be tested. 
    5141; 
    52 ; EXAMPLE: 
     42; @examples  
    5343; 
    5444;       x = 1.*[1, 2, 6, 7, 3] 
     
    6959;      On a sphere see clickincell.pro... 
    7060; 
    71 ; MODIFICATION HISTORY: 
    72 ;      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     61; @history 
     62;      Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    7363;      August 2003 
    7464;      Based on Convert_clic_ij.pro written by Gurvan Madec  
     
    192182; the point is inside the quadilateral if test eq 1 
    193183; with test equal to: 
    194 ;     test = ((x-x1)*(y2-y1) GE (x2-x1)*(y-y1)) $        
     184;     test = ((x-x1)*(y2-y1) GE (x2-x1)*(y-y1)) $ 
    195185;       *((x-x2)*(y3-y2) GT (x3-x2)*(y-y2)) $ 
    196186;       *((x-x3)*(y4-y3) GT (x4-x3)*(y-y3)) $ 
  • trunk/SRC/Interpolation/inrecgrid.pro

    r59 r101  
    11;+ 
    2 ; NAME: inrecgrid 
    32; 
    4 ; PURPOSE: given - a list of points, (x,y) position   
     3; @file_comments given - a list of points, (x,y) position   
    54;                - the x and y limits of a rectangular grid 
    65;          find in which cell is located each given point. 
    76; 
    8 ; CATEGORY: no DO loop, use the wonderfull value_locate function! 
     7; @categories no DO loop, use the wonderfull value_locate function! 
    98; 
    10 ; CALLING SEQUENCE:res = inrecgrid(xin, yin, left, bottom) 
     9; @examples  
     10; res = inrecgrid(xin, yin, left, bottom) 
    1111; 
    12 ; INPUTS:  
    13 ; 
    14 ;    x1d: a 1d array, the x position on the points 
    15 ;    y1d: a 1d array, the y position on the points 
    16 ;    left: a 1d, monotonically increasing array, the position of the 
     12;    @param x1d {in}{required}  a 1d array, the x position on the points 
     13;    @param y1d {in}{required}  a 1d array, the y position on the points 
     14;    left {in}{required}  a 1d, monotonically increasing array, the position of the 
    1715;    "left" border of each cell. 
    18 ;    bottom: a 1d, monotonically increasing array, the position of the 
     16;    @param bottom {in}{required} a 1d, monotonically increasing array, the position of the 
    1917;    "bottom" border of each cell. 
    2018; 
    21 ; OPTIONAL INPUTS: 
    2219; 
    23 ; KEYWORD PARAMETERS:; 
    24 ; 
    25 ;    /output2d: to get the output as a 2d array (2,n_elements(x1d)), 
     20; @keyword    /output2d to get the output as a 2d array (2,n_elements(x1d)), 
    2621;    with res[0,*] the x index accoring to the 1d array defined by 
    2722;    left and res[1,*] the y index accoring to the 1d array defined by 
    2823;    bottom. 
    2924; 
    30 ;    checkout=[rbgrid,ubgrid] specify the right and upper bondaries of 
     25; @keyword    checkout=[rbgrid,ubgrid] specify the right and upper bondaries of 
    3126;    the grid and check if some points are out. 
    3227; 
    33 ; OUTPUTS:the index on the cell accoring to the 2d array defined by 
     28; @returns the index on the cell accoring to the 2d array defined by 
    3429; left and bottom. 
    3530; 
    36 ; OPTIONAL OUTPUTS: 
    37 ; 
    38 ; COMMON BLOCKS: no 
    39 ; 
    40 ; SIDE EFFECTS: 
    41 ; 
    42 ; RESTRICTIONS: 
    43 ; 
    44 ; PROCEDURE: 
    45 ; 
    46 ; EXAMPLE: 
     31; @examples  
    4732; 
    4833;  IDL> a=indgen(5) 
     
    5742;        2.00000      1.00000 
    5843 
    59 ; MODIFICATION HISTORY: 
    60 ;            S. Masson (smasson@lodyc.jussieu.fr) 
     44; @history 
     45;            S. Masson (smasson\@lodyc.jussieu.fr) 
    6146;                      July 3rd, 2002 
    6247;                      October 3rd, 2003: use value_locate 
  • trunk/SRC/Interpolation/ll_narcs_distances.pro

    r59 r101  
    11;+ 
    2 ; NAME: 
    3 ;       LL_NARCS_DISTANCES 
    42; 
    5 ; PURPOSE: 
    6 ;       This function returns the longitude and latitude [lon, lat] of 
    7 ;       a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 
    8 ;       from a specified location Lon0, lat0. 
     3; @file_comments 
     4; This function returns the longitude and latitude [lon, lat] of 
     5;a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 
     6;from a specified location Lon0, lat0. 
    97;       Same as LL_ARC_DISTANCE but for n points without do loop. 
    108; 
    11 ; CATEGORY: 
    12 ;       Mapping, geography. 
     9; @categories Mapping, geography 
    1310; 
    14 ; CALLING SEQUENCE: 
    15 ;       Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 
     11; @examples  
     12;Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 
    1613; 
    17 ; INPUTS: 
    18 ;       Lon0: An array containing the longitude of the starting point. 
     14;    @param Lon0 {in}{required}  An array containing the longitude of the starting point. 
    1915;             Values are assumed to be in radians unless the keyword 
    2016;             DEGREES is set. 
    21 ;       Lat0: An array containing the latitude of the starting point. 
     17;    @param Lat0 {in}{required} An array containing the latitude of the starting point. 
    2218;             Values are assumed to be in radians unless the keyword 
    2319;             DEGREES is set. 
    24 ;       Arc_Dist: The arc distance from Lon_lat0. The value must be between 
    25 ;                -!PI and +!PI. To express distances in arc units, divide 
    26 ;                 by the radius of the globe expressed in the original units. 
    27 ;                 For example, if the radius of the earth is 6371 km, divide 
    28 ;                 the distance in km by 6371 to obtain the arc distance.     
    29 ;       Az:       The azimuth from Lon_lat0. The value is assumed to be in 
    30 ;                 radians unless the keyword DEGREES is set. 
     20;    @param Arc_Dist {in}{required} The arc distance from Lon_lat0. The value must be between 
     21; -!PI and +!PI. To express distances in arc units, divide 
     22;  by the radius of the globe expressed in the original units. 
     23;  For example, if the radius of the earth is 6371 km, divide 
     24;  the distance in km by 6371 to obtain the arc distance.     
     25;    @param Az {in}{required}   The azimuth from Lon_lat0. The value is assumed to be in 
     26;  radians unless the keyword DEGREES is set. 
    3127; 
    32 ; KEYWORD PARAMETERS: 
    33 ;       DEGREES:  Set this keyword to express all measurements and 
    34 ;                 results in degrees. 
     28; @keyword    DEGREES  Set this keyword to express all measurements and 
     29;  results in degrees. 
    3530; 
    36 ; OUTPUTS: 
    37 ;       This function returns a (2, n) array containing the  
     31; @returns 
     32; a (2, n) array containing the  
    3833;       longitude / latitude of the resultings points. Values are in radians 
    3934;       unless the keyword DEGREES is set. 
    4035; 
    41 ; PROCEDURE: 
    42 ;       Formula from Map Projections - a working manual.  USGS paper 
    43 ;       1395.  Equations (5-5) and (5-6). 
     36; @file_comments 
     37;Formula from Map Projections - a working manual.  USGS paper 
     38;1395.  Equations (5-5) and (5-6). 
    4439; 
    45 ; EXAMPLE: 
    46 ;       Lon_lat0 = [1.0, 2.0]           ; Initial point specified in radians     
    47 ;       Arc_Dist = 2.0                  ; Arc distance in radians 
    48 ;       Az = 1.0                        ; Azimuth in radians 
    49 ;       Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 
    50 ;       PRINT, Result 
    51 ;         2.91415    -0.622234 
     40; @examples  
     41;Lon_lat0 = [1.0, 2.0]; Initial point specified in radians 
     42;Arc_Dist = 2.0; Arc distance in radians 
     43;Az = 1.0; Azimuth in radians 
     44;Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 
     45;PRINT, Result 
     46;       2.91415    -0.622234 
    5247; 
    53 ;       IDL> lon0 = [-10, 20, 100] 
    54 ;       IDL> lat0 = [0, -10, 45] 
    55 ;       IDL> lon1 = [10, 60, 280] 
    56 ;       IDL> lat1 = [0, 10, 45] 
    57 ;       IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
    58 ;       IDL> earthradius = 6378206.4d0 
    59 ;       IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 
    60 ;       IDL> print, reform(res[0, *]) 
    61 ;              10.000000       60.000000       280.00000 
    62 ;       IDL> print, reform(res[1, *]) 
     48;IDL> lon0 = [-10, 20, 100] 
     49;IDL> lat0 = [0, -10, 45] 
     50;IDL> lon1 = [10, 60, 280] 
     51;IDL> lat1 = [0, 10, 45] 
     52;IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
     53;IDL> earthradius = 6378206.4d0 
     54;IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 
     55;IDL> print, reform(res[0, *]) 
     56;       10.000000       60.000000       280.00000 
     57;IDL> print, reform(res[1, *]) 
    6358;          1.1999280e-15       10.000000       45.000000 
    6459; 
    65 ; MODIFICATION HISTORY: 
     60; @history 
    6661;       Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03 
    67 ;       Sebastien Masson (smasson@lodyc.jussieu.fr) 
     62; Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    6863;                  August 2005 
    6964;- 
    7065 
    71 ; Return the [lon, lat] of the point a given arc distance  
    72 ;       (-pi <= arc_dist <= pi), 
     66;+ 
     67; @file_comments Return the [lon, lat] of the point a given arc distance  
     68;(-pi <= arc_dist <= pi), 
    7369; and azimuth (az), from lon_lat0. 
     70;- 
    7471; 
    7572FUNCTION LL_NARCS_DISTANCES, lon0, lat0, arc_dist, az, DEGREES = degs 
  • trunk/SRC/Interpolation/map_npoints.pro

    r59 r101  
    11;+ 
    2 ; NAME: 
    3 ;       Map_nPoints 
    42; 
    5 ; PURPOSE: 
    6 ;       Return the distance in meter between all np0 points P0 and all 
     3; @file_comments 
     4;Return the distance in meter between all np0 points P0 and all 
    75;       np1 points P1 on a sphere. If keyword /TWO_BY_TWO is given then 
    86;       returns the distances between number n of P0 points and number 
     
    119;       without do loop. 
    1210; 
    13 ; CATEGORY: 
    14 ;       Maps. 
     11; @categories Maps 
    1512; 
    16 ; CALLING SEQUENCE: 
    17 ;       Result = Map_nPoints(lon0, lat0, lon1, lat1) 
     13; @examples  
     14;Result = Map_nPoints(lon0, lat0, lon1, lat1) 
    1815; 
    19 ; INPUTS: 
    20 ;       Lon0, Lat0 = np0 elements vector. longitudes and latitudes of 
    21 ;       np0 points P0  
    22 ;       Lon1, Lat1 = np1 elements vector. longitude and latitude of 
    23 ;       np1 points P1  
     16;@param Lon0 Lat0  {in}{required} np0 elements vector. longitudes and latitudes of np0 points P0  
     17;@param Lon1 Lat1  {in}{required}  np1 elements vector. longitude and latitude of np1 points P1  
    2418; 
    25 ; KEYWORD PARAMETERS: 
    26 ; 
    27 ;   AZIMUTH: A named variable that will receive the azimuth of the great 
     19; @keyword   AZIMUTH A named variable that will receive the azimuth of the great 
    2820;       circle  connecting the two points, P0 to P1 
    29 ;   /MIDDLE: to get the longitude/latitude of the middle point betwen P0 and P1. 
    30 ;   RADIANS = if set, inputs and angular outputs are in radians, otherwise 
    31 ;       degrees. 
    32 ;   RADIUS: If given, return the distance between the two points 
    33 ;       calculated using the given radius. 
     21; @keyword   /MIDDLE to get the longitude/latitude of the middle point betwen P0 and P1. 
     22; @keyword   RADIANS = if set, inputs and angular outputs are in radians, otherwise 
     23;degrees. 
     24; @keyword   RADIUS If given, return the distance between the two points 
     25;calculated using the given radius. 
    3426;       Default value is the earth radius : 6378206.4d0 
    35 ;   TWO_BY_TWO:If given,then Map_nPoints returns the distances between 
     27; @keyword   TWO_BY_TWO:If given,then Map_nPoints returns the distances between 
    3628;       number n of P0 points and number n of P1 points (in that case, 
    3729;       np0 and np1 must be equal). 
    3830; 
    39 ; OUTPUTS: 
     31; @returns 
    4032;       An (np0,np1) array giving the distance in meter between np0 
    4133;       points P0 and np1 points P1. Element (i,j) of the ouput is the 
     
    4638;       if /MIDDLE see this keyword. 
    4739; 
    48 ; EXAMPLES: 
    49 ;       IDL> print, $ 
    50 ;       map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 
    51 ;              7551369.3       5600334.8 
    52 ;              12864354.       10921254. 
    53 ;              14919237.       5455558.8 
    54 ;        
    55 ;       IDL> lon0 = [-10, 20, 100] 
    56 ;       IDL> lat0 = [0, -10, 45] 
    57 ;       IDL> lon1 = [10, 60, 280] 
    58 ;       IDL> lat1 = [0, 10, 45] 
    59 ;       IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 
    60 ;       IDL> help, dist, azi 
    61 ;       DIST            DOUBLE    = Array[3, 3] 
    62 ;       AZI             DOUBLE    = Array[3, 3] 
    63 ;       IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 
    64 ;              2226414.0       4957944.5       10018863. 
    65 ;              90.000000       64.494450   4.9615627e-15 
    66 ;       IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
    67 ;       IDL> help, dist, azi 
    68 ;       DIST            DOUBLE    = Array[3] 
    69 ;       AZI             DOUBLE    = Array[3] 
    70 ;       IDL> print, dist, azi 
    71 ;              2226414.0       4957944.5       10018863. 
    72 ;              90.000000       64.494450   4.9615627e-15 
    73 ;       IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 
    74 ;              20.000000       90.000000 
    75 ;       IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 
    76 ;              20.000000 
    77 ;              90.000000 
     40; @examples 
     41;IDL> print, $ 
     42;map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 
     43;       7551369.3       5600334.8 
     44;       12864354.       10921254. 
     45;       14919237.       5455558.8 
    7846; 
    79 ;       IDL> lon0 = [-10, 20, 100] 
    80 ;       IDL> lat0 = [0, -10, 45] 
    81 ;       IDL> lon1 = [10, 60, 280] 
    82 ;       IDL> lat1 = [0, 10, 45] 
    83 ;       IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 
    84 ;       IDL> print, reform(mid[0,*]), reform(mid[1,*]) 
    85 ;              0.0000000       40.000000       190.00000 
    86 ;              0.0000000  -1.5902773e-15       90.000000 
    87 ;       IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 
    88 ;              0.0000000       0.0000000 
    89 ;       IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 
    90 ;              40.000000  -1.5902773e-15 
    91 ;       IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 
    92 ;              190.00000       90.000000 
    93 ;        
    94 ; MODIFICATION HISTORY: 
     47;IDL> lon0 = [-10, 20, 100] 
     48;IDL> lat0 = [0, -10, 45] 
     49;IDL> lon1 = [10, 60, 280] 
     50;IDL> lat1 = [0, 10, 45] 
     51;IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 
     52;IDL> help, dist, azi 
     53;DIST            DOUBLE    = Array[3, 3] 
     54;AZI             DOUBLE    = Array[3, 3] 
     55;IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 
     56;       2226414.0       4957944.5       10018863. 
     57;       90.000000       64.494450   4.9615627e-15 
     58;IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
     59;IDL> help, dist, azi 
     60;DIST            DOUBLE    = Array[3] 
     61;AZI             DOUBLE    = Array[3] 
     62;IDL> print, dist, azi 
     63;       2226414.0       4957944.5       10018863. 
     64;       90.000000       64.494450   4.9615627e-15 
     65;IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 
     66;       20.000000       90.000000 
     67;IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 
     68;       20.000000 
     69;       90.000000 
     70; 
     71;IDL> lon0 = [-10, 20, 100] 
     72;IDL> lat0 = [0, -10, 45] 
     73;IDL> lon1 = [10, 60, 280] 
     74;IDL> lat1 = [0, 10, 45] 
     75;IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 
     76;IDL> print, reform(mid[0,*]), reform(mid[1,*]) 
     77;       0.0000000       40.000000       190.00000 
     78;       0.0000000  -1.5902773e-15       90.000000 
     79;IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 
     80;       0.0000000       0.0000000 
     81;IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 
     82;       40.000000  -1.5902773e-15 
     83;IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 
     84;       190.00000       90.000000 
     85; 
     86; @history 
    9587;       Based on the IDL function map_2points.pro,v 1.6 2001/01/15 
    96 ;       Sebastien Masson (smasson@lodyc.jussieu.fr) 
     88; Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    9789;                  October 2003 
    9890;- 
  • trunk/SRC/Interpolation/neighbor.pro

    r74 r101  
    11;+ 
    2 ; NAME: 
    3 ;       neighbor 
    42; 
    5 ; PURPOSE: 
    6 ;       find the closetest point of (P0) within a list of np1 points 
    7 ;       P1 Which can be on a sphere  
     3; @file_comments 
     4;find the closetest point of (P0) within a list of np1 points 
     5;P1 Which can be on a sphere  
    86; 
    9 ; CATEGORY: 
    10 ;       Maps. 
     7; @categories Maps 
    118; 
    12 ; CALLING SEQUENCE: 
    13 ;       Result = neighbor(lon0, lat0, lon1, lat1) 
     9; @examples  
     10; IDL> Result = neighbor(lon0, lat0, lon1, lat1) 
    1411; 
    15 ; INPUTS: 
    16 ;       Lon0, Lat0 = scalar. longitudes and latitudes of point P0.  
    17 ;       Lon1, Lat1 = np1 elements vector. longitude and latitude of 
    18 ;       np1 points P1  
     12;@param p0lon {in}{required}  scalar. longitudes of point P0.  
     13;@param p0lat  {in}{required}  scalar. latitudes of point P0.  
    1914; 
    20 ; KEYWORD PARAMETERS: 
    21 ;   RADIANS = if set, inputs and angular outputs are in radians, otherwise 
    22 ;       degrees. 
    23 ;   DISTANCE = dis, to get back the distances between P0 and the np1 
     15; @keyword   RADIANS if set, inputs and angular outputs are in radians, otherwise 
     16;degrees. 
     17; @keyword   DISTANCE dis, to get back the distances between P0 and the np1 
    2418;   points P1 in the variable dis. 
    25 ;   /SPHERE to activate if points are located on a sphere. 
     19; @keyword   /SPHERE to activate if points are located on a sphere. 
    2620; 
    27 ; OUTPUTS: 
     21; @returns 
    2822;       index giving the P1[index] point that is the closetest point 
    2923;       of (P0) 
    3024; 
    31 ; EXAMPLES: 
     25; @examples 
    3226;       IDL> print, neighbor(-105.15,40.02,[-0.07,100,50],[51.30,20,0], $ 
    3327;            distance=dis) 
     
    3630;             105.684      206.125      160.228 
    3731; 
    38 ; MODIFICATION HISTORY: 
    39 ;       Sebastien Masson (smasson@lodyc.jussieu.fr) 
     32; @history 
     33; Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    4034;                  October 2003 
    4135;- 
  • trunk/SRC/Interpolation/quadrilateral2square.pro

    r59 r101  
    11;+ 
    2 ; NAME:quadrilateral2square 
    32; 
    4 ; PURPOSE:warm (or map) an arbitrary quadrilateral onto a unit square  
     3; @file_comments warm (or map) an arbitrary quadrilateral onto a unit square  
    54; according to the 4-point correspondences: 
    65;       (x0,y0) -> (0,0) 
     
    1312; mappings. see ref. bellow. 
    1413; 
    15 ; CATEGORY:image/grid manipulation 
     14; @categories image, grid manipulation 
    1615; 
    17 ; CALLING SEQUENCE: 
     16; @examples  
    1817; 
    1918;     res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 
    2019;  
    21 ; INPUTS: 
    22 ; 
    23 ;     x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 
     20;     @param x0in {in}{required}  the coordinates of the quadrilateral 
     21;     @param y0in {in}{required}  the coordinates of the quadrilateral 
     22;     @param x1in {in}{required}  the coordinates of the quadrilateral 
     23;     @param y1in {in}{required}  the coordinates of the quadrilateral 
     24;     @param x2in {in}{required}  the coordinates of the quadrilateral 
     25;     @param y2in {in}{required}  the coordinates of the quadrilateral 
     26;     @param x3in {in}{required}  the coordinates of the quadrilateral 
     27;     @param y3in  {in}{required}  the coordinates of the quadrilateral 
    2428;     (see above for correspondance with the unit square). Can be 
    2529;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
    2630;     given in the anticlockwise order. 
    2731; 
    28 ;     xin,yin:the coordinates of the point(s) for which we want to do the 
     32;     @param xxin {in}{required} the coordinates of the point(s) for which we want to do the 
     33;     mapping. Can be scalar or array. 
     34;     @param yyin {in}{required} the coordinates of the point(s) for which we want to do the 
    2935;     mapping. Can be scalar or array. 
    3036; 
    31 ; KEYWORD PARAMETERS: 
    32 ; 
    33 ;    /DOUBLE: use double precision to perform the computation  
    34 ; 
    35 ; OUTPUTS: 
     37; @returns 
    3638; 
    3739;     (2,n) array: the new coodinates (xout, yout) of the (xin,yin) 
     
    4143;     elements of xin. 
    4244; 
    43 ; COMMON BLOCKS:none 
    44 ; 
    45 ; SIDE EFFECTS: 
    46 ; 
    47 ; RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 
     45; @restrictions I think degenerated quadrilateral (e.g. flat of 
    4846; twisted) is not work. This has to be tested. 
    4947; 
    50 ; EXAMPLE: 
     48; @examples  
    5149; 
    5250; IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 
     
    6058; IDL> tracegrille, reform(inorg[0,*],11,11), reform(inorg[1,*],11,11),color=indgen(12)*20 
    6159; 
    62 ; MODIFICATION HISTORY: 
    63 ;      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     60; @history 
     61;      Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    6462;      August 2003 
    6563;      Based on "Digital Image Warping" by G. Wolberg 
  • trunk/SRC/Interpolation/spl_fstdrv.pro

    r69 r101  
    33;------------------------------------------------------------ 
    44;+ 
    5 ; NAME:spl_fstdrv 
    65; 
    7 ; PURPOSE: SPL_FSTDRV returns the values of the first derivative of 
     6; @file_comments SPL_FSTDRV returns the values of the first derivative of 
    87; the interpolating function at the points X2i. it is a double 
    98; precision array. 
     
    1514; in a way that interpolated value are also in ascending order 
    1615; 
    17 ; CATEGORY: 
     16; @examples  y2 =  spl_fstdrv(x, y, yscd, x2) 
    1817; 
    19 ; CALLING SEQUENCE: y2 =  spl_fstdrv(x, y, yscd, x2) 
    20 ; 
    21 ; INPUTS: 
    22 ; 
    23 ;    x: An n-element (at least 2) input vector that specifies the 
     18;    @param x {in}{required}  An n-element (at least 2) input vector that specifies the 
    2419;    tabulate points in ascending order. 
    2520; 
    26 ;    y: f(x) = y. An n-element input vector that specifies the values 
     21;    @param y {in}{required} f(x) = y. An n-element input vector that specifies the values 
    2722;    of the tabulated function F(Xi) corresponding to Xi. 
    2823; 
    29 ;    yscd: The output from SPL_INIT for the specified X and Y. 
     24;    @param yscd {in}{required} The output from SPL_INIT for the specified X and Y. 
    3025; 
    31 ;    x2: The input values for which the first derivative values are 
     26;    @param x2 {in}{required} The input values for which the first derivative values are 
    3227;    desired. X can be scalar or an array of values. 
    3328 
    34 ; KEYWORD PARAMETERS: none 
    35 ; 
    36 ; OUTPUTS:  
     29; @returns  
    3730; 
    3831;    y2: f'(x2) = y2.  
    3932; 
    40 ; COMMON BLOCKS: none 
    4133; 
    42 ; SIDE EFFECTS: ? 
    43 ; 
    44 ; RESTRICTIONS: ? 
    45 ; 
    46 ; EXAMPLE: 
    47 ; 
    48 ; MODIFICATION HISTORY: 
    49 ;  Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005 
     34; @history 
     35;  Sebastien Masson (smasson\@lodyc.jussieu.fr): May 2005 
    5036;- 
    5137;------------------------------------------------------------ 
  • trunk/SRC/Interpolation/spl_incr.pro

    r69 r101  
    33;------------------------------------------------------------ 
    44;+ 
    5 ; NAME:spl_incr 
    6 ; 
    7 ; PURPOSE: 
     5; 
     6; @file_comments 
    87; 
    98; Given the arrays X and Y, which tabulate a function (with the X[i] 
     
    1312; in a way that interpolated values are also monotonically increasing. 
    1413; 
    15 ; CATEGORY: 
    16 ; 
    17 ; CALLING SEQUENCE: y2 =  spl_incr(x, y, x2) 
    18 ; 
    19 ; INPUTS: 
    20 ; 
    21 ;    x: An n-element (at least 2) input vector that specifies the 
     14; @examples  y2 =  spl_incr(x, y, x2) 
     15; 
     16; @param x1 {in}{required}  An n-element (at least 2) input vector that specifies the 
    2217;    tabulate points in a strict ascending order. 
    2318; 
    24 ;    y: f(x) = y. An n-element input vector that specifies the values 
     19;    @param y1 {in}{required} f(x) = y. An n-element input vector that specifies the values 
    2520;    of the tabulated function F(Xi) corresponding to Xi. As f is 
    2621;    supposed to be monotonically increasing, y values must be 
    2722;    monotonically increasing. y can have equal consecutive values. 
    2823; 
    29 ;    x2: The input values for which the interpolated values are 
     24;    @param x2 {in}{required} The input values for which the interpolated values are 
    3025;    desired. Its values must be strictly monotonically increasing.  
    3126; 
    32 ; KEYWORD PARAMETERS: 
    33 ; 
    34 ;    YP0: The first derivative of the interpolating function at the 
    35 ;    point X0. If YP0 is omitted, the second derivative at the 
    36 ;    boundary is set to zero, resulting in a "natural spline." 
    37 ; 
    38 ;    YPN_1: The first derivative of the interpolating function at the 
    39 ;    point Xn-1. If YPN_1 is omitted, the second derivative at the 
    40 ;    boundary is set to zero, resulting in a "natural spline."  
    41 ; 
    42 ; OUTPUTS:  
     27; 
     28; 
     29; 
     30; @returns  
    4331; 
    4432;    y2: f(x2) = y2. Double precision array 
    4533; 
    46 ; COMMON BLOCKS: none 
    47 ; 
    48 ; SIDE EFFECTS: ? 
    49 ; 
    50 ; RESTRICTIONS: 
     34; @restrictions 
    5135;   It might be possible that y2[i+1]-y2[i] has very small negative 
    5236;   values (amplitude smaller than 1.e-6)... 
    5337; 
    54 ; EXAMPLE: 
     38; @examples  
    5539; 
    5640;     n = 100L 
     
    7357;     oplot,[0, n_elements(c)], [0, 0], linestyle = 1 
    7458; 
    75 ; MODIFICATION HISTORY: 
    76 ;  Sebastien Masson (smasson@lodyc.jussieu.fr): May-Dec 2005 
     59; @history 
     60;  Sebastien Masson (smasson\@lodyc.jussieu.fr): May-Dec 2005 
    7761;- 
    7862;------------------------------------------------------------ 
     
    11296END 
    11397 
     98;+ 
     99; @keyword    YP0 The first derivative of the interpolating function at the 
     100;    point X0. If YP0 is omitted, the second derivative at the 
     101;    boundary is set to zero, resulting in a "natural spline." 
     102; @keyword    YPN_1 The first derivative of the interpolating function at the 
     103;    point Xn-1. If YPN_1 is omitted, the second derivative at the 
     104;    boundary is set to zero, resulting in a "natural spline."  
     105;- 
    114106FUNCTION spl_incr, x, y, x2, YP0 = yp0, YPN_1 = ypn_1 
    115107; 
  • trunk/SRC/Interpolation/spl_keep_mean.pro

    r69 r101  
    33;------------------------------------------------------------ 
    44;+ 
    5 ; NAME:spl_keep_mean 
    6 ; 
    7 ; PURPOSE: 
     5; @file_comments 
    86; 
    97; Given the arrays X and Y, which tabulate a function (with the X[i] 
     
    1614; data equa to the original values) 
    1715; 
    18 ; CATEGORY: 
     16; @examples  y2 =  spl_keep_mean(x, y, x2) 
    1917; 
    20 ; CALLING SEQUENCE: y2 =  spl_keep_mean(x, y, x2) 
    21 ; 
    22 ; INPUTS: 
    23 ; 
    24 ;    x: An n-element (at least 2) input vector that specifies the 
     18;    @param x {in}{required}  An n-element (at least 2) input vector that specifies the 
    2519;    tabulate points in a strict ascending order. 
    2620; 
    27 ;    y: an array with one element less than x. y[i] represents the 
     21;    @param yin {in}{required} an array with one element less than x. y[i] represents the 
    2822;    mean value between x[i] and x[i+1]. if /GE0 is activated, y must 
    2923;    have positive values. 
    3024; 
    31 ;    x2: The input values for which the interpolated values are 
     25;    @param x2 {in}{required} The input values for which the interpolated values are 
    3226;    desired. Its values must be strictly monotonically increasing.  
    3327; 
    34 ; KEYWORD PARAMETERS: 
    3528; 
    36 ;    /GE0: to force that y2 is always GE than 0. In that case, y must 
     29; @keyword    /GE0 to force that y2 is always GE than 0. In that case, y must 
    3730;    also be GE than 0. 
    3831; 
    39 ;    YP0: The first derivative of the interpolating function at the 
     32; @keyword    YP0 The first derivative of the interpolating function at the 
    4033;    point X0. If YP0 is omitted, the second derivative at the 
    4134;    boundary is set to zero, resulting in a "natural spline." 
    4235; 
    43 ;    YPN_1: The first derivative of the interpolating function at the 
     36; @keyword    YPN_1 The first derivative of the interpolating function at the 
    4437;    point Xn-1. If YPN_1 is omitted, the second derivative at the 
    4538;    boundary is set to zero, resulting in a "natural spline."  
    4639; 
    47 ; OUTPUTS:  
     40; @returns  
    4841; 
    4942;    y2: the meean value between two consecutive values of x2. This 
    5043;    array has one element less than y2. y2 has double precision. 
    5144; 
    52 ; COMMON BLOCKS: none 
    53 ; 
    54 ; SIDE EFFECTS: ? 
    55 ; 
    56 ; RESTRICTIONS: 
     45; @restrictions 
    5746;   It might be possible that y2 has very small negative values 
    5847;   (amplitude smaller than 1.e-6)...  
    5948; 
    6049; 
    61 ; EXAMPLE: 
     50; @examples  
    6251; 
    6352;    12 monthly values of precipitations into daily values: 
     
    8170;    print, total(y2*(x2[1:n2-1]-x2[0:n2-2])) 
    8271; 
    83 ; MODIFICATION HISTORY: 
    84 ;  Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005 
     72; @history 
     73;  Sebastien Masson (smasson\@lodyc.jussieu.fr): May 2005 
    8574;- 
    8675;------------------------------------------------------------ 
  • trunk/SRC/Interpolation/square2quadrilateral.pro

    r59 r101  
    11;+ 
    2 ; NAME:square2quadrilateral 
    3 ; 
    4 ; PURPOSE:warm (or map) a unit square onto an arbitrary quadrilateral 
     2; 
     3; @file_comments warm (or map) a unit square onto an arbitrary quadrilateral 
    54; according to the 4-point correspondences: 
    65;       (0,0) -> (x0,y0) 
     
    1211; mappings. see ref. bellow. 
    1312; 
    14 ; CATEGORY:image/grid manipulation 
    15 ; 
    16 ; CALLING SEQUENCE: 
     13; @categories image, grid manipulation 
     14; 
     15; @examples  
    1716; 
    1817;     res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3[,xin,yin]) 
    1918;  
    20 ; INPUTS: 
    21 ; 
    22 ;     x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 
    23 ;     (see above for correspondance with the unit square). Can be 
    24 ;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
    25 ;     given in the anticlockwise order. 
    26 ; 
    27 ;     xin,yin:the coordinates of the point(s) for which we want to do the 
     19FUNCTION square2quadrilateral, x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin 
     20;     @param x0in {in}{required}  the coordinates of the quadrilateral 
     21;     (see above for correspondance with the unit square). Can be 
     22;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     23;     given in the anticlockwise order. 
     24;     @param y0in {in}{required}  the coordinates of the quadrilateral 
     25;     (see above for correspondance with the unit square). Can be 
     26;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     27;     given in the anticlockwise order. 
     28;     @param x1in {in}{required}  the coordinates of the quadrilateral 
     29;     (see above for correspondance with the unit square). Can be 
     30;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     31;     given in the anticlockwise order. 
     32;     @param y1in {in}{required}  the coordinates of the quadrilateral 
     33;     (see above for correspondance with the unit square). Can be 
     34;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     35;     given in the anticlockwise order. 
     36;     @param x2in {in}{required}  the coordinates of the quadrilateral 
     37;     (see above for correspondance with the unit square). Can be 
     38;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     39;     given in the anticlockwise order. 
     40;     @param y2in {in}{required}  the coordinates of the quadrilateral 
     41;     (see above for correspondance with the unit square). Can be 
     42;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     43;     given in the anticlockwise order. 
     44;     @param x3in {in}{required}  the coordinates of the quadrilateral 
     45;     (see above for correspondance with the unit square). Can be 
     46;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     47;     given in the anticlockwise order. 
     48;     @param y3in {in}{required}  the coordinates of the quadrilateral 
     49;     (see above for correspondance with the unit square). Can be 
     50;     scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     51;     given in the anticlockwise order. 
     52; 
     53;     @param xxin {in}{required} the coordinates of the point(s) for which we want to do the 
    2854;     mapping. Can be scalar or array. 
    29 ; 
    30 ; KEYWORD PARAMETERS: 
    31 ; 
    32 ;    /DOUBLE: use double precision to perform the computation  
    33 ; 
    34 ; OUTPUTS: 
     55;     @param yyin {in}{required} the coordinates of the point(s) for which we want to do the 
     56;     mapping. Can be scalar or array. 
     57; 
     58; @returns 
    3559; 
    3660;     (2,n) array: the new coodinates (xout, yout) of the (xin,yin) 
     
    4266;     matrix A which is used for the inverse transformation.  
    4367; 
    44 ; COMMON BLOCKS:none 
    45 ; 
    46 ; SIDE EFFECTS: 
    47 ; 
    48 ; RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 
     68; 
     69; @restrictions I think degenerated quadrilateral (e.g. flat of 
    4970; twisted) is not work. This has to be tested. 
    5071; 
    51 ; EXAMPLE: 
     72; @examples  
    5273; 
    5374; IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 
     
    5879; IDL> tracegrille, reform(out[0,*],11,11), reform(out[1,*],11,11),color=indgen(12)*20 
    5980; 
    60 ; MODIFICATION HISTORY: 
    61 ;      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     81; @history 
     82;      Sebastien Masson (smasson\@lodyc.jussieu.fr) 
    6283;      August 2003 
    6384;      Based on "Digital Image Warping" by G. Wolberg 
  • trunk/SRC/Interpolation/testinterp.pro

    r59 r101  
     1;+ 
     2;- 
    13PRO testinterp 
    24 
Note: See TracChangeset for help on using the changeset viewer.