Ignore:
Timestamp:
06/27/06 17:47:06 (18 years ago)
Author:
pinsard
Message:

add $ in Calendar, Grid, Interpolation, Obsolete and Postscript *.pro files, add svn:keywords Id to all these files, some improvements in header

Location:
trunk/SRC/Documentation/idldoc_html_output
Files:
93 edited

Legend:

Unmodified
Added
Removed
  • trunk/SRC/Documentation/idldoc_html_output/Calendar/date2jul.html

    r111 r118  
    777777          <h3>Version history</h3> 
    778778           
    779            
     779          <h4>Version</h4><div class="value"> $Id$ 
     780</div> 
    780781          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    781                        June 2005</div> 
     782                       June 2005 
     783</div> 
    782784           
    783785           
  • trunk/SRC/Documentation/idldoc_html_output/Calendar/date2string.html

    r111 r118  
    762762            </h4> 
    763763         
    764             <div class="comments"></div> 
     764            <div class="comments"> used to pass your keywords to the created procedure. 
     765</div> 
    765766             
    766767           
     
    775776          <h3>Version history</h3> 
    776777           
    777            
     778          <h4>Version</h4><div class="value"> $Id$ 
     779</div> 
    778780          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    779781 Creation ??? 
    780  update/review June 2005 Sebastien Masson.</div> 
     782 update/review June 2005 Sebastien Masson. 
     783</div> 
    781784           
    782785           
  • trunk/SRC/Documentation/idldoc_html_output/Calendar/daysinmonth.html

    r111 r118  
    768768          <h3>Version history</h3> 
    769769           
    770            
     770          <h4>Version</h4><div class="value"> $Id$ 
     771</div> 
    771772          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    772773                        2/7/98 
    773  update/review/english/new commons: June 2005 Sebastien Masson.</div> 
     774 update/review/english/new commons: June 2005 Sebastien Masson. 
     775</div> 
    774776           
    775777           
  • trunk/SRC/Documentation/idldoc_html_output/Calendar/jul2date.html

    r111 r118  
    754754          <h3>Version history</h3> 
    755755           
    756            
     756          <h4>Version</h4><div class="value"> $Id$ 
     757</div> 
    757758          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    758                        June 2005</div> 
     759                       June 2005 
     760</div> 
    759761           
    760762           
  • trunk/SRC/Documentation/idldoc_html_output/Calendar/leapyr.html

    r111 r118  
    755755          <h3>Version history</h3> 
    756756           
    757            
     757          <h4>Version</h4><div class="value"> $Id$ 
     758</div> 
    758759          <h4>History</h4><div class="value"> 
    759760 
     
    772773 
    773774       June 2005 update for new commons, Sebastien Masson. 
     775 
    774776</div> 
    775777           
  • trunk/SRC/Documentation/idldoc_html_output/Calendar/monthname.html

    r111 r118  
    718718         
    719719          <p class="header"> 
    720             <span class="result">result = </span>monthname(<span class="result"><a href="#_monthname_param_mm1">mm1</a></span>, <a href="#_monthname_keyword__extra">_extra</a>=<span class="result">_extra</span>)</p> 
     720            <span class="result">result = </span>monthname(<span class="result"><a href="#_monthname_param_mm1">mm1</a></span>, <a href="#_monthname_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span>)</p> 
    721721         
    722722          <div class="comments"> 
     
    751751            <h3>Keywords</h3> 
    752752             
    753             <h4 id="_monthname_keyword__extra">_extra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     753            <h4 id="_monthname_keyword__EXTRA">_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    754754               
    755755               
     
    762762            </h4> 
    763763         
    764             <div class="comments"></div> 
     764            <div class="comments"> used to pass your keywords to the created procedure. 
     765</div> 
    765766             
    766767           
     
    771772          <h3>Version history</h3> 
    772773           
    773            
     774          <h4>Version</h4><div class="value"> $Id$ 
     775</div> 
    774776          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    775                       1 October 2001</div> 
     777                      1 October 2001 
     778</div> 
    776779           
    777780           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/computegrid.html

    r111 r118  
    703703       or a suitable mix... 
    704704 
    705  horizontal parameters: 
    706        glam[tf], gphi[tf], e1t and e2t 
    707     and if FULLCGRID keyword is defined: 
    708        glam[uv], gphi[uv], e1[uvf] and e2[uvf] 
    709        
    710  verticals parameters: 
    711        gdep[tw], e3[tw] 
    712  
    713  masks: tmask 
    714         and if FULLCGRID keyword is defined:[uv]maskred fmaskred[xy] 
    715  
    716  triangulation: triangles_list 
    717  
    718  key_ parameters: 
    719        key_shift, key_periodic, key_zreverse, key_yreverse, 
    720        key_stride, key_onearth, key_partialstep 
     705 glamt  
     706 glamf  
     707 gphit  
     708 gphif  
     709 e1t  
     710 e2t  
     711 horizontal parameters 
     712 
     713 glamu {in} 
     714 glamv {in} 
     715 gphiu {in} 
     716 gphiv {in} 
     717 e1u {in} 
     718 e1v {in} 
     719 e1f {in} 
     720 e2u {in} 
     721 e2v {in} 
     722 e2f {in} 
     723 horizontal parameters if FULLCGRID keyword is defined 
     724       
     725 gdept  
     726 gdepw  
     727 e3t  
     728 e3w  
     729 verticals parameters 
     730 
     731 tmask  
     732 masks 
     733 
     734 umaskred {in} 
     735 vmaskred {in} 
     736 fmaskredx {in} 
     737 fmaskredy {in} 
     738 masks if FULLCGRID keyword is defined 
     739  
     740 triangles_list 
     741 triangulation 
    721742</div> 
    722743 
     
    11401161            </h4> 
    11411162         
    1142             <div class="comments"></div> 
     1163            <div class="comments"> 
     1164</div> 
    11431165             
    11441166            <h4 id="_computegrid_keyword_STRCALLING">STRCALLING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    11551177            <div class="comments"> a string containing the calling command used to 
    11561178       call computegrid (this is used by xxx.pro) 
     1179 
     1180 
    11571181</div> 
    11581182             
     
    11681192            </h4> 
    11691193         
    1170             <div class="comments"></div> 
     1194            <div class="comments"> used to pass your keywords to the created function. 
     1195</div> 
    11711196             
    11721197           
     
    11751200          <h3>Version history</h3> 
    11761201           
    1177            
     1202          <h4>Version</h4><div class="value"> $Id$ 
     1203</div> 
    11781204          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    11791205                      2000-04-20 
    11801206  Sept 2004, several bug fixs to suit C grid type... 
    1181   Aug 2005, rewritte almost everything...</div> 
     1207  Aug 2005, rewritte almost everything... 
     1208</div> 
    11821209           
    11831210           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/directory-overview.html

    r111 r118  
    702702       
    703703        <dt><a href="micromeshmask.html?format=raw">micromeshmask.pro</a></dt> 
    704         <dd> reduce the size of the NetCDF meshmask created by OPA by  using bit (and not byte) format for the masks and the foat format  for the other fields.</dd> 
     704        <dd> reduce the size of the NetCDF meshmask created by OPA by  using bit (and not byte) format for the masks and the float format  for the other fields.</dd> 
    705705       
    706706        <dt><a href="n128gaussian.html?format=raw">n128gaussian.pro</a></dt> 
     
    729729       
    730730        <dt><a href="smallmeshmask.html?format=raw">smallmeshmask.pro</a></dt> 
    731         <dd> 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.</dd> 
     731        <dd> reduce the size of the NetCDF meshmask created by OPA by  using byte format for the masks and the float format for the other  fields.</dd> 
    732732       
    733733      </dl> 
  • trunk/SRC/Documentation/idldoc_html_output/Grid/micromeshmask.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> reduce the size of the NetCDF meshmask created by OPA by 
    699  using bit (and not byte) format for the masks and the foat format 
    700  for the other fields.  
     699 using bit (and not byte) format for the masks and the float format 
     700 for the other fields. 
    701701</div> 
    702702 
     
    713713        <dl> 
    714714           
    715           <dt><p><a href="#_ncdf_transfer">ncdf_transfer<span class="result">, inid, outid, inname, outname</span></a></p><dt> 
     715          <dt><p><a href="#_ncdf_transfer">ncdf_transfer<span class="result">, inid, outid, inname[, outname]</span></a></p><dt> 
    716716          <dd> </dd>     
    717717           
    718           <dt><p><a href="#_micromeshmask">micromeshmask<span class="result">, ncfilein, ncfileout</span>, IODIR=<span class="result">IODIR</span></a></p><dt> 
    719           <dd></dd>      
     718          <dt><p><a href="#_micromeshmask">micromeshmask<span class="result">, ncfilein[, ncfileout]</span>, IODIR=<span class="result">IODIR</span></a></p><dt> 
     719          <dd> </dd>     
    720720                 
    721721        </dl> 
     
    732732         
    733733          <p class="header"> 
    734             ncdf_transfer<span class="result">, <a href="#_ncdf_transfer_param_inid">inid</a>, <a href="#_ncdf_transfer_param_outid">outid</a>, <a href="#_ncdf_transfer_param_inname">inname</a>, <a href="#_ncdf_transfer_param_outname">outname</a></span></p> 
     734            ncdf_transfer<span class="result">, <a href="#_ncdf_transfer_param_inid">inid</a>, <a href="#_ncdf_transfer_param_outid">outid</a>, <a href="#_ncdf_transfer_param_inname">inname</a>[, <a href="#_ncdf_transfer_param_outname">outname</a>]</span></p> 
    735735         
    736736          <div class="comments"> 
     
    744744             
    745745            <h4 id="_ncdf_transfer_param_inid">inid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    746                
    747                
    748                
    749                
     746              <span class="attr">in</span> 
     747               
     748               
     749              <span class="attr">required</span> 
    750750               
    751751               
     
    757757             
    758758            <h4 id="_ncdf_transfer_param_outid">outid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    759                
    760                
    761                
    762                
     759              <span class="attr">in</span> 
     760               
     761               
     762              <span class="attr">required</span> 
    763763               
    764764               
     
    770770             
    771771            <h4 id="_ncdf_transfer_param_inname">inname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    772                
    773                
    774                
    775                
     772              <span class="attr">in</span> 
     773               
     774               
     775              <span class="attr">required</span> 
    776776               
    777777               
     
    783783             
    784784            <h4 id="_ncdf_transfer_param_outname">outname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    785                
    786                
    787                
     785              <span class="attr">in</span> 
     786               
     787              <span class="attr">optional</span> 
    788788               
    789789               
     
    793793            </h4> 
    794794         
    795           <div class="comments"></div> 
     795          <div class="comments"> 
     796</div> 
    796797             
    797798 
     
    800801           
    801802 
    802           <h3>Examples</h3><div class="value">  
    803  IDL> reducencmeshmask, ncfilein[, ncfileout] 
    804  
    805   
    806     IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 
    807     IDL> micromeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 
    808 </div> 
     803           
    809804          <h3>Version history</h3> 
    810805           
    811            
     806          <h4>Version</h4><div class="value"> $Id$ 
     807</div> 
    812808          <h4>History</h4><div class="value"> 
    813       July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr)</div> 
     809      July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr) 
     810</div> 
    814811           
    815812           
     
    838835         
    839836          <p class="header"> 
    840             micromeshmask<span class="result">, <a href="#_micromeshmask_param_ncfilein">ncfilein</a>, <a href="#_micromeshmask_param_ncfileout">ncfileout</a></span>, <a href="#_micromeshmask_keyword_IODIR">IODIR</a>=<span class="result">IODIR</span></p> 
    841          
    842           <div class="comments"></div> 
     837            micromeshmask<span class="result">, <a href="#_micromeshmask_param_ncfilein">ncfilein</a>[, <a href="#_micromeshmask_param_ncfileout">ncfileout</a>]</span>, <a href="#_micromeshmask_keyword_IODIR">IODIR</a>=<span class="result">IODIR</span></p> 
     838         
     839          <div class="comments"> 
     840</div> 
    843841 
    844842           
     
    872870              <span class="attr">in</span> 
    873871               
    874                
    875               <span class="attr">required</span> 
     872              <span class="attr">optional</span> 
     873               
    876874               
    877875               
     
    880878            </h4> 
    881879         
    882           <div class="comments"> the name of the uniq reduced meshmask file. default 
    883      definition is micromeshmask.nc 
     880          <div class="comments"> the name of the uniq reduced meshmask file. 
     881 default definition is micromeshmask.nc 
    884882</div> 
    885883             
     
    902900            </h4> 
    903901         
    904             <div class="comments"> to define the files path.</div> 
     902            <div class="comments"> to define the files path. 
     903</div> 
    905904             
    906905           
    907906 
    908            
     907          <h3>Examples</h3><div class="value"> 
     908 IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 
     909 IDL> micromeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 
     910</div> 
    909911           
    910912           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/n128gaussian.html

    r111 r118  
    733733          <h3>Version history</h3> 
    734734           
    735            
     735          <h4>Version</h4><div class="value"> $Id$ 
     736</div> 
    736737          <h4>History</h4><div class="value"> 
    737738      Sebastien Masson (smasson@lodyc.jussieu.fr) 
    738       June 2004</div> 
     739      June 2004 
     740</div> 
    739741           
    740742           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/n160gaussian.html

    r111 r118  
    734734          <h3>Version history</h3> 
    735735           
    736            
     736          <h4>Version</h4><div class="value"> $Id$ 
     737</div> 
    737738          <h4>History</h4><div class="value"> 
    738739      Sebastien Masson (smasson@lodyc.jussieu.fr) 
    739       June 2004</div> 
     740      June 2004 
     741</div> 
    740742           
    741743           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/n256gaussian.html

    r111 r118  
    734734          <h3>Version history</h3> 
    735735           
    736            
     736          <h4>Version</h4><div class="value"> $Id$ 
     737</div> 
    737738          <h4>History</h4><div class="value"> 
    738739      Sebastien Masson (smasson@lodyc.jussieu.fr) 
    739       June 2004</div> 
     740      June 2004 
     741</div> 
    740742           
    741743           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/n48gaussian.html

    r111 r118  
    734734          <h3>Version history</h3> 
    735735           
    736            
     736          <h4>Version</h4><div class="value"> $Id$ 
     737</div> 
    737738          <h4>History</h4><div class="value"> 
    738739      Sebastien Masson (smasson@lodyc.jussieu.fr) 
    739       June 2004</div> 
     740      June 2004 
     741</div> 
    740742           
    741743           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/n80gaussian.html

    r111 r118  
    734734          <h3>Version history</h3> 
    735735           
    736            
     736          <h4>Version</h4><div class="value"> $Id$ 
     737</div> 
    737738          <h4>History</h4><div class="value"> 
    738739      Sebastien Masson (smasson@lodyc.jussieu.fr) 
    739       June 2004</div> 
     740      June 2004 
     741</div> 
    740742           
    741743           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/ncdf_meshread.html

    r111 r118  
    813813            </h4> 
    814814         
    815             <div class="comments"></div> 
     815            <div class="comments"> 
     816</div> 
    816817             
    817818            <h4 id="_ncdf_meshread_keyword_PERIODIC">PERIODIC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    862863    direction. Default definition is key_stride. The resulting value 
    863864    will be stored in the common (cm_4mesh) variable key_stride 
     865 
    864866</div> 
    865867             
     
    890892            </h4> 
    891893         
    892             <div class="comments"></div> 
     894            <div class="comments"> used to pass your keywords to the created function. 
     895 
     896</div> 
    893897             
    894898           
     
    899903          <h3>Version history</h3> 
    900904           
    901            
     905          <h4>Version</h4><div class="value"> $Id$ 
     906</div> 
    902907          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    903908                      12/1999 
     
    906911 of key_shift, ...) 
    907912 Oct. 2004, Sebastien Masson: add PERIODIC and SHIFT 
    908  Aug. 2005, Sebastien Masson: some cleaning + english </div> 
     913 Aug. 2005, Sebastien Masson: some cleaning + english  
     914</div> 
    909915           
    910916           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/restoreboxparam.html

    r111 r118  
    751751          <h3>Version history</h3> 
    752752           
    753            
     753          <h4>Version</h4><div class="value"> $Id$ 
     754</div> 
    754755          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    755                       July 2005</div> 
     756                      July 2005 
     757</div> 
    756758           
    757759           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/saveboxparam.html

    r111 r118  
    752752          <h3>Version history</h3> 
    753753           
    754            
     754          <h4>Version</h4><div class="value"> $Id$ 
     755</div> 
    755756          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    756                       June 2005</div> 
     757                      June 2005 
     758</div> 
    757759           
    758760           
  • trunk/SRC/Documentation/idldoc_html_output/Grid/smallmeshmask.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> reduce the size of the NetCDF meshmask created by OPA by 
    699  using byte format for the masks and the foat format for the other 
     699 using byte format for the masks and the float format for the other 
    700700 fields. 
    701701</div> 
     
    713713        <dl> 
    714714           
    715           <dt><p><a href="#_ncdf_transfer">ncdf_transfer<span class="result">, inid, outid, inname, outname</span></a></p><dt> 
     715          <dt><p><a href="#_ncdf_transfer">ncdf_transfer<span class="result">, inid, outid, inname[, outname]</span></a></p><dt> 
    716716          <dd>  </dd>    
    717717           
     
    732732         
    733733          <p class="header"> 
    734             ncdf_transfer<span class="result">, <a href="#_ncdf_transfer_param_inid">inid</a>, <a href="#_ncdf_transfer_param_outid">outid</a>, <a href="#_ncdf_transfer_param_inname">inname</a>, <a href="#_ncdf_transfer_param_outname">outname</a></span></p> 
     734            ncdf_transfer<span class="result">, <a href="#_ncdf_transfer_param_inid">inid</a>, <a href="#_ncdf_transfer_param_outid">outid</a>, <a href="#_ncdf_transfer_param_inname">inname</a>[, <a href="#_ncdf_transfer_param_outname">outname</a>]</span></p> 
    735735         
    736736          <div class="comments"> 
     
    745745             
    746746            <h4 id="_ncdf_transfer_param_inid">inid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    747                
    748                
    749                
    750                
     747              <span class="attr">in</span> 
     748               
     749               
     750              <span class="attr">required</span> 
    751751               
    752752               
     
    758758             
    759759            <h4 id="_ncdf_transfer_param_outid">outid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    760                
    761                
    762                
    763                
     760              <span class="attr">in</span> 
     761               
     762               
     763              <span class="attr">required</span> 
    764764               
    765765               
     
    771771             
    772772            <h4 id="_ncdf_transfer_param_inname">inname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    773                
    774                
    775                
    776                
     773              <span class="attr">in</span> 
     774               
     775               
     776              <span class="attr">required</span> 
    777777               
    778778               
     
    784784             
    785785            <h4 id="_ncdf_transfer_param_outname">outname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    786                
    787                
    788                
     786              <span class="attr">in</span> 
     787               
     788              <span class="attr">optional</span> 
    789789               
    790790               
     
    794794            </h4> 
    795795         
    796           <div class="comments"></div> 
     796          <div class="comments"> 
     797</div> 
    797798             
    798799 
     
    804805          <h3>Version history</h3> 
    805806           
    806            
     807          <h4>Version</h4><div class="value"> $Id$ 
     808</div> 
    807809          <h4>History</h4><div class="value"> 
    808       July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr)</div> 
     810      July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr) 
     811</div> 
    809812           
    810813           
     
    908911          <h3>Version history</h3> 
    909912           
    910            
     913          <h4>Version</h4><div class="value"> $Id$ 
     914</div> 
    911915          <h4>History</h4><div class="value"> 
    912       July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr)</div> 
     916      July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr) 
     917</div> 
    913918           
    914919           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/angle.html

    r111 r118  
    747747             
    748748            <h4 id="_fsnspp_param_plam">plam&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    749                
    750                
    751                
    752                
    753                
    754                
    755                
    756                
    757             </h4> 
    758          
    759           <div class="comments"></div> 
     749              <span class="attr">in</span> 
     750               
     751               
     752              <span class="attr">required</span> 
     753               
     754               
     755               
     756               
     757            </h4> 
     758         
     759          <div class="comments"> 
     760</div> 
    760761             
    761762            <h4 id="_fsnspp_param_pphi">pphi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    762                
    763                
    764                
    765                
    766                
    767                
    768                
    769                
    770             </h4> 
    771          
    772           <div class="comments"></div> 
     763              <span class="attr">in</span> 
     764               
     765               
     766              <span class="attr">required</span> 
     767               
     768               
     769               
     770               
     771            </h4> 
     772         
     773          <div class="comments">  
     774</div> 
    773775             
    774776 
     
    798800          <h3>Version history</h3> 
    799801           
    800            
     802          <h4>Version</h4><div class="value"> $Id$ 
     803</div> 
    801804          <h4>History</h4><div class="value"> 
    802805   -------------- 
    803806       Original :  96-07 (O. Marti) 
    804807                   98-06 (G. Madec) 
    805        Feb 2005: IDL adaptation S. Masson </div> 
     808       Feb 2005: IDL adaptation S. Masson  
     809</div> 
    806810           
    807811           
     
    868872             
    869873            <h4 id="_angle_param_gcosu">gcosu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    870                
    871                
    872                
    873                
     874              <span class="attr">in</span> 
     875               
     876               
     877              <span class="attr">required</span> 
    874878               
    875879               
     
    881885             
    882886            <h4 id="_angle_param_gsinu">gsinu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    883                
    884                
    885                
    886                
     887              <span class="attr">in</span> 
     888               
     889               
     890              <span class="attr">required</span> 
    887891               
    888892               
     
    894898             
    895899            <h4 id="_angle_param_gcosv">gcosv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    896                
    897                
    898                
    899                
     900              <span class="attr">in</span> 
     901               
     902               
     903              <span class="attr">required</span> 
    900904               
    901905               
     
    907911             
    908912            <h4 id="_angle_param_gsinv">gsinv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    909                
    910                
    911                
    912                
     913              <span class="attr">in</span> 
     914               
     915               
     916              <span class="attr">required</span> 
    913917               
    914918               
     
    920924             
    921925            <h4 id="_angle_param_gcost">gcost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    922                
    923                
    924                
    925                
     926              <span class="attr">in</span> 
     927               
     928               
     929              <span class="attr">required</span> 
    926930               
    927931               
     
    933937             
    934938            <h4 id="_angle_param_gsint">gsint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    935                
    936                
    937                
    938                
     939              <span class="attr">in</span> 
     940               
     941               
     942              <span class="attr">required</span> 
    939943               
    940944               
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/clickincell.html

    r111 r118  
    838838          <h3>Version history</h3> 
    839839           
    840            
     840          <h4>Version</h4><div class="value"> $Id$ 
     841 
     842</div> 
    841843          <h4>History</h4><div class="value"> 
    842844      Sebastien Masson (smasson@lodyc.jussieu.fr) 
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromirr_bilinear_weigaddr.html

    r112 r118  
    722722          <div class="comments"></div> 
    723723 
    724           <h3>Return value</h3><div class="value">  
    725      weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    726      perform the interpolation: 
    727           dataout = total(weig*datain[addr], 1) 
    728           dataout = reform(dataout, jpia, jpja, /over) 
    729 </div> 
     724           
    730725 
    731726           
     
    809804            </h4> 
    810805         
    811           <div class="comments"> land/se mask of the output data  
     806          <div class="comments"> land/sea mask of the output data  
    812807</div> 
    813808             
    814809            <h4 id="_compute_fromirr_bilinear_weigaddr_param_weig">weig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    815810               
    816                
     811              <span class="attr">out</span> 
    817812               
    818813               
     
    827822            <h4 id="_compute_fromirr_bilinear_weigaddr_param_addr">addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    828823               
    829                
     824              <span class="attr">out</span> 
    830825               
    831826               
     
    836831            </h4> 
    837832         
    838           <div class="comments"></div> 
     833          <div class="comments"> 
     834 2D arrays, weig and addr are the weight and addresses used to 
     835 perform the interpolation: 
     836  dataout = total(weig*datain[addr], 1) 
     837  dataout = reform(dataout, jpia, jpja, /over) 
     838</div> 
    839839             
    840840 
     
    846846          <h3>Version history</h3> 
    847847           
    848            
     848          <h4>Version</h4><div class="value"> $Id$ 
     849</div> 
    849850          <h4>History</h4><div class="value"> 
    850851  June 2006: Sebastien Masson (smasson@lodyc.jussieu.fr)  
    851  </div> 
     852  
     853</div> 
    852854           
    853855           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_bilinear_weigaddr.html

    r111 r118  
    721721          <div class="comments"></div> 
    722722 
    723           <h3>Return value</h3><div class="value">  
    724      weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    725      perform the interpolation: 
    726           dataout = total(weig*datain[addr], 1) 
    727           dataout = reform(dataout, jpio, jpjo, /over) 
    728 </div> 
     723           
    729724 
    730725           
     
    787782            <h4 id="_compute_fromreg_bilinear_weigaddr_param_weig">weig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    788783               
    789                
     784              <span class="attr">out</span> 
    790785               
    791786               
     
    800795            <h4 id="_compute_fromreg_bilinear_weigaddr_param_addr">addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    801796               
    802                
     797              <span class="attr">out</span> 
    803798               
    804799               
     
    809804            </h4> 
    810805         
    811           <div class="comments"></div> 
     806          <div class="comments"> 
     807 2D arrays, weig and addr are the weight and addresses used to 
     808 perform the interpolation: 
     809  dataout = total(weig*datain[addr], 1) 
     810  dataout = reform(dataout, jpio, jpjo, /over) 
     811</div> 
    812812             
    813813 
     
    853853          <h3>Version history</h3> 
    854854           
    855            
     855          <h4>Version</h4><div class="value"> $Id$ 
     856</div> 
    856857          <h4>History</h4><div class="value"> 
    857858  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_imoms3_weigaddr.html

    r111 r118  
    722722</div> 
    723723 
    724           <h3>Return value</h3><div class="value">  
    725      weig, addr: 2D arrays, weig and addr are the weight and addresses used to 
    726      perform the interpolation: 
    727           dataout = total(weig*datain[addr], 1) 
    728           dataout = reform(dataout, jpio, jpjo, /over) 
    729 </div> 
     724           
    730725 
    731726           
     
    788783            <h4 id="_compute_fromreg_imoms3_weigaddr_param_weig">weig&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    789784               
    790                
     785              <span class="attr">out</span> 
    791786               
    792787               
     
    801796            <h4 id="_compute_fromreg_imoms3_weigaddr_param_addr">addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    802797               
    803                
     798              <span class="attr">out</span> 
    804799               
    805800               
     
    810805            </h4> 
    811806         
    812           <div class="comments"></div> 
     807          <div class="comments"> 
     808 2D arrays, weig and addr are the weight and addresses used to 
     809 perform the interpolation: 
     810  dataout = total(weig*datain[addr], 1) 
     811  dataout = reform(dataout, jpio, jpjo, /over) 
     812</div> 
    813813             
    814814 
     
    830830            </h4> 
    831831         
    832             <div class="comments"> and /NOSOUTHERNLINE activate if you don't whant to take into 
    833           account the northen/southern line of the input data when perfoming the 
    834           interpolation. 
     832            <div class="comments"> </div> 
     833             
     834            <h4 id="_compute_fromreg_imoms3_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     835               
     836               
     837               
     838               
     839               
     840               
     841               
     842               
     843            </h4> 
     844         
     845            <div class="comments">  
     846 activate if you don't whant to take into account the northen/southern line  
     847 of the input data when perfoming the interpolation. 
    835848</div> 
    836849             
    837             <h4 id="_compute_fromreg_imoms3_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    838                
    839                
    840                
    841                
    842                
    843                
    844                
    845                
    846             </h4> 
    847          
    848             <div class="comments"></div> 
    849              
    850850           
    851851 
     
    853853          <h3>Version history</h3> 
    854854           
    855            
     855          <h4>Version</h4><div class="value"> $Id$ 
     856</div> 
    856857          <h4>History</h4><div class="value"> 
    857858  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
    858   March 2006: works for rectangular grids</div> 
     859  March 2006: works for rectangular grids 
     860</div> 
    859861           
    860862           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/cutpar.html

    r111 r118  
    722722 
    723723          <h3>Return value</h3><div class="value"> 
    724         -defaut: 3d array(2,n^2,p) giving the center position of each 
     724        - defaut: 3d array(2,n^2,p) giving the center position of each 
    725725        piece of the parallelograms 
    726         -/endpoints: 3d array(2,(n+1)^2,p) giving the edge positions 
     726        - /endpoints: 3d array(2,(n+1)^2,p) giving the edge positions 
    727727        of each piece of the parallelograms 
    728728</div> 
     
    743743            </h4> 
    744744         
    745           <div class="comments"> 1d arrays of p elements, giving the edge positions. The 
     745          <div class="comments"></div> 
     746             
     747            <h4 id="_cutpar_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     748              <span class="attr">in</span> 
     749               
     750               
     751              <span class="attr">required</span> 
     752               
     753               
     754               
     755               
     756            </h4> 
     757         
     758          <div class="comments"> </div> 
     759             
     760            <h4 id="_cutpar_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     761              <span class="attr">in</span> 
     762               
     763               
     764              <span class="attr">required</span> 
     765               
     766               
     767               
     768               
     769            </h4> 
     770         
     771          <div class="comments"></div> 
     772             
     773            <h4 id="_cutpar_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     774              <span class="attr">in</span> 
     775               
     776               
     777              <span class="attr">required</span> 
     778               
     779               
     780               
     781               
     782            </h4> 
     783         
     784          <div class="comments"> </div> 
     785             
     786            <h4 id="_cutpar_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     787              <span class="attr">in</span> 
     788               
     789               
     790              <span class="attr">required</span> 
     791               
     792               
     793               
     794               
     795            </h4> 
     796         
     797          <div class="comments"></div> 
     798             
     799            <h4 id="_cutpar_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     800              <span class="attr">in</span> 
     801               
     802               
     803              <span class="attr">required</span> 
     804               
     805               
     806               
     807               
     808            </h4> 
     809         
     810          <div class="comments"> </div> 
     811             
     812            <h4 id="_cutpar_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     813              <span class="attr">in</span> 
     814               
     815               
     816              <span class="attr">required</span> 
     817               
     818               
     819               
     820               
     821            </h4> 
     822         
     823          <div class="comments"></div> 
     824             
     825            <h4 id="_cutpar_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     826              <span class="attr">in</span> 
     827               
     828               
     829              <span class="attr">required</span> 
     830               
     831               
     832               
     833               
     834            </h4> 
     835         
     836          <div class="comments">  
     837 1d arrays of p elements, giving the edge positions. The 
    746838       edges must be given as in plot to traw the parallelogram. (see 
    747        example).</div> 
    748              
    749             <h4 id="_cutpar_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    750                
    751                
    752                
    753                
    754                
    755                
    756                
    757                
    758             </h4> 
    759          
    760           <div class="comments"></div> 
    761              
    762             <h4 id="_cutpar_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    763                
    764                
    765                
    766                
    767                
    768                
    769                
    770                
    771             </h4> 
    772          
    773           <div class="comments"></div> 
    774              
    775             <h4 id="_cutpar_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    776                
    777                
    778                
    779                
    780                
    781                
    782                
    783                
    784             </h4> 
    785          
    786           <div class="comments"></div> 
    787              
    788             <h4 id="_cutpar_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    789                
    790                
    791                
    792                
    793                
    794                
    795                
    796                
    797             </h4> 
    798          
    799           <div class="comments"></div> 
    800              
    801             <h4 id="_cutpar_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    802                
    803                
    804                
    805                
    806                
    807                
    808                
    809                
    810             </h4> 
    811          
    812           <div class="comments"></div> 
    813              
    814             <h4 id="_cutpar_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    815                
    816                
    817                
    818                
    819                
    820                
    821                
    822                
    823             </h4> 
    824          
    825           <div class="comments"></div> 
    826              
    827             <h4 id="_cutpar_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    828                
    829                
    830                
    831                
    832                
    833                
    834                
    835                
    836             </h4> 
    837          
    838           <div class="comments"></div> 
     839       example). 
     840</div> 
    839841             
    840842            <h4 id="_cutpar_param_n">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    896898  
    897899 
    898  x0 = [2,6,2] 
    899  y0 = [0,2,6] 
    900  x1 = [3,8,4] 
    901  y1 = [4,4,6] 
    902  x2 = [1,6,4] 
    903  y2 = [5,6,8] 
    904  x3 = [0,4,2] 
    905  y3 = [1,4,8] 
    906  n = 4 
    907  splot, [0,10], [0,10], xstyle = 1, ystyle = 1,/nodata 
    908  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]] 
    909  res=cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
    910  for i=0,2 do oplot, [res[0,*,i]], [res[1,*,i]], color = 20+10*i, psym = 1, thick = 3 
     900 IDL> x0 = [2,6,2] 
     901 IDL> y0 = [0,2,6] 
     902 IDL> x1 = [3,8,4] 
     903 IDL> y1 = [4,4,6] 
     904 IDL> x2 = [1,6,4] 
     905 IDL> y2 = [5,6,8] 
     906 IDL> x3 = [0,4,2] 
     907 IDL> y3 = [1,4,8] 
     908 IDL> n = 4 
     909 IDL> splot, [0,10], [0,10], xstyle = 1, ystyle = 1,/nodata 
     910 IDL> 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]] 
     911 IDL> res=cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 
     912 IDL> for i=0,2 do oplot, [res[0,*,i]], [res[1,*,i]], color = 20+10*i, psym = 1, thick = 3 
    911913</div> 
    912914          <h3>Version history</h3> 
    913915           
    914            
     916          <h4>Version</h4><div class="value"> $Id$ 
     917</div> 
    915918          <h4>History</h4><div class="value"> 
    916919           S. Masson (smasson@lodyc.jussieu.fr) 
    917            July 5th, 2002</div> 
     920           July 5th, 2002 
     921</div> 
    918922           
    919923           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/cutsegment.html

    r111 r118  
    743743            </h4> 
    744744         
    745           <div class="comments">  1d arrays of p elements, the coordinates of 
    746          the endpoints of the p segmements</div> 
     745          <div class="comments"></div> 
    747746             
    748747            <h4 id="_cutsegment_param_y0">y0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    749                
    750                
    751                
    752                
     748              <span class="attr">in</span> 
     749               
     750               
     751              <span class="attr">required</span> 
    753752               
    754753               
     
    760759             
    761760            <h4 id="_cutsegment_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    762                
    763                
    764                
    765                
     761              <span class="attr">in</span> 
     762               
     763               
     764              <span class="attr">required</span> 
    766765               
    767766               
     
    773772             
    774773            <h4 id="_cutsegment_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    775                
    776                
    777                
    778                
     774              <span class="attr">in</span> 
     775               
     776               
     777              <span class="attr">required</span> 
    779778               
    780779               
     
    783782            </h4> 
    784783         
    785           <div class="comments"></div> 
     784          <div class="comments"> 
     785 1d arrays of p elements, the coordinates of the endpoints of the p segments 
     786</div> 
    786787             
    787788            <h4 id="_cutsegment_param_n">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    796797            </h4> 
    797798         
    798           <div class="comments">  the number of pieces we want to cut each segment 
    799  
     799          <div class="comments"> the number of pieces we want to cut each segment 
    800800</div> 
    801801             
     
    857857          <h3>Version history</h3> 
    858858           
    859            
     859          <h4>Version</h4><div class="value"> $Id$ 
     860</div> 
    860861          <h4>History</h4><div class="value"> 
    861862           S. Masson (smasson@lodyc.jussieu.fr) 
    862            July 5th, 2002</div> 
     863           July 5th, 2002 
     864</div> 
    863865           
    864866           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/directory-overview.html

    r114 r118  
    720720       
    721721        <dt><a href="extrapolate.html?format=raw">extrapolate.pro</a></dt> 
    722         <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> 
     722        <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> 
    723723       
    724724        <dt><a href="fromirr.html?format=raw">fromirr.pro</a></dt> 
     
    729729       
    730730        <dt><a href="get_gridparams.html?format=raw">get_gridparams.pro</a></dt> 
    731         <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> 
     731        <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> 
    732732       
    733733        <dt><a href="imoms3.html?format=raw">imoms3.pro</a></dt> 
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/extrapolate.html

    r111 r118  
    696696      </div> 
    697697 
    698       <div id="file_comments"> extrapolate data (zinput) where maskinput eq 0 by filling step by 
    699  step the coastline points with the mean value of the 8 neighbourgs. 
     698      <div id="file_comments"> extrapolate data (zinput) where maskinput eq 0 by filling  
     699 step by step the coastline points with the mean value of the 8 neighbourgs. 
    700700</div> 
    701701 
     
    716716         
    717717          <p class="header"> 
    718             <span class="result">result = </span>extrapolate(<span class="result"><a href="#_extrapolate_param_zinput">zinput</a>, <a href="#_extrapolate_param_maskinput">maskinput</a>, <a href="#_extrapolate_param_nb_iteration">nb_iteration</a></span>, <a href="#_extrapolate_keyword_x_periodic">x_periodic</a>=<span class="result">x_periodic</span>, <a href="#_extrapolate_keyword_MINVAL">MINVAL</a>=<span class="result">MINVAL</span>, <a href="#_extrapolate_keyword_MAXVAL">MAXVAL</a>=<span class="result">MAXVAL</span>)</p> 
     718            <span class="result">result = </span>extrapolate(<span class="result"><a href="#_extrapolate_param_zinput">zinput</a>, <a href="#_extrapolate_param_maskinput">maskinput</a>[, <a href="#_extrapolate_param_nb_iteration">nb_iteration</a>]</span>, <a href="#_extrapolate_keyword_x_periodic">x_periodic</a>=<span class="result">x_periodic</span>, <a href="#_extrapolate_keyword_MINVAL">MINVAL</a>=<span class="result">MINVAL</span>, <a href="#_extrapolate_keyword_MAXVAL">MAXVAL</a>=<span class="result">MAXVAL</span>)</p> 
    719719         
    720720          <div class="comments"></div> 
     
    727727             
    728728            <h4 id="_extrapolate_param_zinput">zinput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    729                
    730                
    731                
    732                
     729              <span class="attr">in</span> 
     730               
     731               
     732              <span class="attr">required</span> 
    733733               
    734734               
     
    737737            </h4> 
    738738         
    739           <div class="comments"></div> 
     739          <div class="comments"> 
     740 data to be extrapolate 
     741</div> 
    740742             
    741743            <h4 id="_extrapolate_param_maskinput">maskinput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    742                
    743                
    744                
    745                
     744              <span class="attr">in</span> 
     745               
     746               
     747              <span class="attr">required</span> 
    746748               
    747749               
     
    750752            </h4> 
    751753         
    752           <div class="comments"></div> 
     754          <div class="comments"> 
     755</div> 
    753756             
    754757            <h4 id="_extrapolate_param_nb_iteration">nb_iteration&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    755                
    756                
    757                
     758              <span class="attr">in</span> 
     759               
     760              <span class="attr">optional</span> 
    758761               
    759762               
     
    763766            </h4> 
    764767         
    765           <div class="comments"></div> 
     768          <div class="comments"> 
     769 number of iteration 
     770</div> 
    766771             
    767772 
     
    809814            </h4> 
    810815         
    811             <div class="comments"></div> 
     816            <div class="comments"> 
     817</div> 
    812818             
    813819           
    814820 
    815821           
    816            
    817            
    818            
     822          <h3>Version history</h3> 
     823           
     824          <h4>Version</h4><div class="value"> $Id$ 
     825</div> 
    819826           
    820827           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/fromirr.html

    r113 r118  
    882882 
    883883   
    884   tncep = fromirr('bilinear', topa, glamt, gphit, tmask[*,*,0], lonout, latout, mskout) 
     884 IDL> tncep = fromirr('bilinear', topa, glamt, gphit, tmask[*,*,0], lonout, latout, mskout) 
    885885 
    886886  or  
    887887 
    888   t1ncep = fromirr('bilinear', topa, glamt, gphit, tmask[*,*,0], lonout, latout, mskout $ 
     888 IDL> t1ncep = fromirr('bilinear', topa, glamt, gphit, tmask[*,*,0], lonout, latout, mskout $ 
    889889                            , WEIG = a, ADDR = b) 
    890   help, a, b 
    891   t2ncep = fromirr('bilinear', topa, WEIG = a, ADDR = b) 
     890 IDL> help, a, b 
     891 IDL> t2ncep = fromirr('bilinear', topa, WEIG = a, ADDR = b) 
    892892</div> 
    893893          <h3>Version history</h3> 
    894894           
    895            
     895          <h4>Version</h4><div class="value"> $Id$ 
     896</div> 
    896897          <h4>History</h4><div class="value"> 
    897898  June 2006: Sebastien Masson (smasson@lodyc.jussieu.fr)  
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/fromreg.html

    r113 r118  
    795795            </h4> 
    796796         
    797           <div class="comments">  1D or 2D array defining the longitude of the output data 
    798   1D or 2D array defining the latitude of the output data 
    799 </div> 
     797          <div class="comments">  1D or 2D array defining the longitude of the output data</div> 
    800798             
    801799            <h4 id="_fromreg_param_latout">latout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    802                
    803                
    804                
    805                
     800              <span class="attr">in</span> 
     801               
     802               
     803              <span class="attr">required</span> 
    806804               
    807805               
     
    810808            </h4> 
    811809         
    812           <div class="comments"></div> 
     810          <div class="comments">  1D or 2D array defining the latitude of the output data 
     811</div> 
    813812             
    814813 
     
    864863            </h4> 
    865864         
    866             <div class="comments"> and /NOSOUTHERNLINE activate if you don't whant to take into 
    867           account the northen/southern line of the input data when perfoming the 
    868           interpolation. 
    869 </div> 
     865            <div class="comments"> </div> 
    870866             
    871867            <h4 id="_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    880876            </h4> 
    881877         
    882             <div class="comments"></div> 
     878            <div class="comments">  
     879 activate if you don't whant to take into account the northen/southern line  
     880 of the input data when perfoming the interpolation. 
     881</div> 
    883882             
    884883           
     
    889888   
    890889   
    891   topa = fromreg('bilinear', tncep, xncep, yncep, glamt, gphit) 
     890  IDL> topa = fromreg('bilinear', tncep, xncep, yncep, glamt, gphit) 
    892891 
    893892  or  
    894893 
    895   t1opa = fromreg('bilinear', t1ncep, xncep, yncep, glamt, gphit, WEIG = a, ADDR = b) 
    896   help, a, b 
    897   t2opa = fromreg('bilinear', t2ncep, xncep, WEIG = a, ADDR = b) 
     894  IDL> t1opa = fromreg('bilinear', t1ncep, xncep, yncep, glamt, gphit, WEIG = a, ADDR = b) 
     895  IDL> help, a, b 
     896  IDL> t2opa = fromreg('bilinear', t2ncep, xncep, WEIG = a, ADDR = b) 
    898897</div> 
    899898          <h3>Version history</h3> 
    900899           
    901            
     900          <h4>Version</h4><div class="value"> $Id$ 
     901</div> 
    902902          <h4>History</h4><div class="value"> 
    903903  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
    904  </div> 
     904</div> 
    905905           
    906906           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/get_gridparams.html

    r111 r118  
    696696      </div> 
    697697 
    698       <div id="file_comments">  
     698      <div id="file_comments"> 
    699699   1) extract from a NetCDF file the longitude, latidude, and their dimensions 
    700       and make sure it is 1D or 2D arrays  
    701     
    702    or 2) given longitude and latitude arrays get their dimensions and make sure  
    703       they are 1D or 2D arrays  
     700      and make sure it is 1D or 2D arrays 
     701 
     702   or 2) given longitude and latitude arrays get their dimensions and make 
     703  sure they are 1D or 2D arrays 
    704704</div> 
    705705 
     
    743743            </h4> 
    744744         
    745           <div class="comments">  the name of the netcdf file 
    746   1d or 2D arrays defining longitudes and latitudes.  
     745          <div class="comments"> the name of the netcdf file 
     746 1d or 2D arrays defining longitudes and latitudes. 
    747747 the variable that will contain the longitudes</div> 
    748748             
     
    758758            </h4> 
    759759         
    760           <div class="comments">  the name of the variable that contains the longitude in the NetCDF file 
    761   1d or 2D arrays defining longitudes and latitudes.  
    762     Note that these arrays are also outputs and can therefore be modified.  
     760          <div class="comments"> the name of the variable that contains the longitude in the NetCDF file 
     761 1d or 2D arrays defining longitudes and latitudes. 
     762    Note that these arrays are also outputs and can therefore be modified. 
    763763 
    764764 the variable that will contain the latitudes</div> 
     
    775775            </h4> 
    776776         
    777           <div class="comments">  the name of the variable that contains the latitude in the NetCDF file 
     777          <div class="comments"> the name of the variable that contains the latitude in the NetCDF file 
    778778 the number of points in the longitudinal direction</div> 
    779779             
     
    807807    arrays or 2D arrays (jpi,jpj). Note that of  n_dimensions = 1, then the 
    808808    grid must be regular (each longitudes must be the same for all latitudes 
    809     and each latitudes should be the sae for all longitudes).  
     809    and each latitudes should be the sae for all longitudes). 
    810810</div> 
    811811             
     
    849849          <div class="comments"> 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 
    850850 
    851  or  
    852  
    853  2) </div> 
     851 or 
     852 
     853 2)</div> 
    854854             
    855855 
     
    871871            </h4> 
    872872         
    873             <div class="comments"></div> 
    874              
    875            
    876  
    877           <h3>Examples</h3><div class="value">  
    878   
     873            <div class="comments"> use double precision to perform the computation 
     874</div> 
     875             
     876           
     877 
     878          <h3>Examples</h3><div class="value"> 
     879 
    879880 1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions 
    880881 
    881  or  
     882 or 
    882883 
    883884 2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 
    884885 
    885  1)  
    886    
    887   
    888  1) ncdf_get_gridparams, 'coordinates_ORCA_R05.nc', 'glamt', 'gphit' $ 
     886 1) 
     887 
     888 
     889 1) IDL> ncdf_get_gridparams, 'coordinates_ORCA_R05.nc', 'glamt', 'gphit' $ 
    889890            , olon, olat, jpio, jpjo, 2 
    890891 
    891  2) ncdf_get_gridparams, olon, olat, jpio, jpjo, 2 
     892 2) IDL> ncdf_get_gridparams, olon, olat, jpio, jpjo, 2 
    892893</div> 
    893894          <h3>Version history</h3> 
    894895           
    895            
     896          <h4>Version</h4><div class="value"> $Id$ 
     897</div> 
    896898          <h4>History</h4><div class="value"> 
    897   November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr)  
    898  </div> 
     899  November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr) 
     900</div> 
    899901           
    900902           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/imoms3.html

    r111 r118  
    717717         
    718718          <div class="comments"> 
     719  
    719720 </div> 
    720721 
     
    726727             
    727728            <h4 id="_imoms3_param_xin">xin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     729              <span class="attr">in</span> 
    728730               
    729731               
    730                
    731                
     732              <span class="attr">required</span> 
    732733               
    733734               
     
    736737            </h4> 
    737738         
    738           <div class="comments"></div> 
     739          <div class="comments"> 
     740</div> 
    739741             
    740742 
     
    744746 
    745747           
    746            
    747            
    748            
     748          <h3>Version history</h3> 
     749           
     750          <h4>Version</h4><div class="value"> $Id$ 
     751</div> 
    749752           
    750753           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/inquad.html

    r111 r118  
    741741            </h4> 
    742742         
    743           <div class="comments">  the coordinates of the point we want to know where it 
    744      is. Must be a scalar if /onsphere activated else can be scalar 
    745      or array.  
    746 </div> 
     743          <div class="comments"></div> 
    747744             
    748745            <h4 id="_inquad_param_y">y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    749                
    750                
    751                
    752                
    753                
    754                
    755                
    756                
    757             </h4> 
    758          
    759           <div class="comments"></div> 
     746              <span class="attr">in</span> 
     747               
     748               
     749              <span class="attr">required</span> 
     750               
     751               
     752               
     753               
     754            </h4> 
     755         
     756          <div class="comments"> 
     757  the coordinates of the point we want to know where it is.  
     758  Must be a scalar if /onsphere activated else can be scalar or array.  
     759</div> 
    760760             
    761761            <h4 id="_inquad_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    770770            </h4> 
    771771         
    772           <div class="comments">  the coordinates of the 
    773      quadrilateral given in the CLOCKWISE order. Scalar or array. 
    774  
    775 </div> 
     772          <div class="comments"></div> 
    776773             
    777774            <h4 id="_inquad_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    778                
    779                
    780                
    781                
     775              <span class="attr">in</span> 
     776               
     777               
     778              <span class="attr">required</span> 
    782779               
    783780               
     
    789786             
    790787            <h4 id="_inquad_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    791                
    792                
    793                
    794                
     788              <span class="attr">in</span> 
     789               
     790               
     791              <span class="attr">required</span> 
    795792               
    796793               
     
    802799             
    803800            <h4 id="_inquad_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    804                
    805                
    806                
    807                
     801              <span class="attr">in</span> 
     802               
     803               
     804              <span class="attr">required</span> 
    808805               
    809806               
     
    815812             
    816813            <h4 id="_inquad_param_x3">x3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    817                
    818                
    819                
    820                
     814              <span class="attr">in</span> 
     815               
     816               
     817              <span class="attr">required</span> 
    821818               
    822819               
     
    828825             
    829826            <h4 id="_inquad_param_y3">y3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    830                
    831                
    832                
    833                
     827              <span class="attr">in</span> 
     828               
     829               
     830              <span class="attr">required</span> 
    834831               
    835832               
     
    841838             
    842839            <h4 id="_inquad_param_x4">x4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    843                
    844                
    845                
    846                
     840              <span class="attr">in</span> 
     841               
     842               
     843              <span class="attr">required</span> 
    847844               
    848845               
     
    854851             
    855852            <h4 id="_inquad_param_y4">y4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    856                
    857                
    858                
    859                
    860                
    861                
    862                
    863                
    864             </h4> 
    865          
    866           <div class="comments"></div> 
     853              <span class="attr">in</span> 
     854               
     855               
     856              <span class="attr">required</span> 
     857               
     858               
     859               
     860               
     861            </h4> 
     862         
     863          <div class="comments"> 
     864  the coordinates of the quadrilateral given in the CLOCKWISE order.  
     865  Scalar or array. 
     866</div> 
    867867             
    868868 
     
    916916            </h4> 
    917917         
    918             <div class="comments"> :the zoom (circle centred on the (x,y) with a radius of 
     918            <div class="comments"> the zoom (circle centred on the (x,y) with a radius of 
    919919    zoomradius degree where we look for the the quadrilateral which;    contains the (x,y) point) used for the satellite projection 
    920920    when /onsphere is activated. Default is 4 and seems to be the 
     
    948948            </h4> 
    949949         
    950             <div class="comments"></div> 
     950            <div class="comments"> 
     951</div> 
    951952             
    952953           
    953954 
    954955          <h3>Examples</h3><div class="value">  
    955  
    956      res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
     956 IDL> res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
    957957 
    958958  
    959959 
    960        x = 1.*[1, 2, 6, 7, 3] 
    961        y = 1.*[1, 3, 3, 4, 7] 
    962        x1 = 1.*[0,4,2] 
    963        y1 = 1.*[1,4,8] 
    964        x2 = 1.*[1,6,4] 
    965        y2 = 1.*[5,6,8] 
    966        x3 = 1.*[3,8,4] 
    967        y3 = 1.*[4,4,6] 
    968        x4 = 1.*[2,6,2] 
    969        y4 = 1.*[0,2,6] 
    970        splot, [0,10], [0,10], xstyle = 1, ystyle = 1,/nodata 
    971        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]] 
    972        oplot, x, y, color = 20, psym = 1, thick = 2 
    973        print, inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
     960 IDL> x = 1.*[1, 2, 6, 7, 3] 
     961 IDL> y = 1.*[1, 3, 3, 4, 7] 
     962 IDL> x1 = 1.*[0,4,2] 
     963 IDL> y1 = 1.*[1,4,8] 
     964 IDL> x2 = 1.*[1,6,4] 
     965 IDL> y2 = 1.*[5,6,8] 
     966 IDL> x3 = 1.*[3,8,4] 
     967 IDL> y3 = 1.*[4,4,6] 
     968 IDL> x4 = 1.*[2,6,2] 
     969 IDL> y4 = 1.*[0,2,6] 
     970 IDL> splot, [0,10], [0,10], xstyle = 1, ystyle = 1,/nodata 
     971 IDL> 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]] 
     972 IDL> oplot, x, y, color = 20, psym = 1, thick = 2 
     973 IDL> print, inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 
    974974 
    975975      On a sphere see clickincell.pro... 
     
    977977          <h3>Version history</h3> 
    978978           
    979            
     979          <h4>Version</h4><div class="value"> $Id$ 
     980</div> 
    980981          <h4>History</h4><div class="value"> 
    981982      Sebastien Masson (smasson@lodyc.jussieu.fr) 
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/inrecgrid.html

    r111 r118  
    755755            </h4> 
    756756         
    757           <div class="comments">  a 1d, monotonically increasing array, the position of the 
    758     "left" border of each cell.</div> 
     757          <div class="comments">  a 1d array, the y position on the points</div> 
    759758             
    760759            <h4 id="_inrecgrid_param_left">left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    761                
    762                
    763                
    764                
     760              <span class="attr">in</span> 
     761               
     762               
     763              <span class="attr">required</span> 
    765764               
    766765               
     
    769768            </h4> 
    770769         
    771           <div class="comments"></div> 
     770          <div class="comments"> a 1d, monotonically increasing array,  
     771 the position of the "left" border of each cell.</div> 
    772772             
    773773            <h4 id="_inrecgrid_param_bottom">bottom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    782782            </h4> 
    783783         
    784           <div class="comments">  a 1d, monotonically increasing array, the position of the 
    785     "bottom" border of each cell. 
    786  
     784          <div class="comments">  a 1d, monotonically increasing array,  
     785 the position of the "bottom" border of each cell. 
    787786</div> 
    788787             
     
    846845          <h3>Version history</h3> 
    847846           
    848            
     847          <h4>Version</h4><div class="value"> $Id$ 
     848</div> 
    849849          <h4>History</h4><div class="value"> 
    850850            S. Masson (smasson@lodyc.jussieu.fr) 
    851851                      July 3rd, 2002 
    852                       October 3rd, 2003: use value_locate</div> 
     852                      October 3rd, 2003: use value_locate 
     853</div> 
    853854           
    854855           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/ll_narcs_distances.html

    r111 r118  
    850850          <h3>Version history</h3> 
    851851           
    852            
     852          <h4>Version</h4><div class="value"> $Id$ 
     853</div> 
    853854          <h4>History</h4><div class="value"> 
    854855       Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03 
    855856 Sebastien Masson (smasson@lodyc.jussieu.fr) 
    856                   August 2005</div> 
     857                  August 2005 
     858</div> 
    857859           
    858860           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/map_npoints.html

    r111 r118  
    752752            </h4> 
    753753         
    754           <div class="comments"> np0 elements vector. longitudes and latitudes of np0 points P0 </div> 
     754          <div class="comments"></div> 
    755755             
    756756            <h4 id="_Map_npoints_param_lat0">lat0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    757                
    758                
    759                
    760                
     757              <span class="attr">in</span> 
     758               
     759               
     760              <span class="attr">required</span> 
    761761               
    762762               
     
    765765            </h4> 
    766766         
    767           <div class="comments"></div> 
     767          <div class="comments">  
     768 np0 elements vector. longitudes and latitudes of np0 points P0  
     769</div> 
    768770             
    769771            <h4 id="_Map_npoints_param_lon1">lon1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    778780            </h4> 
    779781         
    780           <div class="comments">  np1 elements vector. longitude and latitude of np1 points P1  
    781 </div> 
     782          <div class="comments"></div> 
    782783             
    783784            <h4 id="_Map_npoints_param_lat1">lat1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    784                
    785                
    786                
    787                
     785              <span class="attr">in</span> 
     786               
     787               
     788              <span class="attr">required</span> 
    788789               
    789790               
     
    792793            </h4> 
    793794         
    794           <div class="comments"></div> 
     795          <div class="comments">   
     796 np1 elements vector. longitude and latitude of np1 points P1  
     797</div> 
    795798             
    796799 
     
    826829            </h4> 
    827830         
    828             <div class="comments"> = if set, inputs and angular outputs are in radians, otherwise 
     831            <div class="comments"> if set, inputs and angular outputs are in radians, otherwise 
    829832degrees.</div> 
    830833             
     
    842845            <div class="comments"> If given, return the distance between the two points 
    843846calculated using the given radius. 
    844        Default value is the earth radius : 6378206.4d0</div> 
     847 Default value is the earth radius : 6378206.4d0 
     848</div> 
    845849             
    846850            <h4 id="_Map_npoints_keyword_MIDDLE">MIDDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    868872            </h4> 
    869873         
    870             <div class="comments">:If given,then Map_nPoints returns the distances between 
     874            <div class="comments"> If given,then Map_nPoints returns the distances between 
    871875       number n of P0 points and number n of P1 points (in that case, 
    872876       np0 and np1 must be equal). 
     
    876880 
    877881          <h3>Examples</h3><div class="value">  
    878 Result = Map_nPoints(lon0, lat0, lon1, lat1) 
    879  
    880  
    881 IDL> print, $ 
    882 map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 
     882 IDL> Result = Map_nPoints(lon0, lat0, lon1, lat1) 
     883 
     884 
     885 IDL> print, $ 
     886 map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 
    883887       7551369.3       5600334.8 
    884888       12864354.       10921254. 
    885889       14919237.       5455558.8 
    886890 
    887 IDL> lon0 = [-10, 20, 100] 
    888 IDL> lat0 = [0, -10, 45] 
    889 IDL> lon1 = [10, 60, 280] 
    890 IDL> lat1 = [0, 10, 45] 
    891 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 
    892 IDL> help, dist, azi 
    893 DIST            DOUBLE    = Array[3, 3] 
    894 AZI             DOUBLE    = Array[3, 3] 
    895 IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 
     891 IDL> lon0 = [-10, 20, 100] 
     892 IDL> lat0 = [0, -10, 45] 
     893 IDL> lon1 = [10, 60, 280] 
     894 IDL> lat1 = [0, 10, 45] 
     895 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 
     896 IDL> help, dist, azi 
     897 DIST            DOUBLE    = Array[3, 3] 
     898 AZI             DOUBLE    = Array[3, 3] 
     899 IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 
    896900       2226414.0       4957944.5       10018863. 
    897901       90.000000       64.494450   4.9615627e-15 
    898 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
    899 IDL> help, dist, azi 
    900 DIST            DOUBLE    = Array[3] 
    901 AZI             DOUBLE    = Array[3] 
    902 IDL> print, dist, azi 
     902 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 
     903 IDL> help, dist, azi 
     904 DIST            DOUBLE    = Array[3] 
     905 AZI             DOUBLE    = Array[3] 
     906 IDL> print, dist, azi 
    903907       2226414.0       4957944.5       10018863. 
    904908       90.000000       64.494450   4.9615627e-15 
    905 IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 
     909 IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 
    906910       20.000000       90.000000 
    907 IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 
     911 IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 
    908912       20.000000 
    909913       90.000000 
    910914 
    911 IDL> lon0 = [-10, 20, 100] 
    912 IDL> lat0 = [0, -10, 45] 
    913 IDL> lon1 = [10, 60, 280] 
    914 IDL> lat1 = [0, 10, 45] 
    915 IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 
    916 IDL> print, reform(mid[0,*]), reform(mid[1,*]) 
     915 IDL> lon0 = [-10, 20, 100] 
     916 IDL> lat0 = [0, -10, 45] 
     917 IDL> lon1 = [10, 60, 280] 
     918 IDL> lat1 = [0, 10, 45] 
     919 IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 
     920 IDL> print, reform(mid[0,*]), reform(mid[1,*]) 
    917921       0.0000000       40.000000       190.00000 
    918922       0.0000000  -1.5902773e-15       90.000000 
    919 IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 
     923 IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 
    920924       0.0000000       0.0000000 
    921 IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 
     925 IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 
    922926       40.000000  -1.5902773e-15 
    923 IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 
     927 IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 
    924928       190.00000       90.000000 
    925929</div> 
    926930          <h3>Version history</h3> 
    927931           
    928            
     932          <h4>Version</h4><div class="value"> $Id$ 
     933</div> 
    929934          <h4>History</h4><div class="value"> 
    930935       Based on the IDL function map_2points.pro,v 1.6 2001/01/15 
    931936 Sebastien Masson (smasson@lodyc.jussieu.fr) 
    932                   October 2003</div> 
     937                  October 2003 
     938</div> 
    933939           
    934940           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/neighbor.html

    r111 r118  
    718718         
    719719          <p class="header"> 
    720             <span class="result">result = </span>neighbor(<span class="result"><a href="#_neighbor_param_p0lon">p0lon</a>, <a href="#_neighbor_param_p0lat">p0lat</a>, <a href="#_neighbor_param_neighlon">neighlon</a>, <a href="#_neighbor_param_neighlat">neighlat</a></span>, <a href="#_neighbor_keyword_sphere">sphere</a>=<span class="result">sphere</span>, <a href="#_neighbor_keyword_distance">distance</a>=<span class="result">distance</span>, <a href="#_neighbor_keyword_radians">radians</a>=<span class="result">radians</span>)</p> 
     720            <span class="result">result = </span>neighbor(<span class="result"><a href="#_neighbor_param_p0lon">p0lon</a>, <a href="#_neighbor_param_p0lat">p0lat</a>[, <a href="#_neighbor_param_neighlon">neighlon</a>][, <a href="#_neighbor_param_neighlat">neighlat</a>]</span>, <a href="#_neighbor_keyword_sphere">sphere</a>=<span class="result">sphere</span>, <a href="#_neighbor_keyword_distance">distance</a>=<span class="result">distance</span>, <a href="#_neighbor_keyword_radians">radians</a>=<span class="result">radians</span>)</p> 
    721721         
    722722          <div class="comments"> 
     
    724724 
    725725          <h3>Return value</h3><div class="value"> 
    726        index giving the P1[index] point that is the closetest point 
    727        of (P0) 
     726       index giving the P1[index] point that is the closest point of (P0) 
    728727</div> 
    729728 
     
    756755            </h4> 
    757756         
    758           <div class="comments">  scalar. latitudes of point P0.  
    759 </div> 
     757          <div class="comments">  scalar. latitudes of point P0. </div> 
    760758             
    761759            <h4 id="_neighbor_param_neighlon">neighlon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    762                
    763                
    764                
     760              <span class="attr">in</span> 
     761               
     762              <span class="attr">optional</span> 
    765763               
    766764               
     
    770768            </h4> 
    771769         
    772           <div class="comments"></div> 
     770          <div class="comments"> </div> 
    773771             
    774772            <h4 id="_neighbor_param_neighlat">neighlat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    775                
    776                
    777                
     773              <span class="attr">in</span> 
     774               
     775              <span class="attr">optional</span> 
    778776               
    779777               
     
    783781            </h4> 
    784782         
    785           <div class="comments"></div> 
     783          <div class="comments">  
     784</div> 
    786785             
    787786 
     
    848847          <h3>Version history</h3> 
    849848           
    850            
     849          <h4>Version</h4><div class="value"> $Id$ 
     850</div> 
    851851          <h4>History</h4><div class="value"> 
    852852 Sebastien Masson (smasson@lodyc.jussieu.fr) 
    853                   October 2003</div> 
     853                  October 2003 
     854</div> 
    854855           
    855856           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/quadrilateral2square.html

    r111 r118  
    754754            </h4> 
    755755         
    756           <div class="comments">  the coordinates of the quadrilateral</div> 
     756          <div class="comments"></div> 
    757757             
    758758            <h4 id="_quadrilateral2square_param_y0in">y0in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    767767            </h4> 
    768768         
    769           <div class="comments">  the coordinates of the quadrilateral</div> 
     769          <div class="comments"></div> 
    770770             
    771771            <h4 id="_quadrilateral2square_param_x1in">x1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    780780            </h4> 
    781781         
    782           <div class="comments">  the coordinates of the quadrilateral</div> 
     782          <div class="comments"></div> 
    783783             
    784784            <h4 id="_quadrilateral2square_param_y1in">y1in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    793793            </h4> 
    794794         
    795           <div class="comments">  the coordinates of the quadrilateral</div> 
     795          <div class="comments"></div> 
    796796             
    797797            <h4 id="_quadrilateral2square_param_x2in">x2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    806806            </h4> 
    807807         
    808           <div class="comments">  the coordinates of the quadrilateral</div> 
     808          <div class="comments"></div> 
    809809             
    810810            <h4 id="_quadrilateral2square_param_y2in">y2in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    819819            </h4> 
    820820         
    821           <div class="comments">  the coordinates of the quadrilateral</div> 
     821          <div class="comments"></div> 
    822822             
    823823            <h4 id="_quadrilateral2square_param_x3in">x3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    832832            </h4> 
    833833         
    834           <div class="comments">  the coordinates of the quadrilateral</div> 
     834          <div class="comments"></div> 
    835835             
    836836            <h4 id="_quadrilateral2square_param_y3in">y3in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    845845            </h4> 
    846846         
    847           <div class="comments">  the coordinates of the quadrilateral 
    848      (see above for correspondance with the unit square). Can be 
    849      scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
    850      given in the anticlockwise order. 
     847          <div class="comments"> 
     848 the coordinates of the quadrilateral 
     849 (see above for correspondance with the unit square). Can be 
     850 scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 
     851 given in the anticlockwise order. 
    851852</div> 
    852853             
     
    862863            </h4> 
    863864         
    864           <div class="comments"> the coordinates of the point(s) for which we want to do the 
    865      mapping. Can be scalar or array.</div> 
     865          <div class="comments"> the coordinates of the point(s) for which we want to do the mapping. Can be scalar or array.</div> 
    866866             
    867867            <h4 id="_quadrilateral2square_param_yyin">yyin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    876876            </h4> 
    877877         
    878           <div class="comments"> the coordinates of the point(s) for which we want to do the 
    879      mapping. Can be scalar or array. 
     878          <div class="comments"> the coordinates of the point(s) for which we want to do the mapping. Can be scalar or array. 
    880879</div> 
    881880             
     
    898897            </h4> 
    899898         
    900             <div class="comments"></div> 
     899            <div class="comments"> 
     900</div> 
    901901             
    902902           
     
    904904          <h3>Examples</h3><div class="value">  
    905905 
    906      res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 
     906 IDL> res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 
    907907  
    908908  
     
    920920          <h3>Version history</h3> 
    921921           
    922            
     922          <h4>Version</h4><div class="value"> $Id$ 
     923</div> 
    923924          <h4>History</h4><div class="value"> 
    924925      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     
    927928      IEEE Computer Society Press, Los Alamitos, California 
    928929      Chapter 3, see p 52-56 
    929       </div> 
     930       
     931</div> 
    930932           
    931933           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_fstdrv.html

    r111 r118  
    731731 
    732732    y2: f'(x2) = y2.  
    733  
    734733</div> 
    735734 
     
    806805          <h3>Version history</h3> 
    807806           
    808            
     807          <h4>Version</h4><div class="value"> $Id$ 
     808</div> 
    809809          <h4>History</h4><div class="value"> 
    810   Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005</div> 
     810  Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005 
     811</div> 
    811812           
    812813           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_incr.html

    r111 r118  
    763763            </h4> 
    764764         
    765           <div class="comments">  An n-element (at least 2) input vector that specifies the 
    766     tabulate points in a strict ascending order. 
     765          <div class="comments">   
     766 An n-element (at least 2) input vector that specifies the tabulate points in  
     767 a strict ascending order. 
    767768</div> 
    768769             
     
    778779            </h4> 
    779780         
    780           <div class="comments">  The input values for which the interpolated values are 
    781     desired. Its values must be strictly monotonically increasing.  
    782  
    783  
    784  
     781          <div class="comments">   
     782 The input values for which the interpolated values are 
     783 desired. Its values must be strictly monotonically increasing.  
    785784</div> 
    786785             
     
    796795            </h4> 
    797796         
    798           <div class="comments">  f(x) = y. An n-element input vector that specifies the values 
     797          <div class="comments">   
     798 f(x) = y. An n-element input vector that specifies the values 
    799799    of the tabulated function F(Xi) corresponding to Xi. As f is 
    800800    supposed to be monotonically increasing, y values must be 
     
    839839            </h4> 
    840840         
    841           <div class="comments"></div> 
    842              
    843  
    844            
    845  
    846            
    847  
    848           <h3>Examples</h3><div class="value">  y2 =  spl_incr(x, y, x2) 
     841          <div class="comments">  
     842</div> 
     843             
     844 
     845           
     846 
     847           
     848 
     849          <h3>Examples</h3><div class="value"> 
     850 IDL>  y2 =  spl_incr(x, y, x2) 
    849851 
    850852  
    851853 
    852      n = 100L 
    853      x = (dindgen(n))^2 
    854      y = abs(randomn(0, n)) 
    855      y[n/2:n/2+1] = 0. 
    856      y[n-n/3] = 0. 
    857      y[n-n/6:n-n/6+5] = 0. 
    858      y = total(y, /cumulative, /double) 
    859      x2 = dindgen((n-1)^2) 
    860      n2 = n_elements(x2) 
    861      print, min(y[1:n-1]-y[0:n-2]) LT 0 
    862      y2 = spl_incr( x, y, x2) 
    863      splot, x, y, xstyle = 1, ystyle = 1, ysurx=.25, petit = [1, 2, 1], /land 
    864      oplot, x2, y2, color = 100 
    865      c = y2[1:n2-1] - y2[0:n2-2] 
    866      print, min(c) LT 0  
    867      print, min(c, max = ma), ma 
    868      splot,c,xstyle=1,ystyle=1, yrange=[-.01,.05], ysurx=.25, petit = [1, 2, 2], /noerase 
    869      oplot,[0, n_elements(c)], [0, 0], linestyle = 1 
     854 IDL> n = 100L 
     855 IDL> x = (dindgen(n))^2  
     856 IDL> y = abs(randomn(0, n)) 
     857 IDL> y[n/2:n/2+1] = 0. 
     858 IDL> y[n-n/3] = 0. 
     859 IDL> y[n-n/6:n-n/6+5] = 0. 
     860 IDL> y = total(y, /cumulative, /double) 
     861 IDL> x2 = dindgen((n-1)^2) 
     862 IDL> n2 = n_elements(x2) 
     863 IDL> print, min(y[1:n-1]-y[0:n-2]) LT 0 
     864 IDL> y2 = spl_incr( x, y, x2) 
     865 IDL> splot, x, y, xstyle = 1, ystyle = 1, ysurx=.25, petit = [1, 2, 1], /land 
     866 IDL> oplot, x2, y2, color = 100 
     867 IDL> c = y2[1:n2-1] - y2[0:n2-2] 
     868 IDL> print, min(c) LT 0  
     869 IDL> print, min(c, max = ma), ma 
     870 IDL> splot,c,xstyle=1,ystyle=1, yrange=[-.01,.05], ysurx=.25, petit = [1, 2, 2], /noerase 
     871 IDL> oplot,[0, n_elements(c)], [0, 0], linestyle = 1 
    870872</div> 
    871873          <h3>Version history</h3> 
    872874           
    873            
     875          <h4>Version</h4><div class="value"> $Id$ 
     876</div> 
    874877          <h4>History</h4><div class="value"> 
    875   Sebastien Masson (smasson@lodyc.jussieu.fr): May-Dec 2005</div> 
     878  Sebastien Masson (smasson@lodyc.jussieu.fr): May-Dec 2005 
     879</div> 
    876880           
    877881           
     
    914918             
    915919            <h4 id="_pure_convex_param_x1">x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     920              <span class="attr">in</span> 
     921               
     922               
     923              <span class="attr">required</span> 
     924               
     925               
     926               
     927               
     928            </h4> 
     929         
     930          <div class="comments">   
     931 An n-element (at least 2) input vector that specifies the tabulate points in  
     932 a strict ascending order. 
     933</div> 
     934             
     935            <h4 id="_pure_convex_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     936              <span class="attr">in</span> 
     937               
     938               
     939              <span class="attr">required</span> 
     940               
     941               
     942               
     943               
     944            </h4> 
     945         
     946          <div class="comments">   
     947 The input values for which the interpolated values are 
     948 desired. Its values must be strictly monotonically increasing.  
     949</div> 
     950             
     951            <h4 id="_pure_convex_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     952              <span class="attr">in</span> 
     953               
     954               
     955              <span class="attr">required</span> 
     956               
     957               
     958               
     959               
     960            </h4> 
     961         
     962          <div class="comments">   
     963 f(x) = y. An n-element input vector that specifies the values 
     964    of the tabulated function F(Xi) corresponding to Xi. As f is 
     965    supposed to be monotonically increasing, y values must be 
     966    monotonically increasing. y can have equal consecutive values. 
     967</div> 
     968             
     969            <h4 id="_pure_convex_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    916970               
    917971               
     
    926980          <div class="comments"></div> 
    927981             
    928             <h4 id="_pure_convex_param_x2">x2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     982            <h4 id="_pure_convex_param_der2">der2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    929983               
    930984               
     
    939993          <div class="comments"></div> 
    940994             
    941             <h4 id="_pure_convex_param_y1">y1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    942                
    943                
    944                
    945                
    946                
    947                
    948                
    949                
    950             </h4> 
    951          
    952           <div class="comments"></div> 
    953              
    954             <h4 id="_pure_convex_param_y2">y2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    955                
    956                
    957                
    958                
    959                
    960                
    961                
    962                
    963             </h4> 
    964          
    965           <div class="comments"></div> 
    966              
    967             <h4 id="_pure_convex_param_der2">der2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    968                
    969                
    970                
    971                
    972                
    973                
    974                
    975                
    976             </h4> 
    977          
    978           <div class="comments"></div> 
    979              
    980995            <h4 id="_pure_convex_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    981996               
     
    9891004            </h4> 
    9901005         
    991           <div class="comments"></div> 
     1006          <div class="comments">  
     1007</div> 
    9921008             
    9931009 
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_keep_mean.html

    r111 r118  
    867867          <h3>Version history</h3> 
    868868           
    869            
     869          <h4>Version</h4><div class="value"> $Id$ 
     870</div> 
    870871          <h4>History</h4><div class="value"> 
    871   Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005</div> 
     872  Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005 
     873</div> 
    872874           
    873875           
  • trunk/SRC/Documentation/idldoc_html_output/Interpolation/square2quadrilateral.html

    r114 r118  
    922922          <h3>Version history</h3> 
    923923           
    924            
     924          <h4>Version</h4><div class="value"> $Id$ 
     925</div> 
    925926          <h4>History</h4><div class="value"> 
    926927      Sebastien Masson (smasson@lodyc.jussieu.fr) 
     
    929930      IEEE Computer Society Press, Los Alamitos, California 
    930931      Chapter 3, see p 52-56 
    931       </div> 
     932       
     933</div> 
    932934           
    933935           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/cp.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> copy files 
     699 
    699700 file_copy should be used instead... 
    700701</div> 
     
    727728             
    728729            <h4 id="_cp_param_filenamein">filenamein&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    729                
    730                
    731                
    732                
     730              <span class="attr">in</span> 
     731               
     732               
     733              <span class="attr">required</span> 
    733734               
    734735               
     
    740741             
    741742            <h4 id="_cp_param_filenameout">filenameout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    742                
    743                
    744                
    745                
     743              <span class="attr">in</span> 
     744               
     745               
     746              <span class="attr">required</span> 
    746747               
    747748               
     
    750751            </h4> 
    751752         
    752           <div class="comments"></div> 
     753          <div class="comments"> 
     754</div> 
    753755             
    754756 
     
    770772            </h4> 
    771773         
    772             <div class="comments"></div> 
     774            <div class="comments"> used to pass your keywords 
     775</div> 
    773776             
    774777           
     
    777780          <h3>Version history</h3> 
    778781           
    779            
     782          <h4>Version</h4><div class="value"> $Id$ 
     783</div> 
    780784          <h4>History</h4><div class="value"> 
    781  June 2005: Sebastien Masson => obsolete routine  
     785 June 2005: Sebastien Masson => obsolete routine 
    782786</div> 
    783787           
    784788           
    785789          <h3>Known issues</h3> 
    786           <h4>Obsolete</h4><div class="value"></div> 
     790          <h4>Obsolete</h4><div class="value"> 
     791</div> 
    787792           
    788793           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/directory-overview.html

    r111 r118  
    702702       
    703703        <dt><a href="cp.html?format=raw">cp.pro</a></dt> 
    704         <dd> copy files  file_copy should be used instead.</dd> 
     704        <dd> copy files   file_copy should be used instead.</dd> 
    705705       
    706706        <dt><a href="ficdate.html?format=raw">ficdate.pro</a></dt> 
     
    708708       
    709709        <dt><a href="fictype.html?format=raw">fictype.pro</a></dt> 
    710         <dd>  gives fictype ('DA' 'MO' 'AN' 'SE' 'EX') corresponding            to the given date in vairmer format ( yymmdd )</dd> 
     710        <dd>  gives fictype ('DA' 'MO' 'AN' 'SE' 'EX') corresponding            to the given date in vairmer format ( yymmdd ) </dd> 
    711711       
    712712        <dt><a href="imprime.html?format=raw">imprime.pro</a></dt> 
    713         <dd>  use printps instead.</dd> 
     713        <dd> use printps instead.</dd> 
    714714       
    715715        <dt><a href="jourdsmois.html?format=raw">jourdsmois.pro</a></dt> 
     
    717717       
    718718        <dt><a href="juldate.html?format=raw">juldate.pro</a></dt> 
    719         <dd> you better use date2jul   gives julian date equivalent of a date in vairmer             ( yymmdd or yyyymmdd ) format             sets month, day and year to the corresp values </dd> 
     719        <dd> you better use date2jul   gives julian date equivalent of a date in vairmer            ( yymmdd or yyyymmdd ) format            sets month, day and year to the corresp values </dd> 
    720720       
    721721        <dt><a href="lec.html?format=raw">lec.pro</a></dt> 
     
    726726       
    727727        <dt><a href="meshlec.html?format=raw">meshlec.pro</a></dt> 
    728         <dd> lecture du mask de des sorties d'OPA.</dd> 
     728        <dd> lecture du mask des sorties d'OPA.</dd> 
    729729       
    730730        <dt><a href="ncdf_meshlec.html?format=raw">ncdf_meshlec.pro</a></dt> 
     
    738738       
    739739        <dt><a href="nlecan.html?format=raw">nlecan.pro</a></dt> 
    740         <dd> lit les moyennes annuelles  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS  </dd> 
     740        <dd> lit les moyennes annuelles  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS </dd> 
    741741       
    742742        <dt><a href="nlecmois.html?format=raw">nlecmois.pro</a></dt> 
     
    744744       
    745745        <dt><a href="nlecsaison.html?format=raw">nlecsaison.pro</a></dt> 
    746         <dd> lit les moyennes annuelles  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS </dd> 
     746        <dd> lit les moyennes annuelles  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS</dd> 
    747747       
    748748        <dt><a href="nlecserie.html?format=raw">nlecserie.pro</a></dt> 
    749         <dd> lit les series temporelles se rapportant a une variable  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS </dd> 
     749        <dd> lit les series temporelles se rapportant a une variable  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS</dd> 
    750750       
    751751        <dt><a href="vairdate.html?format=raw">vairdate.pro</a></dt> 
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/ficdate.html

    r111 r118  
    777777          <h3>Version history</h3> 
    778778           
    779            
     779          <h4>Version</h4><div class="value"> $Id$ 
     780</div> 
    780781          <h4>History</h4><div class="value"> Jerome Vialard  (jv@lodyc.jussieu.fr) 
    781 1/7/98</div> 
     7821/7/98 
     783</div> 
    782784           
    783785           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/fictype.html

    r111 r118  
    697697 
    698698      <div id="file_comments">  gives fictype ('DA' 'MO' 'AN' 'SE' 'EX') corresponding 
    699            to the given date in vairmer format ( yymmdd )</div> 
     699           to the given date in vairmer format ( yymmdd ) 
     700</div> 
    700701 
    701702       
     
    726727             
    727728            <h4 id="_fictype_param_vdate">vdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    728                
    729                
    730                
    731                
     729              <span class="attr">in</span> 
     730               
     731               
     732              <span class="attr">required</span> 
    732733               
    733734               
     
    749750            </h4> 
    750751         
    751           <div class="comments"></div> 
     752          <div class="comments"> unused 
     753</div> 
    752754             
    753755 
     
    761763          <h3>Version history</h3> 
    762764           
    763            
     765          <h4>Version</h4><div class="value"> $Id$ 
     766</div> 
    764767          <h4>History</h4><div class="value"> Jerome Vialard  (jv@lodyc.jussieu.fr) 
    765  2/7/98</div> 
     768 2/7/98 
     769</div> 
    766770           
    767771           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/imprime.html

    r111 r118  
    696696      </div> 
    697697 
    698       <div id="file_comments">  use printps instead...</div> 
     698      <div id="file_comments"> use printps instead...</div> 
    699699 
    700700       
     
    725725             
    726726            <h4 id="_imprime_param_filename">filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    727                
    728                
    729                
    730                
     727              <span class="attr">in</span> 
     728               
     729               
     730              <span class="attr">required</span> 
    731731               
    732732               
     
    735735            </h4> 
    736736         
    737           <div class="comments"></div> 
     737          <div class="comments"> 
     738</div> 
    738739             
    739740 
     
    755756            </h4> 
    756757         
    757             <div class="comments"></div> 
     758            <div class="comments"> 
     759</div> 
    758760             
    759761            <h4 id="_imprime_keyword_NB">NB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    768770            </h4> 
    769771         
    770             <div class="comments"></div> 
     772            <div class="comments"> 
     773</div> 
    771774             
    772775           
     
    775778          <h3>Version history</h3> 
    776779           
    777            
     780          <h4>Version</h4><div class="value"> $Id$ 
     781</div> 
    778782          <h4>History</h4><div class="value"> 
    779  June 2005: Sebastien Masson, english version</div> 
     783 June 2005: Sebastien Masson, english version 
     784</div> 
    780785           
    781786           
     
    787792           
    788793         
    789            
    790            
    791            
    792            
     794          <h3>Other attributes</h3> 
     795           
     796           
     797          <h4>Uses routines</h4><div class="value"> printps 
     798</div> 
    793799           
    794800           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/jourdsmois.html

    r111 r118  
    714714         
    715715          <p class="header"> 
    716             <span class="result">result = </span>jourdsmois(<span class="result"><a href="#_jourdsmois_param_mois">mois</a>, <a href="#_jourdsmois_param_annee">annee</a></span>)</p> 
     716            <span class="result">result = </span>jourdsmois(<span class="result">[<a href="#_jourdsmois_param_mois">mois</a>][, <a href="#_jourdsmois_param_annee">annee</a>]</span>)</p> 
    717717         
    718718          <div class="comments"></div> 
     
    725725             
    726726            <h4 id="_jourdsmois_param_mois">mois&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    727                
    728                
    729                
     727              <span class="attr">in</span> 
     728               
     729              <span class="attr">optional</span> 
    730730               
    731731               
     
    738738             
    739739            <h4 id="_jourdsmois_param_annee">annee&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    740                
    741                
    742                
     740              <span class="attr">in</span> 
     741               
     742              <span class="attr">optional</span> 
    743743               
    744744               
     
    748748            </h4> 
    749749         
    750           <div class="comments"></div> 
     750          <div class="comments"> 
     751</div> 
    751752             
    752753 
     
    758759          <h3>Version history</h3> 
    759760           
    760            
     761          <h4>Version</h4><div class="value"> $Id$ 
     762</div> 
    761763          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    762  June 2005: Sebastien Masson, english version</div> 
     764 June 2005: Sebastien Masson, english version 
     765</div> 
    763766           
    764767           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/juldate.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> you better use date2jul 
    699   gives julian date equivalent of a date in vairmer  
    700            ( yymmdd or yyyymmdd ) format  
     699  gives julian date equivalent of a date in vairmer 
     700           ( yymmdd or yyyymmdd ) format 
    701701           sets month, day and year to the corresp values 
    702702</div> 
     
    727727     jour julien de l'annee -1. 
    728728   COMPATIBLE AVEC L'AN 2000 !!!: une date de la forme yymmdd est 
    729     donvertit sous la forme yyyymmdd a l''aide de vraidate. 
     729    convertit sous la forme yyyymmdd a l''aide de vraidate. 
    730730   Attention, les variables globales year, month day sont attribuees 
    731731</div> 
     
    767767            </h4> 
    768768         
    769             <div class="comments"></div> 
     769            <div class="comments"> used to pass your keywords 
     770</div> 
    770771             
    771772           
    772773 
    773           <h3>Examples</h3><div class="value">  
     774          <h3>Examples</h3><div class="value"> 
    774775 IDL> date = juldate(930124) 
    775776</div> 
    776777          <h3>Version history</h3> 
    777778           
    778            
     779          <h4>Version</h4><div class="value"> $Id$ 
     780</div> 
    779781          <h4>History</h4><div class="value"> Jerome Vialard  (jv@lodyc.jussieu.fr) 
    780  2/7/98</div> 
     782 2/7/98 
     783</div> 
    781784           
    782785           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/lec.html

    r111 r118  
    731731 celle du sous domaine definit par domdef (nx,ny,nz). avec /TOUT le 
    732732 champ a la taille du  domaine qui a etait selectionne pour la 
    733  cession en cours (jpi,jpj,jpk).  
    734  pour les sous domaines cf:   
     733 cession en cours (jpi,jpj,jpk). 
     734 pour les sous domaines cf: 
    735735        http://www.ipsl.jussieu.fr/~smlod/sousdomaine.html 
    736736 Retourne -1 en cas d'erreur. 
     
    753753         
    754754          <div class="comments"> 2 choix possibles: 
    755              1) nom de champ Vairmer (chaine de 8 caracteres en majuscule ou  
     755             1) nom de champ Vairmer (chaine de 8 caracteres en majuscule ou 
    756756 minuscule commencant par vo ou so). Dans cette methode on saute directement 
    757757 d'en-tete en en-tete jusqu'a trouver le bon fichier. 
     
    823823            </h4> 
    824824         
    825             <div class="comments"> type du fichier vairmer par rapport auquel on doit calculer  
     825            <div class="comments"> type du fichier vairmer par rapport auquel on doit calculer 
    826826             l'anomalie ('EX','AN','SE','MO','') 
    827827</div> 
     
    838838            </h4> 
    839839         
    840             <div class="comments"></div> 
     840            <div class="comments"> 
     841</div> 
    841842             
    842843            <h4 id="_lec_keyword_EXPANOM">EXPANOM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    926927          <h3>Version history</h3> 
    927928           
    928            
     929          <h4>Version</h4><div class="value"> $Id$ 
     930 
     931;-</div> 
    929932          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    930933                        26/5/98 
     
    936939                       Sebastien Masson (decoupe pour les sous domaines...) 
    937940                        2/99 
    938 ;-</div> 
     941</div> 
    939942           
    940943           
     
    948951           
    949952           
    950           <h4>Uses routines</h4><div class="value"> common.pro isnumber.pro fivardate.pro   
     953          <h4>Uses routines</h4><div class="value"> common.pro isnumber.pro fivardate.pro 
    951954</div> 
    952955           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/lect.html

    r111 r118  
    725725         
    726726          <div class="comments"> 
    727    </div> 
     727</div> 
    728728 
    729729           
     
    744744            </h4> 
    745745         
    746           <div class="comments"> nom de champ Vairmer (chaine de 8 caracteres commencant 
    747                    par VO ou SO</div> 
     746          <div class="comments"> nom de champ Vairmer (chaine de 8 caracteres 
     747 commencant par VO ou SO</div> 
    748748             
    749749            <h4 id="_lect_param_date1">date1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    799799            </h4> 
    800800         
    801           <div class="comments"> 'x' 'y' 'z' 'xy' 'xz' 'yz' 'xyz' 'xt' 'yt' 'zt' 'xyt' 'xzt' 
    802        'yzt' 'xyzt' directions selon lesquelles effectuer les moyennes 
    803        (si rien n'est donne on n'effectue pas de moyenne) 
    804  
    805  
     801          <div class="comments"> 
     802 'x' 'y' 'z' 'xy' 'xz' 'yz' 'xyz' 'xt' 'yt' 'zt' 'xyt' 'xzt' 
     803 'yzt' 'xyzt' directions selon lesquelles effectuer les moyennes 
     804 (si rien n'est donne on n'effectue pas de moyenne) 
    806805</div> 
    807806             
     
    838837         
    839838            <div class="comments"> type de fichiers ('SE','AN','') a relire pour calc une 
    840  anomalie  </div> 
     839 anomalie</div> 
    841840             
    842841            <h4 id="_lect_keyword_EXPANOM">EXPANOM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    862861          <h3>Version history</h3> 
    863862           
    864            
     863          <h4>Version</h4><div class="value"> $Id$ 
     864</div> 
    865865          <h4>History</h4><div class="value"> Jerome Vialard (jv@lodyc.jussieu.fr) 
    866  2/7/98</div> 
     866 2/7/98 
     867</div> 
    867868           
    868869           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/meshlec.html

    r111 r118  
    696696      </div> 
    697697 
    698       <div id="file_comments"> lecture du mask de des sorties d'OPA. les sources se trouvent ds les  
     698      <div id="file_comments"> lecture du mask des sorties d'OPA. les sources se trouvent ds les 
    699699 repertoires sur maia du type: 
    700700  /nom_exp/RESTARTS 
     
    739739            </h4> 
    740740         
    741           <div class="comments"> string, c''est le nom du fichier a lire. Par defaut, c''est meshmask.  
     741          <div class="comments"> string, c''est le nom du fichier a lire. Par defaut, c''est meshmask. 
    742742 
    743743</div> 
     
    792792         
    793793            <div class="comments"> un vecteur de 2 elements specifaint le min et le 
    794     max qui doivent etre imposes en longitude (obligatoire si le 
    795     tableau depasse 360 degres) 
     794 max qui doivent etre imposes en longitude (obligatoire si le 
     795 tableau depasse 360 degres) 
    796796</div> 
    797797             
     
    807807            </h4> 
    808808         
    809             <div class="comments"></div> 
     809            <div class="comments"> 
     810</div> 
    810811             
    811812           
     
    816817          <h3>Version history</h3> 
    817818           
    818            
     819          <h4>Version</h4><div class="value"> $Id$ 
     820</div> 
    819821          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    820      Marina Levy : lecture en double precision (cas calcul sur shine)</div> 
     822     Marina Levy : lecture en double precision (cas calcul sur shine) 
     823</div> 
    821824           
    822825           
    823826          <h3>Known issues</h3> 
    824           <h4>Obsolete</h4><div class="value"></div> 
     827          <h4>Obsolete</h4><div class="value"> 
     828</div> 
    825829           
    826830           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/ncdf_meshlec.html

    r111 r118  
    735735            </h4> 
    736736         
    737           <div class="comments"></div> 
     737          <div class="comments"> 
     738</div> 
    738739             
    739740 
     
    755756            </h4> 
    756757         
    757             <div class="comments"></div> 
     758            <div class="comments"> used to pass your keywords 
     759</div> 
    758760             
    759761           
     
    762764          <h3>Version history</h3> 
    763765           
    764            
     766          <h4>Version</h4><div class="value"> $Id$ 
     767</div> 
    765768          <h4>History</h4><div class="value"> 
    766  Aug. 2005, Sebastien Masson: switch to ncdf_meshread</div> 
     769 Aug. 2005, Sebastien Masson: switch to ncdf_meshread 
     770</div> 
    767771           
    768772           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlec.html

    r111 r118  
    813813            </h4> 
    814814         
    815             <div class="comments">: 'x' 'y' 'z' 'xy' 'xz' 'yz' 'xyz' directions selon lesquelles 
     815            <div class="comments"> 'x' 'y' 'z' 'xy' 'xz' 'yz' 'xyz' directions selon lesquelles 
    816816             effectuer les moyennes (si rien n'est donne on n'effectue pas de moyenne) 
    817817</div> 
     
    829829         
    830830            <div class="comments"> impose la grille a laquelle est rapporte le champ. rq permet 
    831  d'aller plus vite ds la lecture  
     831 d'aller plus vite ds la lecture 
    832832</div> 
    833833             
     
    843843            </h4> 
    844844         
    845             <div class="comments"> oblige a lire le tableau entier en non pas celui reduit a domdef 
    846 </div> 
     845            <div class="comments"> oblige a lire le tableau entier en non pas celui reduit a domdef</div> 
    847846             
    848847            <h4 id="_nlec_keyword_STRUCTURE">STRUCTURE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    857856            </h4> 
    858857         
    859             <div class="comments"></div> 
     858            <div class="comments"> </div> 
    860859             
    861860            <h4 id="_nlec_keyword_SEUILMIN">SEUILMIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    870869            </h4> 
    871870         
    872             <div class="comments"></div> 
     871            <div class="comments"> </div> 
    873872             
    874873            <h4 id="_nlec_keyword_SEUILMAX">SEUILMAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    883882            </h4> 
    884883         
    885             <div class="comments"></div> 
     884            <div class="comments"> </div> 
    886885             
    887886            <h4 id="_nlec_keyword_NAN">NAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    896895            </h4> 
    897896         
    898             <div class="comments"></div> 
     897            <div class="comments"> 
     898</div> 
    899899             
    900900            <h4 id="_nlec_keyword__EXTRA">_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    909909            </h4> 
    910910         
    911             <div class="comments"></div> 
     911            <div class="comments"> used to pass your keywords 
     912</div> 
    912913             
    913914           
     
    916917          <h3>Version history</h3> 
    917918           
    918            
     919          <h4>Version</h4><div class="value"> $Id$ 
     920</div> 
    919921          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    920    14/8/98</div> 
     922   14/8/98 
     923</div> 
    921924           
    922925           
     
    931934           
    932935           
    933           <h4>Uses routines</h4><div class="value"> common.pro vraidate juldate  nlec5j          nlecserie 
     936          <h4>Uses routines</h4><div class="value"> common.pro vraidate juldate  nlec5j nlecserie 
    934937</div> 
    935938           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlec5j.html

    r111 r118  
    699699 contiennent les sorties a 5j regroupees par type de grille par 
    700700 paquets de 6 mois. 
    701  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS </div> 
     701 sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS</div> 
    702702 
    703703       
     
    722722          <div class="comments"></div> 
    723723 
    724           <h3>Return value</h3><div class="value"> tableau 2d (qd on ne demande pas de serie) ou 3d ou 4d ds le cas dune serie  
    725  </div> 
     724          <h3>Return value</h3><div class="value"> tableau 2d (qd on ne demande pas de serie) ou 3d ou 4d ds le cas dune serie 
     725</div> 
    726726 
    727727           
     
    741741         
    742742          <div class="comments"> nom du tableau contenant le champ que l'on veut (le 
    743  trouver avec ncdflec,fichier,/var</div> 
     743 trouver avec ncdflec,fichier,/var 
     744</div> 
    744745             
    745746            <h4 id="_nlec5j_param_numsortie">numsortie&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    754755            </h4> 
    755756         
    756           <div class="comments">le numero du pas de temps que l'on veut sortir du 
    757  fichier (compte a partir de 1) a partir de year</div> 
     757          <div class="comments">  
     758 le numero du pas de temps que l'on veut sortir du 
     759 fichier (compte a partir de 1) a partir de year 
     760</div> 
    758761             
    759762            <h4 id="_nlec5j_param_nbretps">nbretps&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    769772         
    770773          <div class="comments"> nombre de pas de temps a extraire 
    771  
    772774</div> 
    773775             
     
    805807         
    806808            <div class="comments"> impose la grille a laquelle est rapporte le champ. rq permet 
    807  d'aller plus vite ds la lecture  
     809 d'aller plus vite ds la lecture 
    808810</div> 
    809811             
     
    833835            </h4> 
    834836         
    835             <div class="comments"></div> 
     837            <div class="comments"> used to pass your keywords 
     838</div> 
    836839             
    837840           
     
    842845          <h3>Version history</h3> 
    843846           
    844            
     847          <h4>Version</h4><div class="value"> $Id$ 
     848</div> 
    845849          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
     850 
    846851</div> 
    847852           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlecan.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> lit les moyennes annuelles 
    699  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS  
     699 sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS 
    700700</div> 
    701701 
     
    723723          <h3>Return value</h3><div class="value"> tableau 2d (qd la serie ne fait que 1 pas de temps) ou 
    724724 3d (valable ds 1 premier tps que pour les tableaux 2d) 
    725  </div> 
     725</div> 
    726726 
    727727           
     
    804804         
    805805            <div class="comments"> impose la grille a laquelle est rapporte le champ. rq permet 
    806  d'aller plus vite ds la lecture  
     806 d'aller plus vite ds la lecture 
    807807</div> 
    808808             
     
    832832            </h4> 
    833833         
    834             <div class="comments"></div> 
     834            <div class="comments"> used to pass your keywords 
     835</div> 
    835836             
    836837           
    837838 
    838           <h3>Examples</h3><div class="value">  
     839          <h3>Examples</h3><div class="value"> 
    839840 IDL> res=nlecan(nom, numsortie79, nbretps) 
    840841</div> 
    841842          <h3>Version history</h3> 
    842843           
    843            
     844          <h4>Version</h4><div class="value"> $Id$ 
     845</div> 
    844846          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
     847 
    845848</div> 
    846849           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlecmois.html

    r111 r118  
    799799         
    800800            <div class="comments"> impose la grille a laquelle est rapporte le champ. rq permet 
    801  d'aller plus vite ds la lecture  
     801 d'aller plus vite ds la lecture 
    802802</div> 
    803803             
     
    826826            </h4> 
    827827         
    828             <div class="comments"></div> 
     828            <div class="comments"> used to pass your keywords 
     829</div> 
    829830             
    830831           
     
    833834          <h3>Version history</h3> 
    834835           
    835            
     836          <h4>Version</h4><div class="value"> $Id$ 
     837</div> 
    836838          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    837839</div> 
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlecsaison.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> lit les moyennes annuelles 
    699  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS </div> 
     699 sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS</div> 
    700700 
    701701       
     
    722722          <h3>Return value</h3><div class="value"> tableau 2d (qd la serie ne fait que 1 pas de temps) ou 
    723723 3d (valable ds 1 premier tps que pour les tableaux 2d) 
    724  </div> 
     724</div> 
    725725 
    726726           
     
    803803         
    804804            <div class="comments"> impose la grille a laquelle est rapporte le champ. rq permet 
    805  d'aller plus vite ds la lecture  
     805 d'aller plus vite ds la lecture 
    806806</div> 
    807807             
     
    831831            </h4> 
    832832         
    833             <div class="comments"></div> 
     833            <div class="comments"> used to pass your keywords 
     834</div> 
    834835             
    835836           
     
    840841          <h3>Version history</h3> 
    841842           
    842            
     843          <h4>Version</h4><div class="value"> $Id$ 
     844</div> 
    843845          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
     846 
    844847</div> 
    845848           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlecserie.html

    r111 r118  
    697697 
    698698      <div id="file_comments"> lit les series temporelles se rapportant a une variable 
    699  sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS </div> 
     699 sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS</div> 
    700700 
    701701       
     
    722722          <h3>Return value</h3><div class="value"> tableau 2d (qd la serie ne fait que 1 pas de temps) ou 
    723723 3d (valable ds 1 premier tps que pour les tableaux 2d) 
    724  </div> 
     724</div> 
    725725 
    726726           
     
    803803         
    804804            <div class="comments"> impose la grille a laquelle est rapporte le champ. rq permet 
    805  d'aller plus vite ds la lecture  
     805 d'aller plus vite ds la lecture 
    806806</div> 
    807807             
     
    831831            </h4> 
    832832         
    833             <div class="comments"></div> 
     833            <div class="comments"> used to pass your keywords 
     834</div> 
    834835             
    835836           
    836837 
    837           <h3>Examples</h3><div class="value">  
     838          <h3>Examples</h3><div class="value"> 
    838839 IDL> res=nlecserie(nom, date1, date2) 
    839840</div> 
    840841          <h3>Version history</h3> 
    841842           
    842            
     843          <h4>Version</h4><div class="value"> $Id$ 
     844</div> 
    843845          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    844846</div> 
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/vairdate.html

    r111 r118  
    742742         
    743743          <div class="comments"> date en jours juliens 
    744  
    745744</div> 
    746745             
     
    796795            </h4> 
    797796         
    798             <div class="comments"></div> 
     797            <div class="comments"> used to pass your keywords 
     798</div> 
    799799             
    800800           
    801801 
    802           <h3>Examples</h3><div class="value">  
     802          <h3>Examples</h3><div class="value"> 
    803803 IDL> vdate = vairdate(1755087) 
    804804</div> 
    805805          <h3>Version history</h3> 
    806806           
    807            
     807          <h4>Version</h4><div class="value"> $Id$ 
     808</div> 
    808809          <h4>History</h4><div class="value">  Jerome Vialard  (jv@lodyc.jussieu.fr) 
    809810   2/7/98 
     
    811812                       ANNUEL,MENSUEL,_EXTRA et possibilite 
    812813                       d''utiliser vairdate avec des scalaire ou des 
    813                        tableaux</div> 
     814                       tableaux 
     815</div> 
    814816           
    815817           
  • trunk/SRC/Documentation/idldoc_html_output/Obsolete/vraidate.html

    r111 r118  
    773773            </h4> 
    774774         
    775             <div class="comments"></div> 
     775            <div class="comments"> used to pass your keywords 
     776</div> 
    776777             
    777778           
    778779 
    779           <h3>Examples</h3><div class="value">  
     780          <h3>Examples</h3><div class="value"> 
    780781 IDL> res=vraidate(date) 
    781  IDL> vraidate(980703)  
     782 IDL> vraidate(980703) 
    782783 donne 19980703 qui est un long 
    783784</div> 
    784785          <h3>Version history</h3> 
    785786           
    786            
     787          <h4>Version</h4><div class="value"> $Id$ 
     788</div> 
    787789          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    788790   3/7/98 
    789  remove automatic change from year 1 to 1901... Aug 2004</div> 
     791 remove automatic change from year 1 to 1901... Aug 2004 
     792</div> 
    790793           
    791794           
    792795          <h3>Known issues</h3> 
    793796          <h4>Obsolete</h4><div class="value"> 
    794  
    795797</div> 
    796798           
  • trunk/SRC/Documentation/idldoc_html_output/Postscript/closeps.html

    r111 r118  
    745745         
    746746            <div class="comments"> A long integer giving the id of the information 
    747            widget (created by openps) that we have de destroy at  
     747           widget (created by openps) that we have de destroy at 
    748748           the end of closeps (when the postscript is done) 
    749749</div> 
     
    754754          <h3>Version history</h3> 
    755755           
    756            
     756          <h4>Version</h4><div class="value"> $Id$ 
     757</div> 
    757758          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    758759                       21/12/98 
    759  June 2005: Sebastien Masson, english version with new commons </div> 
     760 June 2005: Sebastien Masson, english version with new commons 
     761</div> 
    760762           
    761763           
  • trunk/SRC/Documentation/idldoc_html_output/Postscript/directory-overview.html

    r111 r118  
    705705       
    706706        <dt><a href="printps.html?format=raw">printps.pro</a></dt> 
    707         <dd> postscript visualisation/archiving/printing </dd> 
     707        <dd>  - archiving possibilities -   if archive_ps (common variable of cm_4ps) ne 0 then the postscript  can be saved for archiving if it is printed or if the button  "archive ps" is pressed.</dd> 
    708708       
    709709      </dl> 
  • trunk/SRC/Documentation/idldoc_html_output/Postscript/openps.html

    r111 r118  
    761761            <div class="comments"> to define the name of the postcript file through 
    762762                  a keyword rather than with nameps inut argument 
    763                   (in this case the keyword can be pass through  
     763                  (in this case the keyword can be pass through 
    764764                  different routines via _extra keyword). 
    765765</div> 
     
    849849            <div class="comments"> a scalar used to change the Lightness of the color 
    850850            palette to be abble to adjust according to the printer we use, 
    851             the media (paper or slide)...  
     851            the media (paper or slide)... 
    852852               lightness < 1 to get lighter colors 
    853853                         > 1 to get darker colors 
     
    865865            </h4> 
    866866         
    867             <div class="comments">: used to pass any keyword to device procedure. 
    868    
    869  uses cm_4ps 
     867            <div class="comments"> used to pass any keyword to device procedure. 
    870868</div> 
    871869             
     
    875873          <h3>Version history</h3> 
    876874           
    877            
     875          <h4>Version</h4><div class="value"> $Id$ 
     876</div> 
    878877          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    879878 21/12/98 
    880879 1/2/98: ajout de nameps en input 
    881880 1/9/1999: ajout du mot cle FILENAME et du widget 
    882  June 2005: Sebastien Masson, cleaning, english version with new commons </div> 
    883            
    884            
    885            
    886            
    887            
    888            
    889            
    890          
    891            
    892            
    893            
    894            
     881 June 2005: Sebastien Masson, cleaning, english version with new commons 
     882</div> 
     883           
     884           
     885           
     886           
     887           
     888           
     889           
     890         
     891          <h3>Other attributes</h3> 
     892           
     893           
     894          <h4>Uses routines</h4><div class="value"> cm_4ps 
     895</div> 
    895896           
    896897           
  • trunk/SRC/Documentation/idldoc_html_output/Postscript/printps.html

    r111 r118  
    696696      </div> 
    697697 
    698       <div id="file_comments"> postscript visualisation/archiving/printing 
    699 </div> 
    700  
    701        
    702  
    703        
    704  
    705        
    706  
    707        
    708       <div id="routine_summary">                 
    709         <h2>Routine summary</h2> 
    710          
    711         <dl> 
    712            
    713           <dt><p><a href="#_printps_event">printps_event<span class="result">, event</span></a></p><dt> 
    714           <dd>     - archiving possibilities -    if archive_ps (common variable of cm_4ps) ne 0 then the postscript  can be saved for archiving if it is printed or if the button  "archive ps" is pressed.</dd>        
    715            
    716           <dt><p><a href="#_printps">printps<span class="result">[, psfilename]</span></a></p><dt> 
    717           <dd></dd>      
    718                  
    719         </dl> 
    720       </div> 
    721        
    722  
    723       <div id="routine_details"> 
    724          
    725  
    726         <div class="routine_details" id="_printps_event"> 
    727  
    728           <h2><a class="top" href="#container">top</a>printps_event <span class="categories"> for the postscripts 
    729 </span></h2> 
    730          
    731           <p class="header"> 
    732             printps_event<span class="result">, <a href="#_printps_event_param_event">event</a></span></p> 
    733          
    734           <div class="comments"> 
    735  
    736  
    737  
     698      <div id="file_comments"> 
    738699 - archiving possibilities - 
    739   
     700 
    740701 if archive_ps (common variable of cm_4ps) ne 0 then the postscript 
    741702 can be saved for archiving if it is printed or if the button 
     
    746707 be changed to number.ps (number automatically found to be 1 larger 
    747708 that any of the existing ps file). 
     709 
     710 postscript visualisation/archiving/printing 
     711</div> 
     712 
     713       
     714 
     715       
     716 
     717       
     718 
     719       
     720      <div id="routine_summary">                 
     721        <h2>Routine summary</h2> 
     722         
     723        <dl> 
     724           
     725          <dt><p><a href="#_printps_event">printps_event<span class="result">, event</span></a></p><dt> 
     726          <dd> </dd>     
     727           
     728          <dt><p><a href="#_printps">printps<span class="result">[, psfilename]</span></a></p><dt> 
     729          <dd></dd>      
     730                 
     731        </dl> 
     732      </div> 
     733       
     734 
     735      <div id="routine_details"> 
     736         
     737 
     738        <div class="routine_details" id="_printps_event"> 
     739 
     740          <h2><a class="top" href="#container">top</a>printps_event <span class="categories"> for the postscripts 
     741</span></h2> 
     742         
     743          <p class="header"> 
     744            printps_event<span class="result">, <a href="#_printps_event_param_event">event</a></span></p> 
     745         
     746          <div class="comments"> 
    748747</div> 
    749748 
     
    765764            </h4> 
    766765         
    767           <div class="comments"></div> 
     766          <div class="comments"> 
     767</div> 
    768768             
    769769 
     
    775775          <h3>Version history</h3> 
    776776           
    777            
     777          <h4>Version</h4><div class="value"> $Id$ 
     778</div> 
    778779          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    779780                        21/12/98 
    780781                       25/8/19999 utilisation des widgets 
    781782                       8/9/1999 utilisation de cw_bgroup 
    782  June 2005: Sebastien Masson: cleaning, english version with new commons </div> 
     783 June 2005: Sebastien Masson: cleaning, english version with new commons 
     784</div> 
    783785           
    784786           
     
    845847           visualize and/or print and/or archive. It can also refer 
    846848           to a gzipped postscript file. If needed, this name will 
    847            be completed by .ps and/or .gz  
     849           be completed by .ps and/or .gz 
    848850</div> 
    849851             
     
    858860          <h3>Version history</h3> 
    859861           
    860            
     862          <h4>Version</h4><div class="value"> $Id$ 
     863</div> 
    861864          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    862865                        21/12/98 
    863866                       25/8/19999 utilisation des widgets 
    864867                       8/9/1999 utilisation de cw_bgroup 
    865  June 2005: Sebastien Masson: cleaning, english version with new commons </div> 
     868 June 2005: Sebastien Masson: cleaning, english version with new commons 
     869</div> 
    866870           
    867871           
  • trunk/SRC/Documentation/idldoc_html_output/Textoidl/matchdelim.html

    r111 r118  
    750750        before 'three'.   
    751751 MODIFICATION HISTORY: 
    752        $Id: matchdelim.pro 47 2006-05-09 09:13:01Z pinsard $ 
     752       $Id: matchdelim.pro 114 2006-06-19 14:14:56Z smasson $ 
    753753       $Log: matchdelim.pro,v $ 
    754754       Revision 1.3  1996/06/14 20:00:27  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/Textoidl/nexttok.html

    r111 r118  
    743743       pos to 1. 
    744744 MODIFICATION HISTORY: 
    745        $Id: nexttok.pro 47 2006-05-09 09:13:01Z pinsard $ 
     745       $Id: nexttok.pro 114 2006-06-19 14:14:56Z smasson $ 
    746746       $Log: nexttok.pro,v $ 
    747747       Revision 1.4  2004/06/15 17:25:54  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/Textoidl/showtex.html

    r111 r118  
    740740 EXAMPLE: 
    741741 MODIFICATION HISTORY: 
    742        $Id: showtex.pro 47 2006-05-09 09:13:01Z pinsard $ 
     742       $Id: showtex.pro 114 2006-06-19 14:14:56Z smasson $ 
    743743       $Log: showtex.pro,v $ 
    744744       Revision 1.4  2004/06/15 17:25:54  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/Textoidl/textable.html

    r111 r118  
    744744 EXAMPLE: 
    745745 MODIFICATION HISTORY: 
    746        $Id: textable.pro 47 2006-05-09 09:13:01Z pinsard $ 
     746       $Id: textable.pro 114 2006-06-19 14:14:56Z smasson $ 
    747747       $Log: textable.pro,v $ 
    748748       Revision 1.8  2004/06/15 17:25:54  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/Textoidl/textoidl.html

    r111 r118  
    755755       ed. 
    756756 MODIFICATION HISTORY: 
    757        $Id: textoidl.pro 47 2006-05-09 09:13:01Z pinsard $ 
     757       $Id: textoidl.pro 114 2006-06-19 14:14:56Z smasson $ 
    758758       $Log: textoidl.pro,v $ 
    759759       Revision 1.7  2004/06/15 17:25:54  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/Textoidl/translate_sub_super.html

    r111 r118  
    847847       sub_sup_idl -- contained in this file 
    848848 MODIFICATION HISTORY: 
    849        $Id: translate_sub_super.pro 47 2006-05-09 09:13:01Z pinsard $ 
     849       $Id: translate_sub_super.pro 114 2006-06-19 14:14:56Z smasson $ 
    850850       $Log: translate_sub_super.pro,v $ 
    851851       Revision 1.5  2000/06/14 19:09:22  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getfile.html

    r111 r118  
    714714         
    715715          <p class="header"> 
    716             <span class="result">result = </span>getfile(<span class="result"><a href="#_getfile_param_filein">filein</a></span>, <a href="#_getfile_keyword_error">error</a>=<span class="result">error</span>, <a href="#_getfile_keyword_help">help</a>=<span class="result">help</span>, <a href="#_getfile_keyword_quiet">quiet</a>=<span class="result">quiet</span>, <a href="#_getfile_keyword_find">find</a>=<span class="result">find</span>)</p> 
     716            <span class="result">result = </span>getfile(<span class="result"><a href="#_getfile_param_filein">filein</a></span>, <a href="#_getfile_keyword_error">error</a>=<span class="result">error</span>, <a href="#_getfile_keyword_help">help</a>=<span class="result">help</span>, <a href="#_getfile_keyword_quiet">quiet</a>=<span class="result">quiet</span>, <a href="#_getfile_keyword_lines">lines</a>=<span class="result">lines</span>, <a href="#_getfile_keyword_find">find</a>=<span class="result">find</span>)</p> 
    717717         
    718718          <div class="comments"> 
     
    731731           2=no lines in file. 
    732732         /QUIET means give no error message. 
    733  
     733         LINES=n  Number of lines to read (def=all). 
     734           Much faster if number of lines is known. 
     735           Automatic for IDL 5.6 or later. 
    734736         /FIND search te file in the all !path directories (use 
    735737         find.pro) 
    736  
    737738 OUTPUTS: 
    738739       s = string array.        out 
     
    741742 MODIFICATION HISTORY: 
    742743       R. Sterner, 20 Mar, 1990 
     744       R. Sterner, 1999 Apr 14 --- Added LINES=n keyword. 
     745       R. Sterner, 2003 Aug 29 --- Automatic lines if IDL 5.6+. 
     746       R. Sterner, 2003 Sep 02 --- Check if file exists first. 
     747       R. Sterner, 2003 Sep 04 --- Fixed error in number of lines in file. 
     748       R. Sterner, 2003 Oct 10 --- Fixed error when no lines. 
     749       R. Sterner, 2004 Jan 27 --- Fixed to work in IDL as old as vers 4. 
    743750</div> 
    744751 
     
    808815            <div class="comments"></div> 
    809816             
    810             <h4 id="_getfile_keyword_find">find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     817            <h4 id="_getfile_keyword_lines">lines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    811818               
    812819               
     
    821828            <div class="comments"></div> 
    822829             
     830            <h4 id="_getfile_keyword_find">find&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     831               
     832               
     833               
     834               
     835               
     836               
     837               
     838               
     839            </h4> 
     840         
     841            <div class="comments"></div> 
     842             
    823843           
    824844 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getwrd.html

    r111 r118  
    726726 INPUTS: 
    727727       txt = text string to extract from.         in 
     728         The first element is used if txt is an array. 
    728729       n = word number to get (first = 0 = def).  in 
    729730       m = optional last word number to get.      in 
     
    758759       R. Sterner, 13 Dec, 1992 --- Made tabs equivalent to spaces. 
    759760       R. Sterner,  4 Jan, 1993 --- Added NWORDS keyword. 
     761       R. Sterner, 2001 Jan 15 --- Fixed to use first element if not a scalar. 
    760762       Johns Hopkins University Applied Physics Laboratory. 
    761763 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/isnumber.html

    r111 r118  
    709709         
    710710 
    711         <div class="routine_details" id="_ISNUMBER"> 
    712  
    713           <h2><a class="top" href="#container">top</a>ISNUMBER </h2> 
     711        <div class="routine_details" id="_isnumber"> 
     712 
     713          <h2><a class="top" href="#container">top</a>isnumber </h2> 
    714714         
    715715          <p class="header"> 
    716             <span class="result">result = </span>ISNUMBER(<span class="result"><a href="#_ISNUMBER_param_TXT0">TXT0</a>, <a href="#_ISNUMBER_param_X">X</a></span>, <a href="#_ISNUMBER_keyword_help">help</a>=<span class="result">help</span>)</p> 
     716            <span class="result">result = </span>isnumber(<span class="result"><a href="#_isnumber_param_txt0">txt0</a>, <a href="#_isnumber_param_x">x</a></span>, <a href="#_isnumber_keyword_help">help</a>=<span class="result">help</span>)</p> 
    717717         
    718718          <div class="comments"> 
     
    741741       Johns Hopkins Applied Physics Lab. 
    742742       R. Sterner, 12 Mar, 1990 --- upgraded. 
    743         Richard Garrett, 14 June, 1992 --- fixed bug in returned float value. 
     743       Richard Garrett, 14 June, 1992 --- fixed bug in returned float value. 
     744       R. Sterner, 1999 Nov 30 --- Fixed a bug found by Kristian Kjaer, Denmark 
    744745 
    745746 Copyright (C) 1986, Johns Hopkins University/Applied Physics Laboratory 
     
    755756         
    756757             
    757             <h4 id="_ISNUMBER_param_TXT0">TXT0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     758            <h4 id="_isnumber_param_txt0">txt0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    758759               
    759760               
     
    768769          <div class="comments"></div> 
    769770             
    770             <h4 id="_ISNUMBER_param_X">X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     771            <h4 id="_isnumber_param_x">x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    771772               
    772773               
     
    788789            <h3>Keywords</h3> 
    789790             
    790             <h4 id="_ISNUMBER_keyword_help">help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     791            <h4 id="_isnumber_keyword_help">help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    791792               
    792793               
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strcnt.html

    r114 r118  
    743743 EXAMPLE: 
    744744 MODIFICATION HISTORY: 
    745        $Id: strcnt.pro 18 2006-05-02 09:32:05Z pinsard $ 
     745       $Id: strcnt.pro 114 2006-06-19 14:14:56Z smasson $ 
    746746       $Log: strcnt.pro,v $ 
    747747       Revision 1.3  1996/06/14 20:00:27  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strtok.html

    r111 r118  
    753753       upon which this is based. 
    754754 MODIFICATION HISTORY: 
    755        $Id: strtok.pro 18 2006-05-02 09:32:05Z pinsard $ 
     755       $Id: strtok.pro 114 2006-06-19 14:14:56Z smasson $ 
    756756       $Log: strtok.pro,v $ 
    757757       Revision 1.3  1996/06/14 20:00:27  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strtrans.html

    r111 r118  
    752752       Will produce out='Many bad chars in here', and set ned to 4. 
    753753 MODIFICATION HISTORY: 
    754        $Id: strtrans.pro 18 2006-05-02 09:32:05Z pinsard $ 
     754       $Id: strtrans.pro 114 2006-06-19 14:14:56Z smasson $ 
    755755       $Log: strtrans.pro,v $ 
    756756       Revision 1.3  1996/06/14 20:00:27  mcraig 
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/createfunc.html

    r111 r118  
    716716         
    717717          <p class="header"> 
    718             <span class="result">result = </span>createfunc(<span class="result"><a href="#_createfunc_param_command">command</a></span>, <a href="#_createfunc_keyword_FILENAMEIN">FILENAMEIN</a>=<span class="result">FILENAMEIN</span>, <a href="#_createfunc_keyword_KWDLIST">KWDLIST</a>=<span class="result">KWDLIST</span>, <a href="#_createfunc_keyword__extra">_extra</a>=<span class="result">_extra</span>)</p> 
     718            <span class="result">result = </span>createfunc(<span class="result"><a href="#_createfunc_param_command">command</a></span>, <a href="#_createfunc_keyword_FILENAMEIN">FILENAMEIN</a>=<span class="result">FILENAMEIN</span>, <a href="#_createfunc_keyword_KWDLIST">KWDLIST</a>=<span class="result">KWDLIST</span>, <a href="#_createfunc_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span>)</p> 
    719719         
    720720          <div class="comments"></div> 
     
    737737            </h4> 
    738738         
    739           <div class="comments"> a scalar string defining the result to be byven back by the function. (see examples) 
     739          <div class="comments"> a scalar string defining the result to be  
     740 given back by the function. (see examples) 
    740741</div> 
    741742             
     
    759760         
    760761            <div class="comments"> name of the funccedure to be created. 
    761       'for_createfunc.pro' by default</div> 
     762      'for_createfunc.pro' by default 
     763</div> 
    762764             
    763765            <h4 id="_createfunc_keyword_KWDLIST">KWDLIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    777779</div> 
    778780             
    779             <h4 id="_createfunc_keyword__extra">_extra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     781            <h4 id="_createfunc_keyword__EXTRA">_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    780782               
    781783               
     
    789791         
    790792            <div class="comments"> used to pass your keywords to the created function. 
    791  
    792  SIDE EFFECTS: ends the function name with '.pro' if needed 
    793793</div> 
    794794             
    795795           
    796796 
    797           <h3>Examples</h3><div class="value">  
     797          <h3>Examples</h3><div class="value"> 
    798798      IDL> print, createfunc('3*2', filename='test') 
    799799      IDL> print, createfunc('3*two', filename = 'test' $ 
     
    802802          <h3>Version history</h3> 
    803803           
    804            
     804          <h4>Version</h4><div class="value"> $Id$ 
     805</div> 
    805806          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    806                       May 2005</div> 
     807                      May 2005 
     808</div> 
    807809           
    808810           
     
    811813           
    812814           
    813           <h4>Restrictions</h4><div class="value"> arguments can be given only through keywords 
     815          <h4>Restrictions</h4><div class="value">  
     816 - arguments can be given only through keywords; 
     817 - ends the function name with '.pro' if needed. 
    814818</div> 
    815819         
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/createpro.html

    r111 r118  
    736736            </h4> 
    737737         
    738           <div class="comments"> a string array defining the procedure to be created. each element will be a line of the created procedure.  
     738          <div class="comments"> a string array defining the procedure to be created. each element will be a line of the created procedure. 
    739739</div> 
    740740             
     
    747747             
    748748            <h4 id="_createpro_keyword_FILENAMEIN">FILENAMEIN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    749                
     749              <span class="attr">in</span> 
    750750               
    751751               
     
    762762             
    763763            <h4 id="_createpro_keyword_KWDLIST">KWDLIST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
    764                
     764              <span class="attr">in</span> 
    765765               
    766766               
     
    788788            </h4> 
    789789         
    790             <div class="comments"></div> 
     790            <div class="comments"> obsolote, please pass directly your keywords through _extra 
     791</div> 
    791792             
    792793            <h4 id="_createpro_keyword__extra">_extra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     
    802803         
    803804            <div class="comments"> used to pass your keywords to the created procedure. 
    804  
    805  SIDE EFFECTS: ends the procedure name with '.pro' if needed 
    806805</div> 
    807806             
    808807           
    809808 
    810           <h3>Examples</h3><div class="value">  
     809          <h3>Examples</h3><div class="value"> 
    811810      IDL> createpro, ['print,''OK'''], filename='test' 
    812811      IDL> createpro, ['if keyword_set(ok) then print,''OK'' else print, ''No'''] $ 
    813       IDL>   , filename = 'test', kwdlist =', ok = ok'  
     812      IDL>   , filename = 'test', kwdlist =', ok = ok' 
    814813      IDL> createpro, ['if keyword_set(ok) then print,''OK'' else print, ''No'''] $ 
    815       IDL>   , filename = 'test', kwdlist = ', ok = ok', /ok  
     814      IDL>   , filename = 'test', kwdlist = ', ok = ok', /ok 
    816815 
    817816</div> 
    818817          <h3>Version history</h3> 
    819818           
    820            
     819          <h4>Version</h4><div class="value"> $Id$</div> 
    821820          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    822821 cleaning + new keywords: October 2005 
    823  Feb. 2006: supress keyword "kwdused" and use call_procedure instead of execute</div> 
     822 Feb. 2006: supress keyword "kwdused" and use call_procedure instead of execute 
     823</div> 
    824824           
    825825           
     
    828828           
    829829           
    830           <h4>Restrictions</h4><div class="value"> is not working with functions, use createfunc instead. 
    831               arguments can be given only through keywords 
     830          <h4>Restrictions</h4><div class="value"> 
     831 - is not working with functions, use createfunc instead. 
     832 - arguments can be given only through keywords. 
     833 - ends the procedure name with '.pro' if needed. 
    832834</div> 
    833835         
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/def_myuniquetmpdir.html

    r111 r118  
    732732          <h3>Version history</h3> 
    733733           
    734            
     734          <h4>Version</h4><div class="value"> $Id$ 
     735</div> 
    735736          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    736737                      June 2005 
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/demomode_compatibility.html

    r111 r118  
    725725 
    726726           
    727            
    728            
    729            
     727          <h3>Version history</h3> 
     728           
     729          <h4>Version</h4><div class="value"> $Id$</div> 
    730730           
    731731           
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/find.html

    r111 r118  
    911911            </h4> 
    912912         
    913             <div class="comments"></div> 
     913            <div class="comments"> used to pass your keywords 
     914</div> 
    914915             
    915916           
     
    944945          <h3>Version history</h3> 
    945946           
    946            
     947          <h4>Version</h4><div class="value"> $Id$</div> 
    947948          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    948949                       28/4/1999 
    949950                       6/7/1999: compatibilite mac et windows 
    950  June 2005: Sebastien Masson: cleaning, use for file_* functions</div> 
     951 June 2005: Sebastien Masson: cleaning, use for file_* functions 
     952</div> 
    951953           
    952954           
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/isadirectory.html

    r111 r118  
    792792            </h4> 
    793793         
    794             <div class="comments"></div> 
     794            <div class="comments"> used to pass your keywords 
     795</div> 
    795796             
    796797           
     
    806807          <h3>Version history</h3> 
    807808           
    808            
     809          <h4>Version</h4><div class="value"> $Id$</div> 
    809810          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    810811                      June 28, 2000 
    811  June 2005: Sebastien Masson: cleaning, use for file_* functions</div> 
     812 June 2005: Sebastien Masson: cleaning, use for file_* functions 
     813</div> 
    812814           
    813815           
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/isafile.html

    r111 r118  
    855855            </h4> 
    856856         
    857             <div class="comments"></div> 
     857            <div class="comments"> used to pass your keywords 
     858</div> 
    858859             
    859860           
     
    875876          <h3>Version history</h3> 
    876877           
    877            
     878          <h4>Version</h4><div class="value"> $Id$</div> 
    878879          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    879880                      11/2/2000 
    880  June 2005: Sebastien Masson: cleaning, use for file_* functions</div> 
     881 June 2005: Sebastien Masson: cleaning, use for file_* functions 
     882</div> 
    881883           
    882884           
  • trunk/SRC/Documentation/idldoc_html_output/Utilities/protype.html

    r111 r118  
    762762          <h3>Version history</h3> 
    763763           
    764            
     764          <h4>Version</h4><div class="value"> $Id$</div> 
    765765          <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
    766                        Feb 2006</div> 
     766                       Feb 2006 
     767</div> 
    767768           
    768769           
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-H.html

    r114 r118  
    841841        <dd>a keyword from the routine putfile</dd> 
    842842         
    843         <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">help</a></dt> 
    844         <dd>a keyword from the routine ISNUMBER</dd> 
     843        <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_isnumber">help</a></dt> 
     844        <dd>a keyword from the routine isnumber</dd> 
    845845         
    846846        <dt><a href="./ToBeReviewed/STRING/delchr.html?format=raw#_DELCHR">help</a></dt> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-I.html

    r114 r118  
    793793        <dd>a keyword from the routine write_oasis</dd> 
    794794         
     795        <dt><a href="./ReadWrite/write_oasis.html?format=raw#_write_oasis">I8</a></dt> 
     796        <dd>a keyword from the routine write_oasis</dd> 
     797         
    795798        <dt><a href="./ReadWrite/read_oasis.html?format=raw#_read_oasis">I8</a></dt> 
    796799        <dd>a keyword from the routine read_oasis</dd> 
    797800         
    798         <dt><a href="./ReadWrite/write_oasis.html?format=raw#_write_oasis">I8</a></dt> 
    799         <dd>a keyword from the routine write_oasis</dd> 
     801        <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_readoldoparestart">IBLOC</a></dt> 
     802        <dd>a keyword from the routine readoldoparestart</dd> 
    800803         
    801804        <dt><a href="./ReadWrite/readoldopadistcoast.html?format=raw#_readoldopadistcoast">IBLOC</a></dt> 
    802805        <dd>a keyword from the routine readoldopadistcoast</dd> 
    803806         
    804         <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_readoldoparestart">IBLOC</a></dt> 
    805         <dd>a keyword from the routine readoldoparestart</dd> 
    806          
    807807        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">IDS</a></dt> 
    808808        <dd>a keyword from the routine CW_BGROUP</dd> 
     
    817817        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
    818818         
     819        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">IMAGE</a></dt> 
     820        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
     821         
     822        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">IMAGE</a></dt> 
     823        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
     824         
     825        <dt><a href="./Tests/tst_pltz.html?format=raw#_tst_pltz">IMAGE</a></dt> 
     826        <dd>a keyword from the routine tst_pltz</dd> 
     827         
     828        <dt><a href="./Tests/tst_pltt.html?format=raw#_tst_pltt">IMAGE</a></dt> 
     829        <dd>a keyword from the routine tst_pltt</dd> 
     830         
     831        <dt><a href="./Tests/tst_plt.html?format=raw#_tst_plt">IMAGE</a></dt> 
     832        <dd>a keyword from the routine tst_plt</dd> 
     833         
     834        <dt><a href="./Tests/TestsOld/tst_pltz_old.html?format=raw#_tst_pltz_old">IMAGE</a></dt> 
     835        <dd>a keyword from the routine tst_pltz_old</dd> 
     836         
     837        <dt><a href="./Tests/TestsOld/tst_pltt_old.html?format=raw#_tst_pltt_old">IMAGE</a></dt> 
     838        <dd>a keyword from the routine tst_pltt_old</dd> 
     839         
    819840        <dt><a href="./Tests/TestsOld/tst_plt_old.html?format=raw#_tst_plt_old">IMAGE</a></dt> 
    820841        <dd>a keyword from the routine tst_plt_old</dd> 
    821842         
    822         <dt><a href="./Tests/TestsOld/tst_pltt_old.html?format=raw#_tst_pltt_old">IMAGE</a></dt> 
    823         <dd>a keyword from the routine tst_pltt_old</dd> 
    824          
    825         <dt><a href="./Tests/TestsOld/tst_pltz_old.html?format=raw#_tst_pltz_old">IMAGE</a></dt> 
    826         <dd>a keyword from the routine tst_pltz_old</dd> 
    827          
    828         <dt><a href="./Tests/tst_plt.html?format=raw#_tst_plt">IMAGE</a></dt> 
    829         <dd>a keyword from the routine tst_plt</dd> 
    830          
    831         <dt><a href="./Tests/tst_pltt.html?format=raw#_tst_pltt">IMAGE</a></dt> 
    832         <dd>a keyword from the routine tst_pltt</dd> 
    833          
    834         <dt><a href="./Tests/tst_pltz.html?format=raw#_tst_pltz">IMAGE</a></dt> 
    835         <dd>a keyword from the routine tst_pltz</dd> 
    836          
    837         <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">IMAGE</a></dt> 
    838         <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
    839          
    840         <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">IMAGE</a></dt> 
    841         <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
    842          
    843843        <dt><a href="./ToBeReviewed/IMAGE/image_viewer.html?format=raw#_IMAGE_VIEWER">IMAGE_VIEWER</a></dt> 
    844844        <dd>a procedure from the file image_viewer.pro</dd> 
     
    889889        <dd>a keyword from the routine domdef</dd> 
    890890         
     891        <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">INDICEZOOM</a></dt> 
     892        <dd>a keyword from the routine completecointerre</dd> 
     893         
    891894        <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">INDICEZOOM</a></dt> 
    892895        <dd>a keyword from the routine decoupeterre</dd> 
     
    895898        <dd>a keyword from the routine fillcornermask</dd> 
    896899         
    897         <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">INDICEZOOM</a></dt> 
    898         <dd>a keyword from the routine completecointerre</dd> 
    899          
    900900        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">INDICEZOOMMASK</a></dt> 
    901901        <dd>a keyword from the routine pltbase</dd> 
     
    922922        <dd>a keyword from the routine CW_FIELD2</dd> 
    923923         
     924        <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">INTEGRATION</a></dt> 
     925        <dd>a keyword from the routine moyenne</dd> 
     926         
    924927        <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">INTEGRATION</a></dt> 
    925928        <dd>a keyword from the routine grossemoyenne</dd> 
    926929         
    927         <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">INTEGRATION</a></dt> 
    928         <dd>a keyword from the routine moyenne</dd> 
    929          
    930930        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMREGRID">INTERP</a></dt> 
    931931        <dd>a keyword from the routine IMDISP_IMREGRID</dd> 
     
    934934        <dd>a keyword from the routine IMDISP</dd> 
    935935         
     936        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">INTERVALLE</a></dt> 
     937        <dd>a keyword from the routine plt</dd> 
     938         
     939        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">INTERVALLE</a></dt> 
     940        <dd>a keyword from the routine pltt</dd> 
     941         
     942        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">INTERVALLE</a></dt> 
     943        <dd>a keyword from the routine pltz</dd> 
     944         
     945        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">INTERVALLE</a></dt> 
     946        <dd>a keyword from the routine determineminmax</dd> 
     947         
    936948        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">INTERVALLE</a></dt> 
    937949        <dd>a keyword from the routine label</dd> 
    938950         
    939         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">INTERVALLE</a></dt> 
    940         <dd>a keyword from the routine determineminmax</dd> 
    941          
    942         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">INTERVALLE</a></dt> 
    943         <dd>a keyword from the routine plt</dd> 
    944          
    945         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">INTERVALLE</a></dt> 
    946         <dd>a keyword from the routine pltt</dd> 
    947          
    948         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">INTERVALLE</a></dt> 
    949         <dd>a keyword from the routine pltz</dd> 
    950          
    951951        <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">INTERVALLE</a></dt> 
    952952        <dd>a keyword from the routine legende</dd> 
    953953         
     954        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">INV</a></dt> 
     955        <dd>a keyword from the routine pltt</dd> 
     956         
    954957        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">INV</a></dt> 
    955958        <dd>a keyword from the routine pltz</dd> 
    956959         
    957         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">INV</a></dt> 
    958         <dd>a keyword from the routine pltt</dd> 
    959          
    960960        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">INV</a></dt> 
    961961        <dd>a keyword from the routine plt</dd> 
     
    964964        <dd>a keyword from the routine initncdf</dd> 
    965965         
     966        <dt><a href="./Grid/micromeshmask.html?format=raw#_micromeshmask">IODIR</a></dt> 
     967        <dd>a keyword from the routine micromeshmask</dd> 
     968         
     969        <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">IODIR</a></dt> 
     970        <dd>a keyword from the routine ncdf_lec</dd> 
     971         
     972        <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">IODIR</a></dt> 
     973        <dd>a keyword from the routine xncdf_lec</dd> 
     974         
    966975        <dt><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">IODIR</a></dt> 
    967976        <dd>a keyword from the routine smallmeshmask</dd> 
    968977         
    969         <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">IODIR</a></dt> 
    970         <dd>a keyword from the routine ncdf_lec</dd> 
    971          
    972         <dt><a href="./Grid/micromeshmask.html?format=raw#_micromeshmask">IODIR</a></dt> 
    973         <dd>a keyword from the routine micromeshmask</dd> 
    974          
    975         <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">IODIR</a></dt> 
    976         <dd>a keyword from the routine xncdf_lec</dd> 
     978        <dt><a href="./Utilities/isafile.html?format=raw#_isafile">IODIRECTORY</a></dt> 
     979        <dd>a keyword from the routine isafile</dd> 
    977980         
    978981        <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">IODIRECTORY</a></dt> 
     
    985988        <dd>a keyword from the routine find</dd> 
    986989         
    987         <dt><a href="./Utilities/isafile.html?format=raw#_isafile">IODIRECTORY</a></dt> 
    988         <dd>a keyword from the routine isafile</dd> 
    989          
    990990        <dt><a href="./ToBeReviewed/STRUCTURE/where_tag.html?format=raw#_where_Tag">ISELECT</a></dt> 
    991991        <dd>a keyword from the routine where_Tag</dd> 
    992992         
    993         <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">ISNUMBER</a></dt> 
    994         <dd>a function from the file isnumber.pro</dd> 
    995          
    996993        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">I_COLORS</a></dt> 
    997994        <dd>a keyword from the routine pltbase</dd> 
     
    10751072        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/findtopid</dd> 
    10761073         
     1074        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">idlfile</a></dt> 
     1075        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile</dd> 
     1076         
    10771077        <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">idlfile</a></dt> 
    10781078        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xxx</dd> 
    10791079         
    1080         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">idlfile</a></dt> 
    1081         <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile</dd> 
    1082          
    10831080        <dt><a href="ToBeReviewed/IMAGE/image_viewer.html?format=raw">image_viewer.pro</a></dt> 
    10841081        <dd>a file from the directory ./ToBeReviewed/IMAGE</dd> 
     
    12821279        <dd>a file from the directory ./Utilities</dd> 
    12831280         
     1281        <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_isnumber">isnumber</a></dt> 
     1282        <dd>a function from the file isnumber.pro</dd> 
     1283         
    12841284        <dt><a href="ToBeReviewed/STRING/isnumber.html?format=raw">isnumber.pro</a></dt> 
    12851285        <dd>a file from the directory ./ToBeReviewed/STRING</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-L.html

    r111 r118  
    10031003        <dd>a file from the directory ./ToBeReviewed/CALCULS</dd> 
    10041004         
     1005        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html?format=raw#_label_gmt">level_z2d</a></dt> 
     1006        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd> 
     1007         
     1008        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">level_z2d</a></dt> 
     1009        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd> 
     1010         
    10051011        <dt><a href="./ToBeReviewed/PLOTS/style.html?format=raw#_style">level_z2d</a></dt> 
    10061012        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/style</dd> 
    10071013         
    1008         <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">level_z2d</a></dt> 
    1009         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd> 
    1010          
    1011         <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html?format=raw#_label_gmt">level_z2d</a></dt> 
    1012         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd> 
    1013          
    10141014        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">levels</a></dt> 
    10151015        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase</dd> 
     
    10361036        <dd>a file from the directory ./ToBeReviewed/UTILITAIRE</dd> 
    10371037         
     1038        <dt><a href="./ToBeReviewed/STRING/getfile.html?format=raw#_getfile">lines</a></dt> 
     1039        <dd>a keyword from the routine getfile</dd> 
     1040         
    10381041        <dt><a href="./ToBeReviewed/PLOTS/style.html?format=raw#_style">linestyle</a></dt> 
    10391042        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/style</dd> 
     
    10661069        <dd>a keyword from the routine GETWRD</dd> 
    10671070         
     1071        <dt><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">lon0</a></dt> 
     1072        <dd>a parameter from the routine ./Interpolation/ll_narcs_distances</dd> 
     1073         
    10681074        <dt><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">lon0</a></dt> 
    10691075        <dd>a parameter from the routine ./Interpolation/map_npoints</dd> 
    10701076         
    1071         <dt><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">lon0</a></dt> 
    1072         <dd>a parameter from the routine ./Interpolation/ll_narcs_distances</dd> 
    1073          
    10741077        <dt><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">lon1</a></dt> 
    10751078        <dd>a parameter from the routine ./Interpolation/map_npoints</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-T.html

    r114 r118  
    817817        <dd>a keyword from the routine read_ncdf</dd> 
    818818         
     819        <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">TITLE</a></dt> 
     820        <dd>a keyword from the routine CW_FIELD2</dd> 
     821         
    819822        <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">TITLE</a></dt> 
    820823        <dd>a keyword from the routine isadirectory</dd> 
    821824         
    822         <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">TITLE</a></dt> 
    823         <dd>a keyword from the routine CW_FIELD2</dd> 
    824          
    825825        <dt><a href="./ToBeReviewed/HOPE/read_hope.html?format=raw#_read_hope">TLIMITS</a></dt> 
    826826        <dd>a keyword from the routine read_hope</dd> 
     
    829829        <dd>a keyword from the routine COLORBAR</dd> 
    830830         
     831        <dt><a href="./Obsolete/lec.html?format=raw#_lec">TOUT</a></dt> 
     832        <dd>a keyword from the routine lec</dd> 
     833         
     834        <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">TOUT</a></dt> 
     835        <dd>a keyword from the routine nlecmois</dd> 
     836         
     837        <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">TOUT</a></dt> 
     838        <dd>a keyword from the routine nlecsaison</dd> 
     839         
     840        <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">TOUT</a></dt> 
     841        <dd>a keyword from the routine nlecserie</dd> 
     842         
     843        <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">TOUT</a></dt> 
     844        <dd>a keyword from the routine nlec5j</dd> 
     845         
     846        <dt><a href="./ToBeReviewed/TRIANGULATION/ciseauxtri.html?format=raw#_ciseauxtri">TOUT</a></dt> 
     847        <dd>a keyword from the routine ciseauxtri</dd> 
     848         
     849        <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">TOUT</a></dt> 
     850        <dd>a keyword from the routine read_ncdf</dd> 
     851         
     852        <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">TOUT</a></dt> 
     853        <dd>a keyword from the routine nlec</dd> 
     854         
     855        <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">TOUT</a></dt> 
     856        <dd>a keyword from the routine grille</dd> 
     857         
    831858        <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">TOUT</a></dt> 
    832859        <dd>a keyword from the routine nlecan</dd> 
    833860         
    834         <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">TOUT</a></dt> 
    835         <dd>a keyword from the routine nlecmois</dd> 
    836          
    837         <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">TOUT</a></dt> 
    838         <dd>a keyword from the routine nlecsaison</dd> 
    839          
    840         <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">TOUT</a></dt> 
    841         <dd>a keyword from the routine nlecserie</dd> 
    842          
    843         <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">TOUT</a></dt> 
    844         <dd>a keyword from the routine read_ncdf</dd> 
    845          
    846         <dt><a href="./ToBeReviewed/TRIANGULATION/ciseauxtri.html?format=raw#_ciseauxtri">TOUT</a></dt> 
    847         <dd>a keyword from the routine ciseauxtri</dd> 
    848          
    849         <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">TOUT</a></dt> 
    850         <dd>a keyword from the routine grille</dd> 
    851          
    852         <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">TOUT</a></dt> 
    853         <dd>a keyword from the routine nlec5j</dd> 
    854          
    855         <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">TOUT</a></dt> 
    856         <dd>a keyword from the routine nlec</dd> 
    857          
    858         <dt><a href="./Obsolete/lec.html?format=raw#_lec">TOUT</a></dt> 
    859         <dd>a keyword from the routine lec</dd> 
    860          
    861861        <dt><a href="./Obsolete/imprime.html?format=raw#_imprime">TRANS</a></dt> 
    862862        <dd>a keyword from the routine imprime</dd> 
     
    868868        <dd>a keyword from the routine pltt</dd> 
    869869         
     870        <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">TRI</a></dt> 
     871        <dd>a keyword from the routine decoupeterre</dd> 
     872         
    870873        <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">TRI</a></dt> 
    871874        <dd>a keyword from the routine grille</dd> 
    872875         
    873         <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">TRI</a></dt> 
    874         <dd>a keyword from the routine decoupeterre</dd> 
    875          
    876876        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">TRICHAMP</a></dt> 
    877877        <dd>a keyword from the routine pltbase</dd> 
    878878         
     879        <dt><a href="./Textoidl/str_token.html?format=raw#_Str_token">TRIM</a></dt> 
     880        <dd>a keyword from the routine Str_token</dd> 
     881         
    879882        <dt><a href="./ToBeReviewed/STRING/strsci.html?format=raw#_StrSci">TRIM</a></dt> 
    880883        <dd>a keyword from the routine StrSci</dd> 
    881884         
    882         <dt><a href="./Textoidl/str_token.html?format=raw#_Str_token">TRIM</a></dt> 
    883         <dd>a keyword from the routine Str_token</dd> 
    884          
    885885        <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">TRIM</a></dt> 
    886886        <dd>a keyword from the routine Strtok</dd> 
     
    895895        <dd>a keyword from the routine GETCOLOR</dd> 
    896896         
     897        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">TT</a></dt> 
     898        <dd>a keyword from the routine checktypeminmax</dd> 
     899         
     900        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">TT</a></dt> 
     901        <dd>a keyword from the routine plt1d</dd> 
     902         
    897903        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">TT</a></dt> 
    898904        <dd>a keyword from the routine pltt</dd> 
    899905         
    900         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">TT</a></dt> 
    901         <dd>a keyword from the routine plt1d</dd> 
    902          
    903         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">TT</a></dt> 
    904         <dd>a keyword from the routine checktypeminmax</dd> 
    905          
    906906        <dt><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">TWO_BY_TWO</a></dt> 
    907907        <dd>a keyword from the routine Map_npoints</dd> 
    908908         
    909         <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">TXT0</a></dt> 
    910         <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber</dd> 
    911          
    912909        <dt><a href="./ToBeReviewed/STRING/getwrd.html?format=raw#_GETWRD">TXTSTR</a></dt> 
    913910        <dd>a parameter from the routine ./ToBeReviewed/STRING/getwrd</dd> 
     
    916913        <dd>a keyword from the routine checktypeminmax</dd> 
    917914         
     915        <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">TYPE</a></dt> 
     916        <dd>a keyword from the routine decoupeterre</dd> 
     917         
     918        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">TYPE</a></dt> 
     919        <dd>a keyword from the routine placedessin</dd> 
     920         
    918921        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">TYPE</a></dt> 
    919922        <dd>a keyword from the routine checkfield</dd> 
    920923         
     924        <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">TYPE</a></dt> 
     925        <dd>a keyword from the routine section</dd> 
     926         
    921927        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">TYPE</a></dt> 
    922928        <dd>a keyword from the routine domdef</dd> 
    923929         
    924         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">TYPE</a></dt> 
    925         <dd>a keyword from the routine placedessin</dd> 
    926          
    927         <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">TYPE</a></dt> 
    928         <dd>a keyword from the routine section</dd> 
    929          
    930         <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">TYPE</a></dt> 
    931         <dd>a keyword from the routine decoupeterre</dd> 
    932          
    933930        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">TYPEIN</a></dt> 
    934931        <dd>a keyword from the routine plt1d</dd> 
    935932         
     933        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">TYPEIN</a></dt> 
     934        <dd>a keyword from the routine pltz</dd> 
     935         
    936936        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">TYPEIN</a></dt> 
    937937        <dd>a keyword from the routine pltt</dd> 
    938938         
    939         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">TYPEIN</a></dt> 
    940         <dd>a keyword from the routine pltz</dd> 
    941          
    942939        <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">TYPE_YZ</a></dt> 
    943940        <dd>a keyword from the routine legende</dd> 
     
    961958        <dd>a file from the directory ./ToBeReviewed/GRILLE</dd> 
    962959         
     960        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">tab</a></dt> 
     961        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltz</dd> 
     962         
     963        <dt><a href="./ToBeReviewed/MATRICE/extrait.html?format=raw#_extrait">tab</a></dt> 
     964        <dd>a parameter from the routine ./ToBeReviewed/MATRICE/extrait</dd> 
     965         
     966        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">tab</a></dt> 
     967        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltt</dd> 
     968         
     969        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">tab</a></dt> 
     970        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt1d</dd> 
     971         
     972        <dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html?format=raw#_depth2floatlevel">tab</a></dt> 
     973        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2floatlevel</dd> 
     974         
     975        <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">tab</a></dt> 
     976        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2level</dd> 
     977         
    963978        <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">tab</a></dt> 
    964979        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2mask</dd> 
    965980         
    966         <dt><a href="./ToBeReviewed/MATRICE/extrait.html?format=raw#_extrait">tab</a></dt> 
    967         <dd>a parameter from the routine ./ToBeReviewed/MATRICE/extrait</dd> 
    968          
    969         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">tab</a></dt> 
    970         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltt</dd> 
     981        <dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html?format=raw#_floatlevel2depth">tab</a></dt> 
     982        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/floatlevel2depth</dd> 
     983         
     984        <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">tab</a></dt> 
     985        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd> 
     986         
     987        <dt><a href="./ToBeReviewed/CALCULS/level2depth.html?format=raw#_level2depth">tab</a></dt> 
     988        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2depth</dd> 
     989         
     990        <dt><a href="./ToBeReviewed/CALCULS/level2mask.html?format=raw#_level2mask">tab</a></dt> 
     991        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2mask</dd> 
    971992         
    972993        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">tab</a></dt> 
    973994        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd> 
    974995         
    975         <dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html?format=raw#_floatlevel2depth">tab</a></dt> 
    976         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/floatlevel2depth</dd> 
    977          
    978         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">tab</a></dt> 
    979         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt1d</dd> 
    980          
    981         <dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html?format=raw#_depth2floatlevel">tab</a></dt> 
    982         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2floatlevel</dd> 
    983          
    984         <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">tab</a></dt> 
    985         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2level</dd> 
    986          
    987         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">tab</a></dt> 
    988         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltz</dd> 
    989          
    990996        <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">tab</a></dt> 
    991997        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd> 
    992998         
    993         <dt><a href="./ToBeReviewed/CALCULS/level2mask.html?format=raw#_level2mask">tab</a></dt> 
    994         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2mask</dd> 
    995          
    996         <dt><a href="./ToBeReviewed/CALCULS/level2depth.html?format=raw#_level2depth">tab</a></dt> 
    997         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2depth</dd> 
    998          
    999         <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">tab</a></dt> 
    1000         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd> 
     999        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">tab1</a></dt> 
     1000        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd> 
    10011001         
    10021002        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">tab1</a></dt> 
    10031003        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt</dd> 
    10041004         
    1005         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">tab1</a></dt> 
    1006         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd> 
    1007          
    10081005        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">tab2</a></dt> 
    10091006        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd> 
     
    10361033        <dd>a keyword from the routine readoldoparestart</dd> 
    10371034         
     1035        <dt><a href="./ToBeReviewed/GRILLE/t2v.html?format=raw#_t2v">temp</a></dt> 
     1036        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/t2v</dd> 
     1037         
    10381038        <dt><a href="./ToBeReviewed/GRILLE/v2t.html?format=raw#_v2t">temp</a></dt> 
    10391039        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/v2t</dd> 
    10401040         
     1041        <dt><a href="./ToBeReviewed/GRILLE/f2v.html?format=raw#_f2v">temp</a></dt> 
     1042        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/f2v</dd> 
     1043         
    10411044        <dt><a href="./ToBeReviewed/GRILLE/u2t.html?format=raw#_u2t">temp</a></dt> 
    10421045        <dd>a parameter from the routine ./ToBeReviewed/GRILLE/u2t</dd> 
    10431046         
    1044         <dt><a href="./ToBeReviewed/GRILLE/f2v.html?format=raw#_f2v">temp</a></dt> 
    1045         <dd>a parameter from the routine ./ToBeReviewed/GRILLE/f2v</dd> 
    1046          
    1047         <dt><a href="./ToBeReviewed/GRILLE/t2v.html?format=raw#_t2v">temp</a></dt> 
    1048         <dd>a parameter from the routine ./ToBeReviewed/GRILLE/t2v</dd> 
    1049          
    10501047        <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">tempsmax</a></dt> 
    10511048        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/axe</dd> 
     
    10811078        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd> 
    10821079         
     1080        <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_ftp_parse_pasv">text</a></dt> 
     1081        <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd> 
     1082         
    10831083        <dt><a href="./ToBeReviewed/WIDGET/xnotice.html?format=raw#_xnotice">text</a></dt> 
    10841084        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xnotice</dd> 
    10851085         
    1086         <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_ftp_parse_pasv">text</a></dt> 
    1087         <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd> 
    1088          
    10891086        <dt><a href="./ToBeReviewed/UTILITAIRE/text_box.html?format=raw#_text_box">text_box</a></dt> 
    10901087        <dd>a procedure from the file text_box.pro</dd> 
     
    11261123        <dd>a keyword from the routine cw_slider_pm</dd> 
    11271124         
     1125        <dt><a href="./ToBeReviewed/CALCULS/rhon.html?format=raw#_rhon">tn</a></dt> 
     1126        <dd>a parameter from the routine ./ToBeReviewed/CALCULS/rhon</dd> 
     1127         
    11281128        <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_readoldoparestart">tn</a></dt> 
    11291129        <dd>a keyword from the routine readoldoparestart</dd> 
    11301130         
    1131         <dt><a href="./ToBeReviewed/CALCULS/rhon.html?format=raw#_rhon">tn</a></dt> 
    1132         <dd>a parameter from the routine ./ToBeReviewed/CALCULS/rhon</dd> 
     1131        <dt><a href="./Textoidl/strtrans.html?format=raw#_strtrans">to</a></dt> 
     1132        <dd>a parameter from the routine ./Textoidl/strtrans</dd> 
    11331133         
    11341134        <dt><a href="./ToBeReviewed/STRING/strtrans.html?format=raw#_strtrans">to</a></dt> 
    11351135        <dd>a parameter from the routine ./ToBeReviewed/STRING/strtrans</dd> 
    11361136         
    1137         <dt><a href="./Textoidl/strtrans.html?format=raw#_strtrans">to</a></dt> 
    1138         <dd>a parameter from the routine ./Textoidl/strtrans</dd> 
     1137        <dt><a href="./Textoidl/str_token.html?format=raw#_Str_token">token</a></dt> 
     1138        <dd>a parameter from the routine ./Textoidl/str_token</dd> 
    11391139         
    11401140        <dt><a href="./Textoidl/translate_sub_super.html?format=raw#_Sub_sup_idl">token</a></dt> 
     
    11441144        <dd>a parameter from the routine ./ToBeReviewed/STRING/strtok</dd> 
    11451145         
    1146         <dt><a href="./Textoidl/str_token.html?format=raw#_Str_token">token</a></dt> 
    1147         <dd>a parameter from the routine ./Textoidl/str_token</dd> 
    1148          
    11491146        <dt><a href="./Textoidl/sub_sup_idl.html?format=raw#_Sub_sup_idl">token</a></dt> 
    11501147        <dd>a parameter from the routine ./Textoidl/sub_sup_idl</dd> 
     
    13871384        <dd>a file from the directory ./ToBeReviewed/PLOTS/DESSINE</dd> 
    13881385         
     1386        <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_isnumber">txt0</a></dt> 
     1387        <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber</dd> 
     1388         
    13891389        <dt><a href="./ToBeReviewed/STRING/nwrds.html?format=raw#_nwrds">txtstr</a></dt> 
    13901390        <dd>a parameter from the routine ./ToBeReviewed/STRING/nwrds</dd> 
    13911391         
     1392        <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply">type</a></dt> 
     1393        <dd>a keyword from the routine cmapply</dd> 
     1394         
     1395        <dt><a href="./ToBeReviewed/COULEURS/xpal.html?format=raw#_XP_CHANGE_COLOR">type</a></dt> 
     1396        <dd>a parameter from the routine ./ToBeReviewed/COULEURS/xpal</dd> 
     1397         
     1398        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_3d">type</a></dt> 
     1399        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 
     1400         
     1401        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">type</a></dt> 
     1402        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 
     1403         
     1404        <dt><a href="./ToBeReviewed/COULEURS/xpal.html?format=raw#_XP_REPLOT">type</a></dt> 
     1405        <dd>a parameter from the routine ./ToBeReviewed/COULEURS/xpal</dd> 
     1406         
     1407        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">type</a></dt> 
     1408        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd> 
     1409         
    13921410        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">type</a></dt> 
    13931411        <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd> 
    13941412         
    1395         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">type</a></dt> 
    1396         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 
     1413        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">type</a></dt> 
     1414        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd> 
    13971415         
    13981416        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">type</a></dt> 
    13991417        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 
    14001418         
    1401         <dt><a href="./ToBeReviewed/COULEURS/xpal.html?format=raw#_XP_REPLOT">type</a></dt> 
    1402         <dd>a parameter from the routine ./ToBeReviewed/COULEURS/xpal</dd> 
    1403          
    1404         <dt><a href="./ToBeReviewed/COULEURS/xpal.html?format=raw#_XP_CHANGE_COLOR">type</a></dt> 
    1405         <dd>a parameter from the routine ./ToBeReviewed/COULEURS/xpal</dd> 
    1406          
    1407         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">type</a></dt> 
    1408         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd> 
    1409          
    1410         <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply">type</a></dt> 
    1411         <dd>a keyword from the routine cmapply</dd> 
    1412          
    1413         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">type</a></dt> 
    1414         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd> 
    1415          
    1416         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_3d">type</a></dt> 
    1417         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 
    1418          
    14191419        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">typedessin</a></dt> 
    14201420        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/placedessin</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-X.html

    r111 r118  
    781781      <dl> 
    782782         
     783        <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">X</a></dt> 
     784        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d</dd> 
     785         
     786        <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_Auto_Cov2d">X</a></dt> 
     787        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d</dd> 
     788         
     789        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">X</a></dt> 
     790        <dd>a keyword from the routine plt1d</dd> 
     791         
     792        <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">X</a></dt> 
     793        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd> 
     794         
     795        <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_A_TimeCorrelate">X</a></dt> 
     796        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 
     797         
     798        <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">X</a></dt> 
     799        <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 
     800         
     801        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">X</a></dt> 
     802        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd> 
     803         
    783804        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">X</a></dt> 
    784805        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect</dd> 
    785806         
    786         <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_Auto_Cov2d">X</a></dt> 
    787         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d</dd> 
    788          
    789         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">X</a></dt> 
    790         <dd>a keyword from the routine plt1d</dd> 
    791          
    792         <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">X</a></dt> 
    793         <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber</dd> 
    794          
    795         <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">X</a></dt> 
    796         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd> 
    797          
    798         <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_A_TimeCorrelate">X</a></dt> 
    799         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 
    800          
    801         <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">X</a></dt> 
    802         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 
    803          
    804         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">X</a></dt> 
    805         <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd> 
    806          
    807         <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">X</a></dt> 
    808         <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d</dd> 
    809          
    810807        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">X0</a></dt> 
    811808        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
     
    817814        <dd>a keyword from the routine initncdf</dd> 
    818815         
     816        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XINDEX</a></dt> 
     817        <dd>a keyword from the routine checktypeminmax</dd> 
     818         
    819819        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">XINDEX</a></dt> 
    820820        <dd>a keyword from the routine domdef</dd> 
    821821         
    822         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XINDEX</a></dt> 
    823         <dd>a keyword from the routine checktypeminmax</dd> 
    824          
    825822        <dt><a href="./ToBeReviewed/COULEURS/xlct.html?format=raw#_XLCT_PSAVE">XLCT_PSAVE</a></dt> 
    826823        <dd>a procedure from the file xlct.pro</dd> 
     
    877874        <dd>a keyword from the routine drawcoast_e</dd> 
    878875         
     876        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">XSIZE</a></dt> 
     877        <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
     878         
     879        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">XSIZE</a></dt> 
     880        <dd>a keyword from the routine CW_BGROUP</dd> 
     881         
    879882        <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">XSIZE</a></dt> 
    880883        <dd>a keyword from the routine CW_FIELD2</dd> 
    881884         
    882         <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">XSIZE</a></dt> 
    883         <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp</dd> 
    884          
    885         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">XSIZE</a></dt> 
    886         <dd>a keyword from the routine CW_BGROUP</dd> 
    887          
    888885        <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">XSTRIDE</a></dt> 
    889886        <dd>a keyword from the routine tracegrille</dd> 
    890887         
     888        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">XT</a></dt> 
     889        <dd>a keyword from the routine pltt</dd> 
     890         
    891891        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XT</a></dt> 
    892892        <dd>a keyword from the routine checktypeminmax</dd> 
    893893         
    894         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">XT</a></dt> 
    895         <dd>a keyword from the routine pltt</dd> 
    896          
    897894        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XX</a></dt> 
    898895        <dd>a keyword from the routine checktypeminmax</dd> 
     
    904901        <dd>a keyword from the routine checktypeminmax</dd> 
    905902         
     903        <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">XYINDEX</a></dt> 
     904        <dd>a keyword from the routine initncdf</dd> 
     905         
    906906        <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">XYINDEX</a></dt> 
    907907        <dd>a keyword from the routine computegrid</dd> 
    908908         
    909         <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">XYINDEX</a></dt> 
    910         <dd>a keyword from the routine initncdf</dd> 
     909        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">XZ</a></dt> 
     910        <dd>a keyword from the routine pltz</dd> 
    911911         
    912912        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XZ</a></dt> 
    913913        <dd>a keyword from the routine checktypeminmax</dd> 
    914914         
    915         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">XZ</a></dt> 
    916         <dd>a keyword from the routine pltz</dd> 
    917          
    918915        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">X_SCROLL_SIZE</a></dt> 
    919916        <dd>a keyword from the routine CW_BGROUP</dd> 
     
    925922        <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri</dd> 
    926923         
     924        <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x</a></dt> 
     925        <dd>a parameter from the routine ./Interpolation/spl_incr</dd> 
     926         
    927927        <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x</a></dt> 
    928928        <dd>a parameter from the routine ./Interpolation/spl_keep_mean</dd> 
     
    931931        <dd>a keyword from the routine reinitplt</dd> 
    932932         
    933         <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x</a></dt> 
    934         <dd>a parameter from the routine ./Interpolation/spl_incr</dd> 
    935          
    936933        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">x</a></dt> 
    937934        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date</dd> 
     
    940937        <dd>a parameter from the routine ./Interpolation/spl_incr</dd> 
    941938         
     939        <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x</a></dt> 
     940        <dd>a parameter from the routine ./Interpolation/spl_fstdrv</dd> 
     941         
    942942        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">x</a></dt> 
    943943        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot</dd> 
     
    946946        <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour</dd> 
    947947         
    948         <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x</a></dt> 
    949         <dd>a parameter from the routine ./Interpolation/spl_fstdrv</dd> 
     948        <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_isnumber">x</a></dt> 
     949        <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber</dd> 
    950950         
    951951        <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x</a></dt> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-_.html

    r114 r118  
    781781      <dl> 
    782782         
     783        <dt><a href="./Obsolete/vraidate.html?format=raw#_vraidate">_EXTRA</a></dt> 
     784        <dd>a keyword from the routine vraidate</dd> 
     785         
     786        <dt><a href="./Calendar/date2string.html?format=raw#_date2string">_EXTRA</a></dt> 
     787        <dd>a keyword from the routine date2string</dd> 
     788         
     789        <dt><a href="./ToBeReviewed/TRIANGULATION/ciseauxtri.html?format=raw#_ciseauxtri">_EXTRA</a></dt> 
     790        <dd>a keyword from the routine ciseauxtri</dd> 
     791         
     792        <dt><a href="./Interpolation/clickincell.html?format=raw#_clickincell">_EXTRA</a></dt> 
     793        <dd>a keyword from the routine clickincell</dd> 
     794         
     795        <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">_EXTRA</a></dt> 
     796        <dd>a keyword from the routine IMDISP</dd> 
     797         
     798        <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">_EXTRA</a></dt> 
     799        <dd>a keyword from the routine initncdf</dd> 
     800         
    783801        <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">_EXTRA</a></dt> 
    784802        <dd>a keyword from the routine read_grads</dd> 
    785803         
    786         <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">_EXTRA</a></dt> 
    787         <dd>a keyword from the routine IMDISP</dd> 
    788          
    789         <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">_EXTRA</a></dt> 
    790         <dd>a keyword from the routine initncdf</dd> 
     804        <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">_EXTRA</a></dt> 
     805        <dd>a keyword from the routine read_ncdf</dd> 
     806         
     807        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">_EXTRA</a></dt> 
     808        <dd>a keyword from the routine bar_plot</dd> 
    791809         
    792810        <dt><a href="./ReadWrite/scanctl.html?format=raw#_scanctl">_EXTRA</a></dt> 
    793811        <dd>a keyword from the routine scanctl</dd> 
    794812         
    795         <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">_EXTRA</a></dt> 
    796         <dd>a keyword from the routine read_ncdf</dd> 
    797          
    798         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">_EXTRA</a></dt> 
    799         <dd>a keyword from the routine bar_plot</dd> 
     813        <dt><a href="./Calendar/monthname.html?format=raw#_monthname">_EXTRA</a></dt> 
     814        <dd>a keyword from the routine monthname</dd> 
     815         
     816        <dt><a href="./ToBeReviewed/TRIANGULATION/tracecote.html?format=raw#_tracecote">_EXTRA</a></dt> 
     817        <dd>a keyword from the routine tracecote</dd> 
     818         
     819        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">_EXTRA</a></dt> 
     820        <dd>a keyword from the routine pltbase</dd> 
    800821         
    801822        <dt><a href="./Obsolete/juldate.html?format=raw#_juldate">_EXTRA</a></dt> 
     
    805826        <dd>a keyword from the routine ncdf_meshlec</dd> 
    806827         
    807         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">_EXTRA</a></dt> 
    808         <dd>a keyword from the routine pltbase</dd> 
    809          
    810         <dt><a href="./ToBeReviewed/TRIANGULATION/tracecote.html?format=raw#_tracecote">_EXTRA</a></dt> 
    811         <dd>a keyword from the routine tracecote</dd> 
     828        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">_EXTRA</a></dt> 
     829        <dd>a keyword from the routine pltz</dd> 
     830         
     831        <dt><a href="./ToBeReviewed/UTILITAIRE/text_box.html?format=raw#_text_box">_EXTRA</a></dt> 
     832        <dd>a keyword from the routine text_box</dd> 
    812833         
    813834        <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">_EXTRA</a></dt> 
    814835        <dd>a keyword from the routine nlec</dd> 
    815836         
     837        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">_EXTRA</a></dt> 
     838        <dd>a keyword from the routine scontour</dd> 
     839         
     840        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">_EXTRA</a></dt> 
     841        <dd>a keyword from the routine splot</dd> 
     842         
     843        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">_EXTRA</a></dt> 
     844        <dd>a keyword from the routine tvplus</dd> 
     845         
     846        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">_EXTRA</a></dt> 
     847        <dd>a keyword from the routine read_vermair</dd> 
     848         
     849        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">_EXTRA</a></dt> 
     850        <dd>a keyword from the routine addaxe</dd> 
     851         
    816852        <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">_EXTRA</a></dt> 
    817853        <dd>a keyword from the routine nlec5j</dd> 
    818854         
    819         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">_EXTRA</a></dt> 
    820         <dd>a keyword from the routine pltz</dd> 
    821          
    822855        <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">_EXTRA</a></dt> 
    823856        <dd>a keyword from the routine nlecan</dd> 
    824857         
    825         <dt><a href="./ToBeReviewed/UTILITAIRE/text_box.html?format=raw#_text_box">_EXTRA</a></dt> 
    826         <dd>a keyword from the routine text_box</dd> 
    827          
    828         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">_EXTRA</a></dt> 
    829         <dd>a keyword from the routine scontour</dd> 
    830          
    831         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">_EXTRA</a></dt> 
    832         <dd>a keyword from the routine splot</dd> 
    833          
    834         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">_EXTRA</a></dt> 
    835         <dd>a keyword from the routine tvplus</dd> 
    836          
    837         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">_EXTRA</a></dt> 
    838         <dd>a keyword from the routine addaxe</dd> 
    839          
    840         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">_EXTRA</a></dt> 
    841         <dd>a keyword from the routine read_vermair</dd> 
     858        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">_EXTRA</a></dt> 
     859        <dd>a keyword from the routine checkfield</dd> 
    842860         
    843861        <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">_EXTRA</a></dt> 
    844862        <dd>a keyword from the routine nlecmois</dd> 
    845863         
     864        <dt><a href="./ToBeReviewed/COULEURS/lct.html?format=raw#_lct">_EXTRA</a></dt> 
     865        <dd>a keyword from the routine lct</dd> 
     866         
    846867        <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">_EXTRA</a></dt> 
    847868        <dd>a keyword from the routine nlecsaison</dd> 
    848869         
    849         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">_EXTRA</a></dt> 
    850         <dd>a keyword from the routine checkfield</dd> 
    851          
    852         <dt><a href="./ToBeReviewed/COULEURS/lct.html?format=raw#_lct">_EXTRA</a></dt> 
    853         <dd>a keyword from the routine lct</dd> 
    854          
    855870        <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">_EXTRA</a></dt> 
    856871        <dd>a keyword from the routine nlecserie</dd> 
     
    859874        <dd>a keyword from the routine vairdate</dd> 
    860875         
    861         <dt><a href="./Obsolete/vraidate.html?format=raw#_vraidate">_EXTRA</a></dt> 
    862         <dd>a keyword from the routine vraidate</dd> 
     876        <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">_EXTRA</a></dt> 
     877        <dd>a keyword from the routine LABEL_DATE</dd> 
     878         
     879        <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">_EXTRA</a></dt> 
     880        <dd>a keyword from the routine slec</dd> 
     881         
     882        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html?format=raw#_ajoutvect">_EXTRA</a></dt> 
     883        <dd>a keyword from the routine ajoutvect</dd> 
    863884         
    864885        <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">_EXTRA</a></dt> 
    865886        <dd>a keyword from the routine grille</dd> 
    866887         
    867         <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">_EXTRA</a></dt> 
    868         <dd>a keyword from the routine LABEL_DATE</dd> 
    869          
    870         <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html?format=raw#_ajoutvect">_EXTRA</a></dt> 
    871         <dd>a keyword from the routine ajoutvect</dd> 
    872          
    873         <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">_EXTRA</a></dt> 
    874         <dd>a keyword from the routine slec</dd> 
    875          
    876         <dt><a href="./Interpolation/clickincell.html?format=raw#_clickincell">_EXTRA</a></dt> 
    877         <dd>a keyword from the routine clickincell</dd> 
     888        <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">_EXTRA</a></dt> 
     889        <dd>a keyword from the routine xxx</dd> 
     890         
     891        <dt><a href="./Utilities/createfunc.html?format=raw#_createfunc">_EXTRA</a></dt> 
     892        <dd>a keyword from the routine createfunc</dd> 
    878893         
    879894        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">_EXTRA</a></dt> 
    880895        <dd>a keyword from the routine VELOVECT</dd> 
    881896         
    882         <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">_EXTRA</a></dt> 
    883         <dd>a keyword from the routine xxx</dd> 
    884          
    885897        <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">_EXTRA</a></dt> 
    886898        <dd>a keyword from the routine axe</dd> 
     
    889901        <dd>a keyword from the routine legende</dd> 
    890902         
    891         <dt><a href="./Calendar/date2string.html?format=raw#_date2string">_EXTRA</a></dt> 
    892         <dd>a keyword from the routine date2string</dd> 
    893          
    894903        <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">_EXTRA</a></dt> 
    895904        <dd>a keyword from the routine ncdf_meshread</dd> 
    896905         
    897         <dt><a href="./ToBeReviewed/TRIANGULATION/ciseauxtri.html?format=raw#_ciseauxtri">_EXTRA</a></dt> 
    898         <dd>a keyword from the routine ciseauxtri</dd> 
     906        <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">_extra</a></dt> 
     907        <dd>a keyword from the routine drawsectionbottom</dd> 
     908         
     909        <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">_extra</a></dt> 
     910        <dd>a keyword from the routine fillcornermask</dd> 
     911         
     912        <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">_extra</a></dt> 
     913        <dd>a keyword from the routine section</dd> 
     914         
     915        <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">_extra</a></dt> 
     916        <dd>a keyword from the routine tracemask</dd> 
     917         
     918        <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">_extra</a></dt> 
     919        <dd>a keyword from the routine triangule</dd> 
     920         
     921        <dt><a href="./ToBeReviewed/UTILITAIRE/get_extra.html?format=raw#_get_extra">_extra</a></dt> 
     922        <dd>a keyword from the routine get_extra</dd> 
     923         
     924        <dt><a href="./ToBeReviewed/UTILITAIRE/report.html?format=raw#_report">_extra</a></dt> 
     925        <dd>a keyword from the routine report</dd> 
     926         
     927        <dt><a href="./ToBeReviewed/UTILITAIRE/xfile.html?format=raw#_xfile">_extra</a></dt> 
     928        <dd>a keyword from the routine xfile</dd> 
     929         
     930        <dt><a href="./ToBeReviewed/UTILITAIRE/xhelp.html?format=raw#_xhelp">_extra</a></dt> 
     931        <dd>a keyword from the routine xhelp</dd> 
     932         
     933        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html?format=raw#_letsdraw">_extra</a></dt> 
     934        <dd>a keyword from the routine letsdraw</dd> 
     935         
     936        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.html?format=raw#_loadgrid">_extra</a></dt> 
     937        <dd>a keyword from the routine loadgrid</dd> 
     938         
     939        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.html?format=raw#_scanfile">_extra</a></dt> 
     940        <dd>a keyword from the routine scanfile</dd> 
     941         
     942        <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">_extra</a></dt> 
     943        <dd>a keyword from the routine selectfile</dd> 
     944         
     945        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html?format=raw#_cw_calendar">_extra</a></dt> 
     946        <dd>a keyword from the routine cw_calendar</dd> 
     947         
     948        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html?format=raw#_cw_combobox_pm">_extra</a></dt> 
     949        <dd>a keyword from the routine cw_combobox_pm</dd> 
     950         
     951        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">_extra</a></dt> 
     952        <dd>a keyword from the routine cw_domain</dd> 
     953         
     954        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">_extra</a></dt> 
     955        <dd>a keyword from the routine cw_droplist_pm</dd> 
     956         
     957        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">_extra</a></dt> 
     958        <dd>a keyword from the routine cw_pagelayout</dd> 
     959         
     960        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">_extra</a></dt> 
     961        <dd>a keyword from the routine cw_slide_slice</dd> 
     962         
     963        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_cw_slider_pm">_extra</a></dt> 
     964        <dd>a keyword from the routine cw_slider_pm</dd> 
     965         
     966        <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html?format=raw#_cw_specifie">_extra</a></dt> 
     967        <dd>a keyword from the routine cw_specifie</dd> 
     968         
     969        <dt><a href="./ToBeReviewed/WIDGET/xquestion.html?format=raw#_xquestion">_extra</a></dt> 
     970        <dd>a keyword from the routine xquestion</dd> 
     971         
     972        <dt><a href="./ToBeReviewed/WIDGET/xx.html?format=raw#_xx">_extra</a></dt> 
     973        <dd>a keyword from the routine xx</dd> 
     974         
     975        <dt><a href="./Utilities/createpro.html?format=raw#_createpro">_extra</a></dt> 
     976        <dd>a keyword from the routine createpro</dd> 
     977         
     978        <dt><a href="./Utilities/find.html?format=raw#_find">_extra</a></dt> 
     979        <dd>a keyword from the routine find</dd> 
     980         
     981        <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">_extra</a></dt> 
     982        <dd>a keyword from the routine isadirectory</dd> 
     983         
     984        <dt><a href="./Utilities/isafile.html?format=raw#_isafile">_extra</a></dt> 
     985        <dd>a keyword from the routine isafile</dd> 
     986         
     987        <dt><a href="./buildinit.html?format=raw#_xask">_extra</a></dt> 
     988        <dd>a keyword from the routine xask</dd> 
     989         
     990        <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">_extra</a></dt> 
     991        <dd>a keyword from the routine computegrid</dd> 
     992         
     993        <dt><a href="./Obsolete/cp.html?format=raw#_cp">_extra</a></dt> 
     994        <dd>a keyword from the routine cp</dd> 
     995         
     996        <dt><a href="./Postscript/openps.html?format=raw#_openps">_extra</a></dt> 
     997        <dd>a keyword from the routine openps</dd> 
     998         
     999        <dt><a href="./ReadWrite/ncdf_timeget.html?format=raw#_ncdf_timeget">_extra</a></dt> 
     1000        <dd>a keyword from the routine ncdf_timeget</dd> 
     1001         
     1002        <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">_extra</a></dt> 
     1003        <dd>a keyword from the routine depth2level</dd> 
     1004         
     1005        <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">_extra</a></dt> 
     1006        <dd>a keyword from the routine depth2mask</dd> 
     1007         
     1008        <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">_extra</a></dt> 
     1009        <dd>a keyword from the routine grossemoyenne</dd> 
     1010         
     1011        <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">_extra</a></dt> 
     1012        <dd>a keyword from the routine moyenne</dd> 
     1013         
     1014        <dt><a href="./ToBeReviewed/CALCULS/norme.html?format=raw#_norme">_extra</a></dt> 
     1015        <dd>a keyword from the routine norme</dd> 
     1016         
     1017        <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">_extra</a></dt> 
     1018        <dd>a keyword from the routine remplit</dd> 
     1019         
     1020        <dt><a href="./ToBeReviewed/COULEURS/colorbar.html?format=raw#_COLORBAR">_extra</a></dt> 
     1021        <dd>a keyword from the routine COLORBAR</dd> 
     1022         
     1023        <dt><a href="./ToBeReviewed/COULEURS/newpalette.html?format=raw#_newpalette">_extra</a></dt> 
     1024        <dd>a keyword from the routine newpalette</dd> 
     1025         
     1026        <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">_extra</a></dt> 
     1027        <dd>a keyword from the routine decoupeterre</dd> 
     1028         
     1029        <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">_extra</a></dt> 
     1030        <dd>a keyword from the routine domdef</dd> 
     1031         
     1032        <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">_extra</a></dt> 
     1033        <dd>a keyword from the routine tracegrille</dd> 
     1034         
     1035        <dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html?format=raw#_cw_selectinterval">_extra</a></dt> 
     1036        <dd>a keyword from the routine cw_selectinterval</dd> 
     1037         
     1038        <dt><a href="./ToBeReviewed/HOPE/read_hope.html?format=raw#_read_hope">_extra</a></dt> 
     1039        <dd>a keyword from the routine read_hope</dd> 
     1040         
     1041        <dt><a href="./ToBeReviewed/HOPE/xrh.html?format=raw#_xrh">_extra</a></dt> 
     1042        <dd>a keyword from the routine xrh</dd> 
     1043         
     1044        <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">_extra</a></dt> 
     1045        <dd>a keyword from the routine ncdf_lec</dd> 
     1046         
     1047        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">_extra</a></dt> 
     1048        <dd>a keyword from the routine plt</dd> 
     1049         
     1050        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">_extra</a></dt> 
     1051        <dd>a keyword from the routine plt1d</dd> 
     1052         
     1053        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">_extra</a></dt> 
     1054        <dd>a keyword from the routine pltsc</dd> 
     1055         
     1056        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">_extra</a></dt> 
     1057        <dd>a keyword from the routine pltt</dd> 
     1058         
     1059        <dt><a href="./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html?format=raw#_sbar_plot">_extra</a></dt> 
     1060        <dd>a keyword from the routine sbar_plot</dd> 
     1061         
     1062        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">_extra</a></dt> 
     1063        <dd>a keyword from the routine axis4pltz</dd> 
     1064         
     1065        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">_extra</a></dt> 
     1066        <dd>a keyword from the routine barrecouleur</dd> 
     1067         
     1068        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">_extra</a></dt> 
     1069        <dd>a keyword from the routine checktypeminmax</dd> 
     1070         
     1071        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">_extra</a></dt> 
     1072        <dd>a keyword from the routine determineminmax</dd> 
     1073         
     1074        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placecolor.html?format=raw#_placecolor">_extra</a></dt> 
     1075        <dd>a keyword from the routine placecolor</dd> 
     1076         
     1077        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">_extra</a></dt> 
     1078        <dd>a keyword from the routine placedessin</dd> 
     1079         
     1080        <dt><a href="./ToBeReviewed/PLOTS/DIVERS/terminedessin.html?format=raw#_terminedessin">_extra</a></dt> 
     1081        <dd>a keyword from the routine terminedessin</dd> 
     1082         
     1083        <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/vecteur.html?format=raw#_vecteur">_extra</a></dt> 
     1084        <dd>a keyword from the routine vecteur</dd> 
     1085         
     1086        <dt><a href="./ToBeReviewed/PLOTS/plotsym.html?format=raw#_plotsym">_extra</a></dt> 
     1087        <dd>a keyword from the routine plotsym</dd> 
     1088         
     1089        <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">_extra</a></dt> 
     1090        <dd>a keyword from the routine calibre</dd> 
     1091         
     1092        <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_too_cool">_extra</a></dt> 
     1093        <dd>a keyword from the routine too_cool</dd> 
     1094         
     1095        <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_draw_corner_triangle">_extra</a></dt> 
     1096        <dd>a keyword from the routine draw_corner_triangle</dd> 
     1097         
     1098        <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">_extra</a></dt> 
     1099        <dd>a keyword from the routine completecointerre</dd> 
    8991100         
    9001101        <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">_extra</a></dt> 
     
    9071108        <dd>a keyword from the routine drawcoast_e</dd> 
    9081109         
    909         <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">_extra</a></dt> 
    910         <dd>a keyword from the routine drawsectionbottom</dd> 
    911          
    912         <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">_extra</a></dt> 
    913         <dd>a keyword from the routine fillcornermask</dd> 
    914          
    915         <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">_extra</a></dt> 
    916         <dd>a keyword from the routine section</dd> 
    917          
    918         <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">_extra</a></dt> 
    919         <dd>a keyword from the routine tracemask</dd> 
    920          
    921         <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">_extra</a></dt> 
    922         <dd>a keyword from the routine triangule</dd> 
    923          
    924         <dt><a href="./ToBeReviewed/UTILITAIRE/get_extra.html?format=raw#_get_extra">_extra</a></dt> 
    925         <dd>a keyword from the routine get_extra</dd> 
    926          
    927         <dt><a href="./ToBeReviewed/UTILITAIRE/report.html?format=raw#_report">_extra</a></dt> 
    928         <dd>a keyword from the routine report</dd> 
    929          
    930         <dt><a href="./ToBeReviewed/UTILITAIRE/xfile.html?format=raw#_xfile">_extra</a></dt> 
    931         <dd>a keyword from the routine xfile</dd> 
    932          
    933         <dt><a href="./ToBeReviewed/UTILITAIRE/xhelp.html?format=raw#_xhelp">_extra</a></dt> 
    934         <dd>a keyword from the routine xhelp</dd> 
    935          
    936         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html?format=raw#_letsdraw">_extra</a></dt> 
    937         <dd>a keyword from the routine letsdraw</dd> 
    938          
    939         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.html?format=raw#_loadgrid">_extra</a></dt> 
    940         <dd>a keyword from the routine loadgrid</dd> 
    941          
    942         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.html?format=raw#_scanfile">_extra</a></dt> 
    943         <dd>a keyword from the routine scanfile</dd> 
    944          
    945         <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">_extra</a></dt> 
    946         <dd>a keyword from the routine selectfile</dd> 
    947          
    948         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html?format=raw#_cw_calendar">_extra</a></dt> 
    949         <dd>a keyword from the routine cw_calendar</dd> 
    950          
    951         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html?format=raw#_cw_combobox_pm">_extra</a></dt> 
    952         <dd>a keyword from the routine cw_combobox_pm</dd> 
    953          
    954         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">_extra</a></dt> 
    955         <dd>a keyword from the routine cw_domain</dd> 
    956          
    957         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">_extra</a></dt> 
    958         <dd>a keyword from the routine cw_droplist_pm</dd> 
    959          
    960         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">_extra</a></dt> 
    961         <dd>a keyword from the routine cw_pagelayout</dd> 
    962          
    963         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">_extra</a></dt> 
    964         <dd>a keyword from the routine cw_slide_slice</dd> 
    965          
    966         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_cw_slider_pm">_extra</a></dt> 
    967         <dd>a keyword from the routine cw_slider_pm</dd> 
    968          
    969         <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html?format=raw#_cw_specifie">_extra</a></dt> 
    970         <dd>a keyword from the routine cw_specifie</dd> 
    971          
    972         <dt><a href="./ToBeReviewed/WIDGET/xquestion.html?format=raw#_xquestion">_extra</a></dt> 
    973         <dd>a keyword from the routine xquestion</dd> 
    974          
    975         <dt><a href="./ToBeReviewed/WIDGET/xx.html?format=raw#_xx">_extra</a></dt> 
    976         <dd>a keyword from the routine xx</dd> 
    977          
    978         <dt><a href="./Utilities/createfunc.html?format=raw#_createfunc">_extra</a></dt> 
    979         <dd>a keyword from the routine createfunc</dd> 
    980          
    981         <dt><a href="./Utilities/createpro.html?format=raw#_createpro">_extra</a></dt> 
    982         <dd>a keyword from the routine createpro</dd> 
    983          
    984         <dt><a href="./Utilities/find.html?format=raw#_find">_extra</a></dt> 
    985         <dd>a keyword from the routine find</dd> 
    986          
    987         <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">_extra</a></dt> 
    988         <dd>a keyword from the routine isadirectory</dd> 
    989          
    990         <dt><a href="./Utilities/isafile.html?format=raw#_isafile">_extra</a></dt> 
    991         <dd>a keyword from the routine isafile</dd> 
    992          
    993         <dt><a href="./buildinit.html?format=raw#_xask">_extra</a></dt> 
    994         <dd>a keyword from the routine xask</dd> 
    995          
    996         <dt><a href="./Calendar/monthname.html?format=raw#_monthname">_extra</a></dt> 
    997         <dd>a keyword from the routine monthname</dd> 
    998          
    999         <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">_extra</a></dt> 
    1000         <dd>a keyword from the routine computegrid</dd> 
    1001          
    1002         <dt><a href="./Obsolete/cp.html?format=raw#_cp">_extra</a></dt> 
    1003         <dd>a keyword from the routine cp</dd> 
    1004          
    1005         <dt><a href="./Postscript/openps.html?format=raw#_openps">_extra</a></dt> 
    1006         <dd>a keyword from the routine openps</dd> 
    1007          
    1008         <dt><a href="./ReadWrite/ncdf_timeget.html?format=raw#_ncdf_timeget">_extra</a></dt> 
    1009         <dd>a keyword from the routine ncdf_timeget</dd> 
    1010          
    1011         <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">_extra</a></dt> 
    1012         <dd>a keyword from the routine depth2level</dd> 
    1013          
    1014         <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">_extra</a></dt> 
    1015         <dd>a keyword from the routine depth2mask</dd> 
    1016          
    1017         <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">_extra</a></dt> 
    1018         <dd>a keyword from the routine grossemoyenne</dd> 
    1019          
    1020         <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">_extra</a></dt> 
    1021         <dd>a keyword from the routine moyenne</dd> 
    1022          
    1023         <dt><a href="./ToBeReviewed/CALCULS/norme.html?format=raw#_norme">_extra</a></dt> 
    1024         <dd>a keyword from the routine norme</dd> 
    1025          
    1026         <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">_extra</a></dt> 
    1027         <dd>a keyword from the routine remplit</dd> 
    1028          
    1029         <dt><a href="./ToBeReviewed/COULEURS/colorbar.html?format=raw#_COLORBAR">_extra</a></dt> 
    1030         <dd>a keyword from the routine COLORBAR</dd> 
    1031          
    1032         <dt><a href="./ToBeReviewed/COULEURS/newpalette.html?format=raw#_newpalette">_extra</a></dt> 
    1033         <dd>a keyword from the routine newpalette</dd> 
    1034          
    1035         <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">_extra</a></dt> 
    1036         <dd>a keyword from the routine decoupeterre</dd> 
    1037          
    1038         <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">_extra</a></dt> 
    1039         <dd>a keyword from the routine domdef</dd> 
    1040          
    1041         <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">_extra</a></dt> 
    1042         <dd>a keyword from the routine tracegrille</dd> 
    1043          
    1044         <dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html?format=raw#_cw_selectinterval">_extra</a></dt> 
    1045         <dd>a keyword from the routine cw_selectinterval</dd> 
    1046          
    1047         <dt><a href="./ToBeReviewed/HOPE/read_hope.html?format=raw#_read_hope">_extra</a></dt> 
    1048         <dd>a keyword from the routine read_hope</dd> 
    1049          
    1050         <dt><a href="./ToBeReviewed/HOPE/xrh.html?format=raw#_xrh">_extra</a></dt> 
    1051         <dd>a keyword from the routine xrh</dd> 
    1052          
    1053         <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">_extra</a></dt> 
    1054         <dd>a keyword from the routine ncdf_lec</dd> 
    1055          
    1056         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">_extra</a></dt> 
    1057         <dd>a keyword from the routine plt</dd> 
    1058          
    1059         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">_extra</a></dt> 
    1060         <dd>a keyword from the routine plt1d</dd> 
    1061          
    1062         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">_extra</a></dt> 
    1063         <dd>a keyword from the routine pltsc</dd> 
    1064          
    1065         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">_extra</a></dt> 
    1066         <dd>a keyword from the routine pltt</dd> 
    1067          
    1068         <dt><a href="./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html?format=raw#_sbar_plot">_extra</a></dt> 
    1069         <dd>a keyword from the routine sbar_plot</dd> 
    1070          
    1071         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">_extra</a></dt> 
    1072         <dd>a keyword from the routine axis4pltz</dd> 
    1073          
    1074         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">_extra</a></dt> 
    1075         <dd>a keyword from the routine barrecouleur</dd> 
    1076          
    1077         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">_extra</a></dt> 
    1078         <dd>a keyword from the routine checktypeminmax</dd> 
    1079          
    1080         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">_extra</a></dt> 
    1081         <dd>a keyword from the routine determineminmax</dd> 
    1082          
    1083         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placecolor.html?format=raw#_placecolor">_extra</a></dt> 
    1084         <dd>a keyword from the routine placecolor</dd> 
    1085          
    1086         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">_extra</a></dt> 
    1087         <dd>a keyword from the routine placedessin</dd> 
    1088          
    1089         <dt><a href="./ToBeReviewed/PLOTS/DIVERS/terminedessin.html?format=raw#_terminedessin">_extra</a></dt> 
    1090         <dd>a keyword from the routine terminedessin</dd> 
    1091          
    1092         <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/vecteur.html?format=raw#_vecteur">_extra</a></dt> 
    1093         <dd>a keyword from the routine vecteur</dd> 
    1094          
    1095         <dt><a href="./ToBeReviewed/PLOTS/plotsym.html?format=raw#_plotsym">_extra</a></dt> 
    1096         <dd>a keyword from the routine plotsym</dd> 
    1097          
    1098         <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">_extra</a></dt> 
    1099         <dd>a keyword from the routine calibre</dd> 
    1100          
    1101         <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_too_cool">_extra</a></dt> 
    1102         <dd>a keyword from the routine too_cool</dd> 
    1103          
    1104         <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_draw_corner_triangle">_extra</a></dt> 
    1105         <dd>a keyword from the routine draw_corner_triangle</dd> 
    1106          
    1107         <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">_extra</a></dt> 
    1108         <dd>a keyword from the routine completecointerre</dd> 
    1109          
    11101110        <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#__str">_str</a></dt> 
    11111111        <dd>a function from the file ncdf_quickwrite_helper2.pro</dd> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html

    r114 r118  
    742742  <h2>Known bugs</h2></div> 
    743743<div id="undoc"> 
    744   <h2>Undocumented routines</h2><a href="./Calendar/date2string.html?format=raw">./Calendar/date2string.pro</a> 
    745 <table> 
    746  
    747 <tr> 
    748 <td class="docroutine"><a href="./Calendar/date2string.html?format=raw#_date2string">date2string</a></td> 
    749 <td class="docstat partialdoc">partially documented</td> 
    750 </tr> 
    751  
    752 </table><a href="./Calendar/monthname.html?format=raw">./Calendar/monthname.pro</a> 
    753 <table> 
    754  
    755 <tr> 
    756 <td class="docroutine"><a href="./Calendar/monthname.html?format=raw#_monthname">monthname</a></td> 
    757 <td class="docstat partialdoc">partially documented</td> 
    758 </tr> 
    759  
    760 </table><a href="./Grid/computegrid.html?format=raw">./Grid/computegrid.pro</a> 
    761 <table> 
    762  
    763 <tr> 
    764 <td class="docroutine"><a href="./Grid/computegrid.html?format=raw#_computegrid">computegrid</a></td> 
    765 <td class="docstat partialdoc">partially documented</td> 
    766 </tr> 
    767  
    768 </table><a href="./Grid/micromeshmask.html?format=raw">./Grid/micromeshmask.pro</a> 
    769 <table> 
    770  
    771 <tr> 
    772 <td class="docroutine"><a href="./Grid/micromeshmask.html?format=raw#_ncdf_transfer">ncdf_transfer</a></td> 
    773 <td class="docstat partialdoc">partially documented</td> 
    774 </tr> 
    775  
    776 </table><a href="./Grid/ncdf_meshread.html?format=raw">./Grid/ncdf_meshread.pro</a> 
    777 <table> 
    778  
    779 <tr> 
    780 <td class="docroutine"><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">ncdf_meshread</a></td> 
    781 <td class="docstat partialdoc">partially documented</td> 
    782 </tr> 
    783  
    784 </table><a href="./Grid/smallmeshmask.html?format=raw">./Grid/smallmeshmask.pro</a> 
    785 <table> 
    786  
    787 <tr> 
    788 <td class="docroutine"><a href="./Grid/smallmeshmask.html?format=raw#_ncdf_transfer">ncdf_transfer</a></td> 
    789 <td class="docstat partialdoc">partially documented</td> 
    790 </tr> 
    791  
    792 </table><a href="./Interpolation/angle.html?format=raw">./Interpolation/angle.pro</a> 
    793 <table> 
    794  
    795 <tr> 
    796 <td class="docroutine"><a href="./Interpolation/angle.html?format=raw#_fsnspp">fsnspp</a></td> 
    797 <td class="docstat partialdoc">partially documented</td> 
    798 </tr> 
    799  
    800 <tr> 
    801 <td class="docroutine"><a href="./Interpolation/angle.html?format=raw#_angle">angle</a></td> 
    802 <td class="docstat partialdoc">partially documented</td> 
    803 </tr> 
    804  
    805 </table><a href="./Interpolation/compute_fromirr_bilinear_weigaddr.html?format=raw">./Interpolation/compute_fromirr_bilinear_weigaddr.pro</a> 
    806 <table> 
    807  
    808 <tr> 
    809 <td class="docroutine"><a href="./Interpolation/compute_fromirr_bilinear_weigaddr.html?format=raw#_compute_fromirr_bilinear_weigaddr">compute_fromirr_bilinear_weigaddr</a></td> 
    810 <td class="docstat partialdoc">partially documented</td> 
    811 </tr> 
    812  
    813 </table><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw">./Interpolation/compute_fromreg_bilinear_weigaddr.pro</a> 
    814 <table> 
    815  
    816 <tr> 
    817 <td class="docroutine"><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">compute_fromreg_bilinear_weigaddr</a></td> 
    818 <td class="docstat partialdoc">partially documented</td> 
    819 </tr> 
    820  
    821 </table><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw">./Interpolation/compute_fromreg_imoms3_weigaddr.pro</a> 
    822 <table> 
    823  
    824 <tr> 
    825 <td class="docroutine"><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">compute_fromreg_imoms3_weigaddr</a></td> 
    826 <td class="docstat partialdoc">partially documented</td> 
    827 </tr> 
    828  
    829 </table><a href="./Interpolation/cutpar.html?format=raw">./Interpolation/cutpar.pro</a> 
    830 <table> 
    831  
    832 <tr> 
    833 <td class="docroutine"><a href="./Interpolation/cutpar.html?format=raw#_cutpar">cutpar</a></td> 
    834 <td class="docstat partialdoc">partially documented</td> 
    835 </tr> 
    836  
    837 </table><a href="./Interpolation/cutsegment.html?format=raw">./Interpolation/cutsegment.pro</a> 
    838 <table> 
    839  
    840 <tr> 
    841 <td class="docroutine"><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">cutsegment</a></td> 
    842 <td class="docstat partialdoc">partially documented</td> 
    843 </tr> 
    844  
    845 </table><a href="./Interpolation/extrapolate.html?format=raw">./Interpolation/extrapolate.pro</a> 
     744  <h2>Undocumented routines</h2><a href="./Interpolation/extrapolate.html?format=raw">./Interpolation/extrapolate.pro</a> 
    846745<table> 
    847746 
     
    851750</tr> 
    852751 
    853 </table><a href="./Interpolation/fromreg.html?format=raw">./Interpolation/fromreg.pro</a> 
    854 <table> 
    855  
    856 <tr> 
    857 <td class="docroutine"><a href="./Interpolation/fromreg.html?format=raw#_fromreg">fromreg</a></td> 
    858 <td class="docstat partialdoc">partially documented</td> 
    859 </tr> 
    860  
    861 </table><a href="./Interpolation/get_gridparams.html?format=raw">./Interpolation/get_gridparams.pro</a> 
    862 <table> 
    863  
    864 <tr> 
    865 <td class="docroutine"><a href="./Interpolation/get_gridparams.html?format=raw#_get_gridparams">get_gridparams</a></td> 
    866 <td class="docstat partialdoc">partially documented</td> 
    867 </tr> 
    868  
    869752</table><a href="./Interpolation/imoms3.html?format=raw">./Interpolation/imoms3.pro</a> 
    870753<table> 
     
    875758</tr> 
    876759 
    877 </table><a href="./Interpolation/inquad.html?format=raw">./Interpolation/inquad.pro</a> 
    878 <table> 
    879  
    880 <tr> 
    881 <td class="docroutine"><a href="./Interpolation/inquad.html?format=raw#_inquad">inquad</a></td> 
    882 <td class="docstat partialdoc">partially documented</td> 
    883 </tr> 
    884  
    885 </table><a href="./Interpolation/inrecgrid.html?format=raw">./Interpolation/inrecgrid.pro</a> 
    886 <table> 
    887  
    888 <tr> 
    889 <td class="docroutine"><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">inrecgrid</a></td> 
    890 <td class="docstat partialdoc">partially documented</td> 
    891 </tr> 
    892  
    893 </table><a href="./Interpolation/map_npoints.html?format=raw">./Interpolation/map_npoints.pro</a> 
    894 <table> 
    895  
    896 <tr> 
    897 <td class="docroutine"><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">Map_npoints</a></td> 
    898 <td class="docstat partialdoc">partially documented</td> 
    899 </tr> 
    900  
    901 </table><a href="./Interpolation/neighbor.html?format=raw">./Interpolation/neighbor.pro</a> 
    902 <table> 
    903  
    904 <tr> 
    905 <td class="docroutine"><a href="./Interpolation/neighbor.html?format=raw#_neighbor">neighbor</a></td> 
    906 <td class="docstat partialdoc">partially documented</td> 
    907 </tr> 
    908  
    909 </table><a href="./Interpolation/quadrilateral2square.html?format=raw">./Interpolation/quadrilateral2square.pro</a> 
    910 <table> 
    911  
    912 <tr> 
    913 <td class="docroutine"><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">quadrilateral2square</a></td> 
    914 <td class="docstat partialdoc">partially documented</td> 
    915 </tr> 
    916  
    917760</table><a href="./Interpolation/spl_incr.html?format=raw">./Interpolation/spl_incr.pro</a> 
    918761<table> 
     
    925768<tr> 
    926769<td class="docroutine"><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">pure_convex</a></td> 
    927 <td class="docstat notdoc">not documented</td> 
     770<td class="docstat partialdoc">partially documented</td> 
    928771</tr> 
    929772 
     
    933776</tr> 
    934777 
    935 </table><a href="./Obsolete/cp.html?format=raw">./Obsolete/cp.pro</a> 
    936 <table> 
    937  
    938 <tr> 
    939 <td class="docroutine"><a href="./Obsolete/cp.html?format=raw#_cp">cp</a></td> 
    940 <td class="docstat partialdoc">partially documented</td> 
    941 </tr> 
    942  
    943778</table><a href="./Obsolete/fictype.html?format=raw">./Obsolete/fictype.pro</a> 
    944779<table> 
     
    949784</tr> 
    950785 
    951 </table><a href="./Obsolete/imprime.html?format=raw">./Obsolete/imprime.pro</a> 
    952 <table> 
    953  
    954 <tr> 
    955 <td class="docroutine"><a href="./Obsolete/imprime.html?format=raw#_imprime">imprime</a></td> 
    956 <td class="docstat partialdoc">partially documented</td> 
    957 </tr> 
    958  
    959786</table><a href="./Obsolete/jourdsmois.html?format=raw">./Obsolete/jourdsmois.pro</a> 
    960787<table> 
     
    965792</tr> 
    966793 
    967 </table><a href="./Obsolete/juldate.html?format=raw">./Obsolete/juldate.pro</a> 
    968 <table> 
    969  
    970 <tr> 
    971 <td class="docroutine"><a href="./Obsolete/juldate.html?format=raw#_juldate">juldate</a></td> 
    972 <td class="docstat partialdoc">partially documented</td> 
    973 </tr> 
    974  
    975 </table><a href="./Obsolete/lec.html?format=raw">./Obsolete/lec.pro</a> 
    976 <table> 
    977  
    978 <tr> 
    979 <td class="docroutine"><a href="./Obsolete/lec.html?format=raw#_lec">lec</a></td> 
    980 <td class="docstat partialdoc">partially documented</td> 
    981 </tr> 
    982  
    983794</table><a href="./Obsolete/lect.html?format=raw">./Obsolete/lect.pro</a> 
    984795<table> 
     
    989800</tr> 
    990801 
    991 </table><a href="./Obsolete/meshlec.html?format=raw">./Obsolete/meshlec.pro</a> 
    992 <table> 
    993  
    994 <tr> 
    995 <td class="docroutine"><a href="./Obsolete/meshlec.html?format=raw#_meshlec">meshlec</a></td> 
    996 <td class="docstat partialdoc">partially documented</td> 
    997 </tr> 
    998  
    999 </table><a href="./Obsolete/ncdf_meshlec.html?format=raw">./Obsolete/ncdf_meshlec.pro</a> 
    1000 <table> 
    1001  
    1002 <tr> 
    1003 <td class="docroutine"><a href="./Obsolete/ncdf_meshlec.html?format=raw#_ncdf_meshlec">ncdf_meshlec</a></td> 
    1004 <td class="docstat partialdoc">partially documented</td> 
    1005 </tr> 
    1006  
    1007802</table><a href="./Obsolete/nlec.html?format=raw">./Obsolete/nlec.pro</a> 
    1008803<table> 
     
    1013808</tr> 
    1014809 
    1015 </table><a href="./Obsolete/nlec5j.html?format=raw">./Obsolete/nlec5j.pro</a> 
    1016 <table> 
    1017  
    1018 <tr> 
    1019 <td class="docroutine"><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">nlec5j</a></td> 
    1020 <td class="docstat partialdoc">partially documented</td> 
    1021 </tr> 
    1022  
    1023 </table><a href="./Obsolete/nlecan.html?format=raw">./Obsolete/nlecan.pro</a> 
    1024 <table> 
    1025  
    1026 <tr> 
    1027 <td class="docroutine"><a href="./Obsolete/nlecan.html?format=raw#_nlecan">nlecan</a></td> 
    1028 <td class="docstat partialdoc">partially documented</td> 
    1029 </tr> 
    1030  
    1031810</table><a href="./Obsolete/nlecmois.html?format=raw">./Obsolete/nlecmois.pro</a> 
    1032811<table> 
     
    1037816</tr> 
    1038817 
    1039 </table><a href="./Obsolete/nlecsaison.html?format=raw">./Obsolete/nlecsaison.pro</a> 
    1040 <table> 
    1041  
    1042 <tr> 
    1043 <td class="docroutine"><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">nlecsaison</a></td> 
    1044 <td class="docstat partialdoc">partially documented</td> 
    1045 </tr> 
    1046  
    1047818</table><a href="./Obsolete/nlecserie.html?format=raw">./Obsolete/nlecserie.pro</a> 
    1048819<table> 
     
    1053824</tr> 
    1054825 
    1055 </table><a href="./Obsolete/vairdate.html?format=raw">./Obsolete/vairdate.pro</a> 
    1056 <table> 
    1057  
    1058 <tr> 
    1059 <td class="docroutine"><a href="./Obsolete/vairdate.html?format=raw#_vairdate">vairdate</a></td> 
    1060 <td class="docstat partialdoc">partially documented</td> 
    1061 </tr> 
    1062  
    1063 </table><a href="./Obsolete/vraidate.html?format=raw">./Obsolete/vraidate.pro</a> 
    1064 <table> 
    1065  
    1066 <tr> 
    1067 <td class="docroutine"><a href="./Obsolete/vraidate.html?format=raw#_vraidate">vraidate</a></td> 
    1068 <td class="docstat partialdoc">partially documented</td> 
    1069 </tr> 
    1070  
    1071 </table><a href="./Postscript/openps.html?format=raw">./Postscript/openps.pro</a> 
    1072 <table> 
    1073  
    1074 <tr> 
    1075 <td class="docroutine"><a href="./Postscript/openps.html?format=raw#_openps">openps</a></td> 
    1076 <td class="docstat partialdoc">partially documented</td> 
    1077 </tr> 
    1078  
    1079 </table><a href="./Postscript/printps.html?format=raw">./Postscript/printps.pro</a> 
    1080 <table> 
    1081  
    1082 <tr> 
    1083 <td class="docroutine"><a href="./Postscript/printps.html?format=raw#_printps_event">printps_event</a></td> 
    1084 <td class="docstat partialdoc">partially documented</td> 
    1085 </tr> 
    1086  
    1087826</table><a href="./ReadWrite/idl-NetCDF/ncdf_listdims.html?format=raw">./ReadWrite/idl-NetCDF/ncdf_listdims.pro</a> 
    1088827<table> 
     
    27682507 
    27692508<tr> 
    2770 <td class="docroutine"><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">ISNUMBER</a></td> 
     2509<td class="docroutine"><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_isnumber">isnumber</a></td> 
    27712510<td class="docstat partialdoc">partially documented</td> 
    27722511</tr> 
     
    36343373<tr> 
    36353374<td class="docroutine"><a href="./Utilities/createfunc.html?format=raw#_createfunc">createfunc</a></td> 
    3636 <td class="docstat partialdoc">partially documented</td> 
    3637 </tr> 
    3638  
    3639 </table><a href="./Utilities/createpro.html?format=raw">./Utilities/createpro.pro</a> 
    3640 <table> 
    3641  
    3642 <tr> 
    3643 <td class="docroutine"><a href="./Utilities/createpro.html?format=raw#_createpro">createpro</a></td> 
    3644 <td class="docstat partialdoc">partially documented</td> 
    3645 </tr> 
    3646  
    3647 </table><a href="./Utilities/find.html?format=raw">./Utilities/find.pro</a> 
    3648 <table> 
    3649  
    3650 <tr> 
    3651 <td class="docroutine"><a href="./Utilities/find.html?format=raw#_find">find</a></td> 
    3652 <td class="docstat partialdoc">partially documented</td> 
    3653 </tr> 
    3654  
    3655 </table><a href="./Utilities/isadirectory.html?format=raw">./Utilities/isadirectory.pro</a> 
    3656 <table> 
    3657  
    3658 <tr> 
    3659 <td class="docroutine"><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">isadirectory</a></td> 
    3660 <td class="docstat partialdoc">partially documented</td> 
    3661 </tr> 
    3662  
    3663 </table><a href="./Utilities/isafile.html?format=raw">./Utilities/isafile.pro</a> 
    3664 <table> 
    3665  
    3666 <tr> 
    3667 <td class="docroutine"><a href="./Utilities/isafile.html?format=raw#_isafile">isafile</a></td> 
    36683375<td class="docstat partialdoc">partially documented</td> 
    36693376</tr> 
  • trunk/SRC/Documentation/idldoc_html_output/overview.html

    r114 r118  
    969969        <tr> 
    970970          <td>Lines of code</td> 
    971           <td class="value">       56885</td> 
     971          <td class="value">       57334</td> 
    972972        </tr> 
    973973      </table> 
  • trunk/SRC/Documentation/idldoc_html_output/search.js

    r114 r118  
    11a = new Array(); 
    22 
    3 a[1] = new Array("./Calendar/date2jul.html", "date2jul.pro", "", "             file_comments gives julian day equivalent of a date in yyyymmdd format       categories calendar      param date  in required  date in yyyymmdd format      keyword  GRADS  in optional                   if  1  year   2000   year                 if 50  year   1900   year      returns date in julian day      examples         IDL  jday   juldate 19930124       IDL  print  date2jul 19931205  EQ julday 12 5 1993           1      IDL  print  date2jul 931205 grads  EQ julday 12 5 1993           1      history Sebastien Masson  smasson lodyc jussieu fr                          June 2005         function date2jul  date  GRADS   grads       compile_opt idl2  strictarrsubs      year   long date    10000    month   long abs date 100  MOD 100    day   long abs date  MOD 100      if keyword_set grads  then year   year          1900    year GE 50 AND year LE 99           2000    year GE  1 AND year LE 49       return  julday month  day  year  end "); 
    4 a[2] = new Array("./Calendar/date2string.html", "date2string.pro", "", "             file_comments create a nice and readable format to print a date      categories calendar  string      param yyyymmdd  in required  the date in the format yyyymmdd      file_comments keyword parameters of string function to specify the format of the month  the C format  can be used      returns a string containing the date in a easy readable format      examples         IDL  print  date2string 19900123       Jan 23  1990      IDL  print  date2string 19900123  format    C CMOA       JAN 23  1990      history Sebastien Masson  smasson lodyc jussieu fr    Creation     update review June 2005 Sebastien Masson          FUNCTION date2string  yyyymmdd  _EXTRA   ex       compile_opt idl2  strictarrsubs      sday   strtrim long yyyymmdd  MOD 100  1     smonth   strtrim long yyyymmdd 100  MOD 100  2     syear   strtrim long yyyymmdd 10000  2     res   string format    C CMoa  31 fix smonth 1  _EXTRA   ex                     sday         syear    return  res end"); 
    5 a[3] = new Array("./Calendar/daysinmonth.html", "daysinmonth.pro", "", "             file_comments give the number of days in a specific month      categories calendar      param month  in optional      param year  in optional     Year is used only if the  common variable key_caltype    greg     In that case  month and year must have the same number of elements     If not provided  we take month and year from  time  common variable       returns number of days in a month or  1 in case of error      uses cm_4cal              examples    IDL  ndays   daysinmonth 2  2000       history Sebastien Masson  smasson lodyc jussieu fr   2 7 98   update review english new commons: June 2005 Sebastien Masson          function daysinmonth  month  year     include commons     compile_opt idl2  strictarrsubs    cm_4cal IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew ENDIF     IF n_elements key_caltype  EQ 0 THEN key_caltype    greg    CASE key_caltype OF      360d : if n_elements month  GT 1 THEN           return  replicate 30  n_elements month  ELSE return  30      noleap :BEGIN       days_in_mth    31  28  31  30  31  30  31  31  30  31  30  31        IF n_elements month  EQ 0 THEN caldat  time  month       return  days_in_mth month 1      END      greg :BEGIN       CASE n_params  OF         0:caldat  time  month  day  year         2:IF n_elements month  NE n_elements year  THEN             return  report month and year must have the same number of elements          ELSE:return  report daysinmonth accept 0 or 2 input parameters        ENDCASE       days_in_mth    31  28  31  30  31  30  31  31  30  31  30  31        return  days_in_mth month 1    leapyr year month EQ 2      END      ELSE:return  report only 3 types of calendar are accepted: greg  360d and noleap    ENDCASE  END "); 
    6 a[4] = new Array("./Calendar/jul2date.html", "jul2date.pro", "", "             file_comments gives yyyymmdd date equivalent of a julian day      categories calendar      param jday  in required  julian day      returns date in yyyymmdd format      examples         IDL  print  jul2date julday 12 23 1999           19991223      history Sebastien Masson  smasson lodyc jussieu fr                          June 2005         function jul2date  jday     compile_opt idl2  strictarrsubs      caldat  jday  month  day  year    res    10000L year   100L month   day year GE 0              10000L year   100L month   day year LT 0     return  long res  end"); 
    7 a[5] = new Array("./Calendar/leapyr.html", "leapyr.pro", "", "         file_comments determine whether the input year is a leap year or not   Very useful for finding number of days in a year    eg  NUM_DAYS_IN_YR   365   leapyr year       categories calendar      param year  in required  year to be tested as a leap year      returns 0 then not a leap year             1 then year is a leap year      uses cm_4cal      examples   IDL  result   leapyr 2000       history     Originally Written by: Trevor Harris  Physics Dept  University of Adelaide   20 09 88           November 2004: correction for century years  S  Masson            Every year divisible by 4 is a leap year           But every year divisible by 100 is NOT a leap year          Unless the year is also divisible by 400  then it is still a         leap year          This means that year 1800  1900  2100  2200  2300 and 2500 are         NOT leap years  while year 2000 and 2400 are leap years             supress the automatic change 89   1989           June 2005 update for new commons  Sebastien Masson        function leapyr  year   include commons     compile_opt idl2  strictarrsubs    cm_4cal   yr   long year    IF n_elements key_caltype  EQ 0 THEN key_caltype    greg      IF key_caltype NE  greg  THEN BEGIN      sd   size yr   dimensions      IF sd 0  EQ 0 THEN return  0b ELSE return  bytarr size yr   dimensions    ENDIF ELSE return   yr MOD 4 EQ 0 yr MOD 100 NE 0     yr MOD 400 EQ 0   end"); 
    8 a[6] = new Array("./Calendar/monthname.html", "monthname.pro", "", "             file_comments gives the name of a month      categories calendar       param mm1  in required   the month number  from 1 to 12       file_comments keyword parameters of string function to specify the format of the month  the C format  can be used       returns the month s name      examples    IDL  name monthname 2       history Sebastien Masson  smasson lodyc jussieu fr                         1 October 2001         FUNCTION monthname   mm1  _extra   ex     compile_opt idl2  strictarrsubs      return  string format C CMoA0 31 mm1 1  _extra   ex  end"); 
     3a[1] = new Array("./Calendar/date2jul.html", "date2jul.pro", "", "             file_comments gives julian day equivalent of a date in yyyymmdd format       categories calendar      param date  in required  date in yyyymmdd format      keyword  GRADS  in optional                   if  1  year   2000   year                 if 50  year   1900   year      returns date in julian day      examples         IDL  jday   juldate 19930124       IDL  print  date2jul 19931205  EQ julday 12 5 1993           1      IDL  print  date2jul 931205 grads  EQ julday 12 5 1993           1      history Sebastien Masson  smasson lodyc jussieu fr                          June 2005      version  Id            function date2jul  date  GRADS   grads       compile_opt idl2  strictarrsubs      year   long date    10000    month   long abs date 100  MOD 100    day   long abs date  MOD 100      if keyword_set grads  then year   year          1900    year GE 50 AND year LE 99           2000    year GE  1 AND year LE 49       return  julday month  day  year  end "); 
     4a[2] = new Array("./Calendar/date2string.html", "date2string.pro", "", "             file_comments create a nice and readable format to print a date      categories calendar  string      param yyyymmdd  in required  the date in the format yyyymmdd      file_comments keyword parameters of string function to specify the format of the month  the C format  can be used      keyword _EXTRA used to pass your keywords to the created procedure       returns a string containing the date in a easy readable format      examples         IDL  print  date2string 19900123       Jan 23  1990      IDL  print  date2string 19900123  format    C CMOA       JAN 23  1990      history Sebastien Masson  smasson lodyc jussieu fr    Creation     update review June 2005 Sebastien Masson       version  Id            FUNCTION date2string  yyyymmdd  _EXTRA   ex       compile_opt idl2  strictarrsubs      sday   strtrim long yyyymmdd  MOD 100  1     smonth   strtrim long yyyymmdd 100  MOD 100  2     syear   strtrim long yyyymmdd 10000  2     res   string format    C CMoa  31 fix smonth 1  _EXTRA   ex                     sday         syear    return  res end"); 
     5a[3] = new Array("./Calendar/daysinmonth.html", "daysinmonth.pro", "", "             file_comments give the number of days in a specific month      categories calendar      param month  in optional      param year  in optional     Year is used only if the  common variable key_caltype    greg     In that case  month and year must have the same number of elements     If not provided  we take month and year from  time  common variable       returns number of days in a month or  1 in case of error      uses cm_4cal              examples    IDL  ndays   daysinmonth 2  2000       history Sebastien Masson  smasson lodyc jussieu fr   2 7 98   update review english new commons: June 2005 Sebastien Masson       version  Id            function daysinmonth  month  year     include commons     compile_opt idl2  strictarrsubs    cm_4cal IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew ENDIF     IF n_elements key_caltype  EQ 0 THEN key_caltype    greg    CASE key_caltype OF      360d : if n_elements month  GT 1 THEN           return  replicate 30  n_elements month  ELSE return  30      noleap :BEGIN       days_in_mth    31  28  31  30  31  30  31  31  30  31  30  31        IF n_elements month  EQ 0 THEN caldat  time  month       return  days_in_mth month 1      END      greg :BEGIN       CASE n_params  OF         0:caldat  time  month  day  year         2:IF n_elements month  NE n_elements year  THEN             return  report month and year must have the same number of elements          ELSE:return  report daysinmonth accept 0 or 2 input parameters        ENDCASE       days_in_mth    31  28  31  30  31  30  31  31  30  31  30  31        return  days_in_mth month 1    leapyr year month EQ 2      END      ELSE:return  report only 3 types of calendar are accepted: greg  360d and noleap    ENDCASE  END "); 
     6a[4] = new Array("./Calendar/jul2date.html", "jul2date.pro", "", "             file_comments gives yyyymmdd date equivalent of a julian day      categories calendar      param jday  in required  julian day      returns date in yyyymmdd format      examples         IDL  print  jul2date julday 12 23 1999           19991223      history Sebastien Masson  smasson lodyc jussieu fr                          June 2005      version  Id            function jul2date  jday     compile_opt idl2  strictarrsubs      caldat  jday  month  day  year    res    10000L year   100L month   day year GE 0              10000L year   100L month   day year LT 0     return  long res  end"); 
     7a[5] = new Array("./Calendar/leapyr.html", "leapyr.pro", "", "         file_comments determine whether the input year is a leap year or not   Very useful for finding number of days in a year    eg  NUM_DAYS_IN_YR   365   leapyr year       categories calendar      param year  in required  year to be tested as a leap year      returns 0 then not a leap year             1 then year is a leap year      uses cm_4cal      examples   IDL  result   leapyr 2000       history     Originally Written by: Trevor Harris  Physics Dept  University of Adelaide   20 09 88           November 2004: correction for century years  S  Masson            Every year divisible by 4 is a leap year           But every year divisible by 100 is NOT a leap year          Unless the year is also divisible by 400  then it is still a         leap year          This means that year 1800  1900  2100  2200  2300 and 2500 are         NOT leap years  while year 2000 and 2400 are leap years             supress the automatic change 89   1989           June 2005 update for new commons  Sebastien Masson         version  Id        function leapyr  year   include commons     compile_opt idl2  strictarrsubs    cm_4cal   yr   long year    IF n_elements key_caltype  EQ 0 THEN key_caltype    greg      IF key_caltype NE  greg  THEN BEGIN      sd   size yr   dimensions      IF sd 0  EQ 0 THEN return  0b ELSE return  bytarr size yr   dimensions    ENDIF ELSE return   yr MOD 4 EQ 0 yr MOD 100 NE 0     yr MOD 400 EQ 0   end"); 
     8a[6] = new Array("./Calendar/monthname.html", "monthname.pro", "", "             file_comments gives the name of a month      categories calendar       param mm1  in required   the month number  from 1 to 12       keyword _EXTRA used to pass your keywords to the created procedure       file_comments keyword parameters of string function to specify the format of the month  the C format  can be used       returns the month s name      examples    IDL  name monthname 2       history Sebastien Masson  smasson lodyc jussieu fr                         1 October 2001      version  Id            FUNCTION monthname   mm1  _EXTRA   ex     compile_opt idl2  strictarrsubs      return  string format C CMoA0 31 mm1 1  _EXTRA   ex  end"); 
    99a[7] = new Array("./Commons/all_cm.html", "all_cm.pro", "", ""); 
    1010a[8] = new Array("./Commons/cm_4cal.html", "cm_4cal.pro", "", ""); 
     
    1515a[13] = new Array("./Commons/cm_general.html", "cm_general.pro", "", ""); 
    1616a[14] = new Array("./Documentation/xmldoc/idlfiles/init_example.html", "init_example.pro", "", ""); 
    17 a[15] = new Array("./ForOldVersion/keep_compatibility.html", "keep_compatibility.pro", "", "     file_comments      1  define key_forgetold   1b   keyword_set flag      2  remove all oldcm_used pro found in  path     3  define and create myuniquetmpdir and add it to  path     4  copy oldcm_full _empty  to myuniquetmpdir oldcm_used pro       categories compatibility with old version      examples   IDL  keep_compatibility   flag       param flag  in optional  1 or 0 to keep or forget the compatibility     uses cm_general      restrictions copy oldcm_full or oldcm_empty must be found in the    path  dir must also be in the  path      history Sebastien Masson  smasson lodyc jussieu fr                         June 2005     PRO keep_compatibility  flag       compile_opt idl2  strictarrsubs    cm_general     version should be at least 6 0     IF fix strmid version release  0  1  LT 6 THEN BEGIN      print                                print                        ERROR       print                                print   This version of SAXO needs at least IDL version 6 0      print                                print                        ERROR       print                                return   ENDIF     IF n_elements myuniquetmpdir  NE 0 THEN BEGIN      path    path   :    expand_path myuniquetmpdir      return   ENDIF      if n_elements flag  eq 0 then flag   1b   keyword_set key_forgetold     1  automatic definition of key_forgetold   key_forgetold   1b   keyword_set flag       2  remove all oldcm_used pro found in  path   to_rm   find oldcm_used    IF to_rm 0  NE  NOT FOUND  THEN file_delete  to_rm     3  define and create myuniquetmpdir and add it to  path   def_myuniquetmpdir     4  copy oldcm_full _empty  to myuniquetmpdir oldcm_used pro    select which file should be copied to oldcm_used pro   IF key_forgetold THEN BEGIN      oldcm   find oldcm_empty      print   We forget the compatibility with the old version    ENDIF ELSE BEGIN      oldcm   find oldcm_full       print   We keep the compatibility with the old version    ENDELSE      oldcm   oldcm 0    IF oldcm EQ  NOT FOUND  THEN BEGIN     print   Error: oldcm_full or oldcm_empty must be found in the  path      stop   ENDIF   copy   file_copy  oldcm  myuniquetmpdir    oldcm_used pro   overwrite     make sure we can make the plots enev if we are using the demo mode     demomode_compatibility      make sure that the common variables are correctly initialized      IF size ccmeshparameters   type  NE 8 THEN BEGIN      computegrid  1  1  1  1  1  1   fullcgrid  cm_4data         varname         vargrid    T      vardate    0      varexp         varunit         valmask   1 e20   ENDIF       return END"); 
     17a[15] = new Array("./ForOldVersion/keep_compatibility.html", "keep_compatibility.pro", "", "     file_comments      1  define key_forgetold   1b   keyword_set flag      2  remove all oldcm_used pro found in  path     3  define and create myuniquetmpdir and add it to  path     4  copy oldcm_full _empty  to myuniquetmpdir oldcm_used pro       categories compatibility with old version      examples   IDL  keep_compatibility   flag       param flag  in optional  1 or 0 to keep or forget the compatibility     uses cm_general      restrictions copy oldcm_full or oldcm_empty must be found in the    path  dir must also be in the  path      history Sebastien Masson  smasson lodyc jussieu fr                         June 2005     PRO keep_compatibility  flag       compile_opt idl2  strictarrsubs    cm_general     version should be at least 6 0     IF fix strmid version release  0  1  LT 6 THEN BEGIN      print                                print                        ERROR       print                                print   This version of SAXO needs at least IDL version 6 0      print                                print                        ERROR       print                                return   ENDIF   are we using the virtual machine    IF n_elements key_vm  EQ 0 THEN        key_vm   total file_test expand_path path   array keep_compatibility pro  EQ 0     IF n_elements myuniquetmpdir  NE 0 THEN BEGIN      path    path   :    expand_path myuniquetmpdir      return   ENDIF      if n_elements flag  eq 0 then flag   1b   keyword_set key_forgetold     1  automatic definition of key_forgetold   key_forgetold   1b   keyword_set flag       2  remove all oldcm_used pro found in  path   to_rm   find oldcm_used    IF to_rm 0  NE  NOT FOUND  THEN file_delete  to_rm     3  define and create myuniquetmpdir and add it to  path   def_myuniquetmpdir   if we are using the virtual machine  there is no need to do this   IF NOT keyword_set key_vm  THEN BEGIN     4  copy oldcm_full _empty  to myuniquetmpdir oldcm_used pro    select which file should be copied to oldcm_used pro     IF key_forgetold THEN BEGIN        oldcm   find oldcm_empty        print   We forget the compatibility with the old version      ENDIF ELSE BEGIN        oldcm   find oldcm_full         print   We keep the compatibility with the old version      ENDELSE        oldcm   oldcm 0      IF oldcm EQ  NOT FOUND  THEN BEGIN       print   Error: oldcm_full or oldcm_empty must be found in the  path        stop     ENDIF   copy     file_copy  oldcm  myuniquetmpdir    oldcm_used pro   overwrite     make sure we can make the plots even if we are using the demo mode       demomode_compatibility   ENDIF      make sure that the common variables are correctly initialized      IF size ccmeshparameters   type  NE 8 THEN BEGIN      computegrid  1  1  1  1  1  1   fullcgrid  cm_4data         varname         vargrid    T      vardate    0      varexp         varunit         valmask   1 e20   ENDIF       return END"); 
    1818a[16] = new Array("./ForOldVersion/oldcm_empty.html", "oldcm_empty.pro", "", ""); 
    1919a[17] = new Array("./ForOldVersion/oldcm_full.html", "oldcm_full.pro", "", ""); 
     
    2121a[19] = new Array("./ForOldVersion/updatenew.html", "updatenew.pro", "", ""); 
    2222a[20] = new Array("./ForOldVersion/updateold.html", "updateold.pro", "", ""); 
    23 a[21] = new Array("./Grid/computegrid.html", "computegrid.pro", "", "             file_comments compute the grid parameters from cm_4mesh common:           computegrid  startx  starty  stepx  stepy  nx  ny         computegrid  startx  starty  stepx  stepy         computegrid  xaxis   xaxis  yaxis   yaxis         or a suitable mix      horizontal parameters:         glam tf  gphi tf  e1t and e2t      and if FULLCGRID keyword is defined:         glam uv  gphi uv  e1 uvf  and e2 uvf            verticals parameters:         gdep tw  e3 tw      masks: tmask          and if FULLCGRID keyword is defined: uv maskred fmaskred xy      triangulation: triangles_list     key_ parameters:         key_shift  key_periodic  key_zreverse  key_yreverse          key_stride  key_onearth  key_partialstep      categories grid            param startx  in required  scalar  x starting point          param starty  in required  scalar  y starting point          param stepxin  in required  scalar or vector: x direction step  must be   0               if vector nx is not used          param stepyin  in required  scalar or vector: y direction step                 could be   0  south to north  or  lon1 and lon2   lon1 le 360         key_shift will be defined automaticaly computed according to         glamboundary by using the FIRST LINE of glamt but          key_shift will   0 only if key_periodic   1             keyword MASK to specify the mask with a 2 or 3 dimension array            keyword 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            keyword 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              keyword  PLAIN force PERIODIC   0  SHIFT   0  STRIDE    1  1  1  and         suppress the automatic redefinition of the domain in case of          x periodicity overlap  y periodicity overlap  ORCA type only          and mask border to 0             keyword SHIFT   scalar to force the manual definition of key_shift  By         debault  key_shift is automaticaly computed according to         glamboundary  when defined  by using the FIRST LINE of glamt  if         key_periodic 0 then in any case key_shift   0              keyword STRCALLING a string containing the calling command used to         call computegrid  this is used by xxx pro             keyword STRIDE  a 3 elements vector to specify the stride in x  y  z         direction  Default definition is  1  1  1  The resulting value         will be stored in the common  cm_4mesh  variable key_stride            keyword XAXIS to specify longitude1 with a 1 or 2 dimension array  in          this case startx  stepx and nx are not used but could be         necessary if the y axis is not defined with yaxis  It must be         possible to sort the first line of xaxis in the increasing         order by shifting its elements             keyword YAXIS to specify latitudes with a 1 or 2 dimension array  in          this case starty  stepy and ny are not used but starty and         stepy could be necessary if the x axis is not defined with xaxis          It must be sorted in the increasing or deceasing order          along each column if 2d array             keyword  XYINDEX activate to specify that the horizontal grid should          be simply defined by using the index of the points             xaxis   findgen nx  and yaxis   findgen ny          using this keyword forces key_onearth 0            keyword XMINMESH           keyword YMINMESH           keyword ZMINMESH          to define the common variables i xyz minmesh         used to define the grid only in a zoomed part of the original         grid  Defaut values are 0L  max value is  XYZ MAXMESH            keyword XMAXMESH           keyword YMAXMESH           keyword ZMAXMESH          to define the common variables i xyz maxmesh         used to define the grid only in a zoomed part of the original         grid  Defaut values are jp ijk glo 1  max value is         jp ijk glo 1  if  XYZ MAXMESH is negative  then we define         i xyz maxmesh as jp ijk glo   1    XYZ MAXMESH instead of          XYZ MAXMESH              keyword ZAXIS to specify the vertical axis with a 1 dimension         array  Must be sorted in the increasing or deceasing order      uses cm_4mesh cm_4data cm_4cal      restrictions if the grid has x y periodicity orverlap and or if      the mask has 0 everywhere at the border  like a close sea  and      if  we did not activate  plain and xminmesh  xmaxmesh  yminmesh       ymaxmesh keywords are defined to their default values  we redefine      xminmesh  xmaxmesh  yminmesh  ymaxmesh in order to reove the      overlapping part and or to open the domain  avoid ti be forced      to use cell_fill   1       restrictions FUV points definition       history Sebastien Masson  smasson lodyc jussieu fr                         2000 04 20    Sept 2004  several bug fixs to suit C grid type     Aug 2005  rewritte almost everything          PRO computegrid  startx  starty  stepxin  stepyin  nxin  nyin                      XAXIS   xaxis  YAXIS   yaxis  ZAXIS   zaxis                      MASK   mask  GLAMBOUNDARY   glamboundary                      XMINMESH   xminmesh  XMAXMESH   xmaxmesh                      YMINMESH   yminmesh  YMAXMESH   ymaxmesh                      ZMINMESH   zminmesh  ZMAXMESH   zmaxmesh                      ONEARTH   onearth  PERIODIC   periodic                      PLAIN   plain  SHIFT   shift  STRIDE   stride                      FULLCGRID   fullcgrid  XYINDEX   xyindex                      FBASE2TBASE   fbase2tbase  STRCALLING   strcalling                      _extra   ex        compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       time1   systime 1               for key_performance         Check input parameters       xaxis related parameters     if n_elements xaxis  NE 0 then BEGIN      CASE  size xaxis 0  OF       0:nx   1L       1:nx    size xaxis 1        2:nx    size xaxis 1      ENDCASE   ENDIF ELSE BEGIN      IF n_elements startx  EQ 0 THEN BEGIN        dummy   report If xaxis is not given  startx must be defined        return     ENDIF     CASE n_elements stepxin  OF       0:BEGIN          dummy   report If xaxis is not given  stepxin must be defined          return       END       1:BEGIN          IF n_elements nxin  EQ 0 THEN BEGIN            dummy   report If xaxis is not given and stepxin has only one element  nx must be defined            return         ENDIF ELSE nx   nxin       END       ELSE:nx   n_elements stepxin          ENDCASE   ENDELSE      yaxis related parameters     if n_elements yaxis  NE 0 then BEGIN      CASE  size yaxis 0  OF       0:ny   1L       1:ny    size yaxis 1        2:ny    size yaxis 2      ENDCASE   ENDIF ELSE BEGIN      IF n_elements starty  EQ 0 THEN BEGIN        dummy   report If yaxis is not given  starty must be defined        return     ENDIF     CASE n_elements stepyin  OF       0:BEGIN          dummy   report If yaxis is not given  stepyin must be defined          return       END       1:BEGIN          IF n_elements nyin  EQ 0 THEN BEGIN            dummy   report If yaxis is not given and stepyin has only one element  ny must be defined            return         ENDIF ELSE ny   nyin       END       ELSE:ny   n_elements stepyin          ENDCASE   ENDELSE     zaxis related parameters     if n_elements zaxis  NE 0 then BEGIN      CASE  size zaxis 0  OF       0:nz   1L       1:nz    size zaxis 1        ELSE:BEGIN         print   not coded          stop       END     ENDCASE   ENDIF ELSE nz   1L       Others automatic definitions        jpiglo   long nx    jpjglo   long ny    jpkglo   long nz      impact of plain keyword:     IF keyword_set plain  THEN BEGIN     periodic   0     shift   0     stride    1  1  1    ENDIF     IF n_elements xminmesh  NE 0 THEN ixminmesh   long xminmesh 0  ELSE ixminmesh    0l   IF n_elements xmaxmesh  NE 0 THEN ixmaxmesh   long xmaxmesh 0  ELSE ixmaxmesh    jpiglo 1   IF n_elements yminmesh  NE 0 THEN iyminmesh   long yminmesh 0  ELSE iyminmesh    0l   IF n_elements ymaxmesh  NE 0 THEN iymaxmesh   long ymaxmesh 0  ELSE iymaxmesh    jpjglo 1   IF n_elements zminmesh  NE 0 THEN izminmesh   long zminmesh 0  ELSE izminmesh    0l   IF n_elements zmaxmesh  NE 0 THEN izmaxmesh   long zmaxmesh 0  ELSE izmaxmesh    jpkglo 1     iymaxmesh   iymaxmesh keyword_set fbase2tbase       IF ixmaxmesh LT 0 THEN ixmaxmesh   jpiglo  1   ixmaxmesh   IF iymaxmesh LT 0 THEN iymaxmesh   jpjglo  1   iymaxmesh   IF izmaxmesh LT 0 THEN izmaxmesh   jpkglo  1   izmaxmesh   avoid basics errors    ixmaxmesh   0   ixmaxmesh  ixminmesh  iymaxmesh  iyminmesh  izmaxmesh  izminmesh  temporary glamf   gphif  temporary glamu   gphiu  temporary glamv   gphiv   gdept stepz 2      ENDIF ELSE BEGIN       stepz   1        gdepw   gdept     ENDELSE       e3 tw :         e3t   stepz     IF n_elements stepz  GT 1 THEN BEGIN       e3w   0 5 stepz shift stepz  1        e3w 0    0 5 e3t 0      ENDIF ELSE e3w   e3t       Mask       defaut mask eq 1   if NOT keyword_set mask  then mask    1     if mask 0  NE  1 then BEGIN     tmask   byte mask ixminmesh:ixmaxmesh  iyminmesh:iymaxmesh  izminmesh:izmaxmesh      tmask   reform tmask  jpi  jpj  jpk   over      if key_shift NE 0 then tmask   shift tmask  key_shift  0  0    because tmask   reverse tmask  2  is not working if the 3rd   dimension of tmask   1  we call reform      IF jpk EQ 1 THEN tmask   reform tmask   over      IF key_yreverse EQ 1 THEN tmask   reverse tmask  2      IF jpk EQ 1 THEN tmask   reform tmask  jpi  jpj  jpk   over      IF key_zreverse EQ 1 THEN tmask   reverse tmask  3      IF jpk EQ 1 THEN tmask   reform tmask  jpi  jpj  jpk   over      IF keyword_set fullcgrid  THEN BEGIN       IF keyword_set key_periodic  THEN BEGIN         msk   tmask shift tmask   1  0  0          umaskred   msk jpi 1            ENDIF ELSE umaskred   tmask jpi 1            vmaskred   tmask  jpj 1          fmaskredy   tmask jpi 1            fmaskredx   tmask  jpj 1        ENDIF    ENDIF ELSE BEGIN      tmask   replicate 1b  jpi  jpj  jpk      IF keyword_set fullcgrid  THEN BEGIN       umaskred    replicate 1b  jpj  jpk        vmaskred    replicate 1b  jpi  jpk        fmaskredy   replicate 1b  jpj  jpk        fmaskredx   replicate 1b  jpi  jpk      ENDIF    ENDELSE     IF jpi GT 2 AND jpj GT 2 AND NOT keyword_set plain         AND ixminmesh EQ 0l AND ixmaxmesh eq jpiglo 1        AND iyminmesh EQ 0l AND iymaxmesh eq jpjglo 1        AND total tmask  0    EQ 0 AND total tmask  jpj 1    EQ 0        AND total tmask 0      EQ 0 AND total tmask jpi 1      EQ 0 THEN BEGIN         xminmesh   1         xmaxmesh    1         yminmesh   1         ymaxmesh    1         computegrid  XAXIS   glamt  YAXIS   gphit  ZAXIS   zaxis                          MASK   mask  GLAMBOUNDARY   glamboundary                          XMINMESH   xminmesh  XMAXMESH   xmaxmesh                          YMINMESH   yminmesh  YMAXMESH   ymaxmesh                          ZMINMESH   zminmesh  ZMAXMESH   zmaxmesh                          ONEARTH   onearth  PERIODIC   periodic                          PLAIN   plain  SHIFT   shift  STRIDE   stride                          FULLCGRID   fullcgrid  XYINDEX   xyindex                          FBASE2TBASE   fbase2tbase  STRCALLING   strcalling                          _extra   ex          return   ENDIF      IF NOT keyword_set fullcgrid  THEN BEGIN     umaskred    values f_nan     vmaskred    values f_nan     fmaskredy    values f_nan     fmaskredx    values f_nan   ENDIF       stride        IF total key_stride  GT 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       glamt    temporary glamt 0: :stride 0  0: :stride 1      gphit    temporary gphit 0: :stride 0  0: :stride 1      e1t    temporary e1t 0: :stride 0  0: :stride 1      e2t    temporary e2t 0: :stride 0  0: :stride 1      tmask    temporary tmask 0: :stride 0  0: :stride 1  0: :stride 2      gdept   gdept 0: :stride 2      gdepw   gdepw 0: :stride 2      e3t   e3t 0: :stride 2      e3w   e3w 0: :stride 2    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       IF jpj EQ 1 THEN BEGIN        glamt   reform glamt  jpi  jpj   over        gphit   reform gphit  jpi  jpj   over        glamf   reform glamf  jpi  jpj   over        gphif   reform gphif  jpi  jpj   over        e1t   reform e1t  jpi  jpj   over        e2t   reform e2t  jpi  jpj   over      ENDIF       IF keyword_set fullcgrid  THEN BEGIN       glamu    temporary glamu 0: :stride 0  0: :stride 1        gphiu    temporary gphiu 0: :stride 0  0: :stride 1        e1u    temporary e1u 0: :stride 0  0: :stride 1        e2u    temporary e2u 0: :stride 0  0: :stride 1        glamv    temporary glamv 0: :stride 0  0: :stride 1        gphiv    temporary gphiv 0: :stride 0  0: :stride 1        e1v    temporary e1v 0: :stride 0  0: :stride 1        e2v    temporary e2v 0: :stride 0  0: :stride 1        e1f    temporary e1f 0: :stride 0  0: :stride 1        e2f    temporary e2f 0: :stride 0  0: :stride 1        umaskred    temporary umaskred 0  0: :stride 1  0: :stride 2        vmaskred    temporary vmaskred 0: :stride 0  0  0: :stride 2        fmaskredy    temporary fmaskredy 0  0: :stride 1  0: :stride 2        fmaskredx    temporary fmaskredx 0: :stride 0  0  0: :stride 2        IF jpj EQ 1 THEN BEGIN          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          e1f   reform e1f  jpi  jpj   over          e2f   reform e2f  jpi  jpj   over        ENDIF     ENDIF   ENDIF       apply all the grid parameters        updateold   domdef       Triangulation       IF total tmask  EQ jpi jpj jpk       AND NOT keyword_set key_irregular  THEN triangles_list    1     ELSE BEGIN   are we using ORCA2       IF jpiglo EQ 182 AND jpi EQ 181 AND jpjglo EQ 149 AND jpj EQ 148 THEN          triangles_list   triangule  ELSE triangles_list   triangule keep_cont    ENDELSE        time axis  default definition        IF n_elements time  EQ 0 OR n_elements jpt  EQ 0 THEN BEGIN      jpt   1     time   0   ENDIF     IF NOT keyword_set key_forgetold  THEN BEGIN  updateold   ENDIF     grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN      IF n_elements ccmeshparameters  EQ 0 THEN strcalling    computegrid        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     ccreadparameters    funclec_name: read_ncdf                jpidta:jpidta  jpjdta:jpjdta  jpkdta:jpkdta               ixmindta:ixmindta  ixmaxdta:ixmaxdta               iymindta:iymindta  iymaxdta:iymaxdta               izmindta:izmindta  izmaxdta:izmaxdta      IF keyword_set key_performance  EQ 1 THEN       print   time computegrid  systime 1 time1     return end "); 
    24 a[22] = new Array("./Grid/micromeshmask.html", "micromeshmask.pro", "", "       file_comments reduce the size of the NetCDF meshmask created by OPA by   using bit  and not byte  format for the masks and the foat format   for the other fields        categories for OPA meshmask files      examples    IDL  reducencmeshmask  ncfilein  ncfileout       examples       IDL  meshdir d1fes2 raid2 smasson DATA ORCA05       IDL  micromeshmask   meshmask_ORCA_R05 nc iodir meshdir      history        July 2004 Sebastien Masson  smasson lodyc jussieu fr        PRO ncdf_transfer  inid  outid  inname  outname     compile_opt idl2  strictarrsubs     IF n_elements outname  EQ 0 THEN outname   inname   ncdf_varget  inid  inname  zzz   ncdf_varput  outid  outname  float reform zzz   over    RETURN END           keyword IODIR to define the files path          param ncfilein  in required         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            param ncfileout  in required  the name of the uniq reduced meshmask file  default        definition is micromeshmask nc     PRO micromeshmask  ncfilein  ncfileout  IODIR   iodir       compile_opt idl2  strictarrsubs     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   for the mask  we use  its byte  representation   its y dimension   will be extended to be a multiple of 8  then it will be divided by   8    if  jpj mod 8  eq 0 the jpj_m jpi 8 else jpj_m jpi 8   1   jpj_m    jpj 7 8   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        dummy   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    micromeshmask 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    dimidy_m   ncdf_dimdef cdfidout   y_m  jpj_m    dimidz   ncdf_dimdef cdfidout   z  jpk    global attributs   ncdf_attput  cdfidout   IDL_Program_Name   micromeshmask 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 BEGIN     varid    varid  ncdf_vardef cdfidout  msklist m                                       dimidx  dimidy_m  dimidz   byte        ncdf_attput  cdfidout  varid n_elements varid 1               Comment   the mask is stored as bit  You must use              the binary representation of the byte to get back the data    ENDFOR       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       zzz   byte temporary zzz    zzz must contain only 0 or 1       zzz   temporary zzz  MOD 2   we transpose zzz because we need to work with the y dimension as the   first dimension       zzz   transpose temporary zzz    extend jpj to be a multiple of 8       jpjadd   jpj_m 8 jpj       IF jpjadd NE 0 THEN zzz    temporary zzz  bytarr jpjadd  jpi    reform zzz  to look like output of binary pro       zzz   reform zzz  8  1  jpj_m  jpi   over    convert into  its byte form        zzz   inverse_binary temporary zzz        ncdf_varput  cdfidout  msklist m  transpose temporary zzz              offset    0  0  k  count    jpi  jpj_m  1      ENDFOR   ENDFOR       ncdf_close  cdfid   ncdf_close  cdfidout    RETURN END"); 
    25 a[23] = new Array("./Grid/n128gaussian.html", "n128gaussian.pro", "", "     file_comments compute the latitudes of the n128 gaussian grid  See:   http: www ecmwf int products data technical gaussian n128FIS html      categories grid      examples    IDL  lat n128gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n128gaussian       compile_opt idl2  strictarrsubs              latitude   reduced     regular  latitude             number     points      points                              n128        1          18         512   89 46282                  2          25         512   88 76695                  3          36         512   88 06697                  4          40         512   87 36606                  5          45         512   86 66480                  6          50         512   85 96337                  7          60         512   85 26184                  8          64         512   84 56026                  9          72         512   83 85863                  10          72         512   83 15698                  11          80         512   82 45531                  12          90         512   81 75363                  13          90         512   81 05194                  14         100         512   80 35023                  15         108         512   79 64852                  16         120         512   78 94681                  17         120         512   78 24509                  18         125         512   77 54336                  19         128         512   76 84163                  20         144         512   76 13990                  21         144         512   75 43817                  22         150         512   74 73644                  23         160         512   74 03470                  24         160         512   73 33296                  25         180         512   72 63123                  26         180         512   71 92949                  27         180         512   71 22774                  28         192         512   70 52600                  29         192         512   69 82426                  30         200         512   69 12252                  31         216         512   68 42077                  32         216         512   67 71903                  33         216         512   67 01728                  34         225         512   66 31554                  35         240         512   65 61379                  36         240         512   64 91204                  37         240         512   64 21030                  38         250         512   63 50855                  39         250         512   62 80680                  40         256         512   62 10505                  41         270         512   61 40330                  42         270         512   60 70156                  43         288         512   59 99981                  44         288         512   59 29806                  45         288         512   58 59631                  46         300         512   57 89456                  47         300         512   57 19281                  48         320         512   56 49106                  49         320         512   55 78931                  50         320         512   55 08756                  51         320         512   54 38581                  52         324         512   53 68406                  53         360         512   52 98231                  54         360         512   52 28056                  55         360         512   51 57881                  56         360         512   50 87705                  57         360         512   50 17530                  58         360         512   49 47355                  59         360         512   48 77180                  60         375         512   48 07005                  61         375         512   47 36830                  62         375         512   46 66655                  63         375         512   45 96479                  64         384         512   45 26304                  65         384         512   44 56129                  66         400         512   43 85954                  67         400         512   43 15779                  68         400         512   42 45604                  69         400         512   41 75428                  70         405         512   41 05253                  71         432         512   40 35078                  72         432         512   39 64903                  73         432         512   38 94728                  74         432         512   38 24552                  75         432         512   37 54377                  76         432         512   36 84202                  77         432         512   36 14027                  78         450         512   35 43851                  79         450         512   34 73676                  80         450         512   34 03501    n128    n128              81         450         512   33 33326              82         450         512   32 63150              83         480         512   31 92975              84         480         512   31 22800              85         480         512   30 52625              86         480         512   29 82449              87         480         512   29 12274              88         480         512   28 42099              89         480         512   27 71924              90         480         512   27 01748              91         480         512   26 31573              92         480         512   25 61398              93         486         512   24 91223              94         486         512   24 21047              95         486         512   23 50872              96         500         512   22 80697              97         500         512   22 10521              98         500         512   21 40346              99         500         512   20 70171              100         500         512   19 99996              101         500         512   19 29820              102         500         512   18 59645              103         512         512   17 89470              104         512         512   17 19294              105         512         512   16 49119              106         512         512   15 78944              107         512         512   15 08768              108         512         512   14 38593              109         512         512   13 68418              110         512         512   12 98243              111         512         512   12 28067              112         512         512   11 57892              113         512         512   10 87717              114         512         512   10 17541              115         512         512    9 47366              116         512         512    8 77191              117         512         512    8 07016              118         512         512    7 36840              119         512         512    6 66665              120         512         512    5 96490              121         512         512    5 26314              122         512         512    4 56139              123         512         512    3 85964              124         512         512    3 15788              125         512         512    2 45613              126         512         512    1 75438              127         512         512    1 05262              128         512         512    0 35087      n128   reform n128  4  128   over    n128   reform n128 3     over    n128    n128   reverse n128     return  n128 end"); 
    26 a[24] = new Array("./Grid/n160gaussian.html", "n160gaussian.pro", "", "       file_comments compute the latitudes of the n160 gaussian grid  See:   http: www ecmwf int products data technical gaussian n160FIS html      categories grid      examples    IDL lat n160gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n160gaussian       compile_opt idl2  strictarrsubs              latitude   reduced     regular  latitude             number     points      points                              n160        1          18         640   89 57009                  2          25         640   89 01318                  3          36         640   88 45297                  4          40         640   87 89203                  5          45         640   87 33080                  6          50         640   86 76944                  7          60         640   86 20800                  8          64         640   85 64651                  9          72         640   85 08499                  10          72         640   84 52345                  11          80         640   83 96190                  12          90         640   83 40033                  13          90         640   82 83876                  14          96         640   82 27718                  15         108         640   81 71559                  16         120         640   81 15400                  17         120         640   80 59240                  18         125         640   80 03080                  19         128         640   79 46920                  20         135         640   78 90760                  21         144         640   78 34600                  22         150         640   77 78439                  23         160         640   77 22278                  24         160         640   76 66117                  25         180         640   76 09956                  26         180         640   75 53795                  27         180         640   74 97634                  28         192         640   74 41473                  29         192         640   73 85311                  30         200         640   73 29150                  31         216         640   72 72988                  32         216         640   72 16827                  33         225         640   71 60665                  34         225         640   71 04504                  35         240         640   70 48342                  36         240         640   69 92181                  37         243         640   69 36019                  38         250         640   68 79857                  39         256         640   68 23695                  40         270         640   67 67534                  41         270         640   67 11372                  42         288         640   66 55210                  43         288         640   65 99048                  44         288         640   65 42886                  45         300         640   64 86725                  46         300         640   64 30563                  47         320         640   63 74401                  48         320         640   63 18239                  49         320         640   62 62077                  50         320         640   62 05915                  51         324         640   61 49753                  52         360         640   60 93591                  53         360         640   60 37429                  54         360         640   59 81267                  55         360         640   59 25105                  56         360         640   58 68943                  57         360         640   58 12781                  58         375         640   57 56619                  59         375         640   57 00457                  60         375         640   56 44295                  61         384         640   55 88133                  62         384         640   55 31971                  63         400         640   54 75809                  64         400         640   54 19647                  65         400         640   53 63485                  66         405         640   53 07323                  67         432         640   52 51161                  68         432         640   51 94999                  69         432         640   51 38837                  70         432         640   50 82675                  71         432         640   50 26513                  72         450         640   49 70351                  73         450         640   49 14189                  74         450         640   48 58026                  75         450         640   48 01864                  76         480         640   47 45702                  77         480         640   46 89540                  78         480         640   46 33378                  79         480         640   45 77216                  80         480         640   45 21054    n160    n160              81         480         640   44 64892              82         480         640   44 08730              83         500         640   43 52567              84         500         640   42 96405              85         500         640   42 40243              86         500         640   41 84081              87         500         640   41 27919              88         512         640   40 71757              89         512         640   40 15595              90         540         640   39 59433              91         540         640   39 03270              92         540         640   38 47108              93         540         640   37 90946              94         540         640   37 34784              95         540         640   36 78622              96         540         640   36 22460              97         540         640   35 66298              98         576         640   35 10136              99         576         640   34 53973              100         576         640   33 97811              101         576         640   33 41649              102         576         640   32 85487              103         576         640   32 29325              104         576         640   31 73163              105         576         640   31 17000              106         576         640   30 60838              107         576         640   30 04676              108         600         640   29 48514              109         600         640   28 92352              110         600         640   28 36190              111         600         640   27 80028              112         600         640   27 23865              113         600         640   26 67703              114         600         640   26 11541              115         600         640   25 55379              116         600         640   24 99217              117         640         640   24 43055              118         640         640   23 86892              119         640         640   23 30730              120         640         640   22 74568              121         640         640   22 18406              122         640         640   21 62244              123         640         640   21 06082              124         640         640   20 49919              125         640         640   19 93757              126         640         640   19 37595              127         640         640   18 81433              128         640         640   18 25271              129         640         640   17 69109              130         640         640   17 12946              131         640         640   16 56784              132         640         640   16 00622              133         640         640   15 44460              134         640         640   14 88298              135         640         640   14 32136              136         640         640   13 75973              137         640         640   13 19811              138         640         640   12 63649              139         640         640   12 07487              140         640         640   11 51325              141         640         640   10 95162              142         640         640   10 39000              143         640         640    9 82838              144         640         640    9 26676              145         640         640    8 70514              146         640         640    8 14352              147         640         640    7 58189              148         640         640    7 02027              149         640         640    6 45865              150         640         640    5 89703              151         640         640    5 33541              152         640         640    4 77379              153         640         640    4 21216              154         640         640    3 65054              155         640         640    3 08892              156         640         640    2 52730              157         640         640    1 96568              158         640         640    1 40405              159         640         640    0 84243              160         640         640    0 28081      n160   reform n160  4  160   over    n160   reform n160 3     over    n160    n160   reverse n160     return  n160 end"); 
    27 a[25] = new Array("./Grid/n256gaussian.html", "n256gaussian.pro", "", "       file_comments compute the latitudes of the n256 gaussian grid  See:   http: www ecmwf int products data technical gaussian n256FIS html      categories grid      examples   IDL  lat n256gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n256gaussian       compile_opt idl2  strictarrsubs             latitude   reduced     regular  latitude            number     points      points                             n256        1          18        1024   89 73115                  2          25        1024   89 38287                  3          32        1024   89 03254                  4          40        1024   88 68175                  5          45        1024   88 33077                  6          50        1024   87 97972                  7          60        1024   87 62861                  8          64        1024   87 27748                  9          72        1024   86 92632                  10          72        1024   86 57515                  11          75        1024   86 22398                  12          81        1024   85 87279                  13          90        1024   85 52160                  14          96        1024   85 17041                  15         100        1024   84 81921                  16         108        1024   84 46801                  17         120        1024   84 11681                  18         120        1024   83 76560                  19         125        1024   83 41440                  20         135        1024   83 06319                  21         144        1024   82 71198                  22         150        1024   82 36077                  23         160        1024   82 00956                  24         160        1024   81 65835                  25         180        1024   81 30714                  26         180        1024   80 95593                  27         180        1024   80 60471                  28         192        1024   80 25350                  29         192        1024   79 90229                  30         200        1024   79 55107                  31         216        1024   79 19986                  32         216        1024   78 84864                  33         216        1024   78 49743                  34         225        1024   78 14621                  35         240        1024   77 79500                  36         240        1024   77 44378                  37         243        1024   77 09256                  38         250        1024   76 74135                  39         256        1024   76 39013                  40         270        1024   76 03891                  41         270        1024   75 68770                  42         288        1024   75 33648                  43         288        1024   74 98526                  44         288        1024   74 63405                  45         300        1024   74 28283                  46         300        1024   73 93161                  47         320        1024   73 58040                  48         320        1024   73 22918                  49         320        1024   72 87796                  50         324        1024   72 52674                  51         360        1024   72 17552                  52         360        1024   71 82431                  53         360        1024   71 47309                  54         360        1024   71 12187                  55         360        1024   70 77065                  56         360        1024   70 41944                  57         375        1024   70 06822                  58         375        1024   69 71700                  59         384        1024   69 36578                  60         384        1024   69 01456                  61         400        1024   68 66334                  62         400        1024   68 31213                  63         400        1024   67 96091                  64         432        1024   67 60969                  65         432        1024   67 25847                  66         432        1024   66 90725                  67         432        1024   66 55603                  68         432        1024   66 20482                  69         450        1024   65 85360                  70         450        1024   65 50238                  71         450        1024   65 15116                  72         480        1024   64 79994                  73         480        1024   64 44872                  74         480        1024   64 09750                  75         480        1024   63 74629                  76         480        1024   63 39507                  77         486        1024   63 04385                  78         500        1024   62 69263                  79         500        1024   62 34141                  80         500        1024   61 99019    n256    n256              81         512        1024   61 63897              82         512        1024   61 28776              83         540        1024   60 93654              84         540        1024   60 58532              85         540        1024   60 23410              86         540        1024   59 88288              87         540        1024   59 53166              88         576        1024   59 18044              89         576        1024   58 82922              90         576        1024   58 47800              91         576        1024   58 12679              92         576        1024   57 77557              93         576        1024   57 42435              94         600        1024   57 07313              95         600        1024   56 72191              96         600        1024   56 37069              97         600        1024   56 01947              98         600        1024   55 66825              99         640        1024   55 31703              100         640        1024   54 96581              101         640        1024   54 61460              102         640        1024   54 26338              103         640        1024   53 91216              104         640        1024   53 56094              105         640        1024   53 20972              106         640        1024   52 85850              107         648        1024   52 50728              108         675        1024   52 15606              109         675        1024   51 80484              110         675        1024   51 45362              111         675        1024   51 10241              112         675        1024   50 75119              113         675        1024   50 39997              114         720        1024   50 04875              115         720        1024   49 69753              116         720        1024   49 34631              117         720        1024   48 99509              118         720        1024   48 64387              119         720        1024   48 29265              120         720        1024   47 94143              121         720        1024   47 59021              122         720        1024   47 23899              123         729        1024   46 88778              124         729        1024   46 53656              125         750        1024   46 18534              126         750        1024   45 83412              127         750        1024   45 48290              128         750        1024   45 13168              129         750        1024   44 78046              130         768        1024   44 42924              131         768        1024   44 07802              132         768        1024   43 72680              133         768        1024   43 37558              134         800        1024   43 02436              135         800        1024   42 67315              136         800        1024   42 32193              137         800        1024   41 97071              138         800        1024   41 61949              139         800        1024   41 26827              140         800        1024   40 91705              141         800        1024   40 56583              142         810        1024   40 21461              143         810        1024   39 86339              144         864        1024   39 51217              145         864        1024   39 16095              146         864        1024   38 80973              147         864        1024   38 45851              148         864        1024   38 10730              149         864        1024   37 75608              150         864        1024   37 40486              151         864        1024   37 05364              152         864        1024   36 70242              153         864        1024   36 35120              154         864        1024   35 99998              155         864        1024   35 64876              156         864        1024   35 29754              157         864        1024   34 94632              158         900        1024   34 59510              159         900        1024   34 24388              160         900        1024   33 89266    n256    n256              161         900        1024   33 54145              162         900        1024   33 19023              163         900        1024   32 83901              164         900        1024   32 48779              165         900        1024   32 13657              166         900        1024   31 78535              167         900        1024   31 43413              168         900        1024   31 08291              169         960        1024   30 73169              170         960        1024   30 38047              171         960        1024   30 02925              172         960        1024   29 67803              173         960        1024   29 32681              174         960        1024   28 97559              175         960        1024   28 62438              176         960        1024   28 27316              177         960        1024   27 92194              178         960        1024   27 57072              179         960        1024   27 21950              180         960        1024   26 86828              181         960        1024   26 51706              182         960        1024   26 16584              183         960        1024   25 81462              184         960        1024   25 46340              185         960        1024   25 11218              186         960        1024   24 76096              187         960        1024   24 40974              188         960        1024   24 05852              189         960        1024   23 70731              190         960        1024   23 35609              191         972        1024   23 00487              192         972        1024   22 65365              193         972        1024   22 30243              194         972        1024   21 95121              195         972        1024   21 59999              196        1000        1024   21 24877              197        1000        1024   20 89755              198        1000        1024   20 54633              199        1000        1024   20 19511              200        1000        1024   19 84389              201        1000        1024   19 49267              202        1000        1024   19 14145              203        1000        1024   18 79023              204        1000        1024   18 43902              205        1000        1024   18 08780              206        1000        1024   17 73658              207        1000        1024   17 38536              208        1000        1024   17 03414              209        1000        1024   16 68292              210        1000        1024   16 33170              211        1000        1024   15 98048              212        1024        1024   15 62926              213        1024        1024   15 27804              214        1024        1024   14 92682              215        1024        1024   14 57560              216        1024        1024   14 22438              217        1024        1024   13 87316              218        1024        1024   13 52194              219        1024        1024   13 17073              220        1024        1024   12 81951              221        1024        1024   12 46829              222        1024        1024   12 11707              223        1024        1024   11 76585              224        1024        1024   11 41463              225        1024        1024   11 06341              226        1024        1024   10 71219              227        1024        1024   10 36097              228        1024        1024   10 00975              229        1024        1024    9 65853              230        1024        1024    9 30731              231        1024        1024    8 95609              232        1024        1024    8 60487              233        1024        1024    8 25365              234        1024        1024    7 90244              235        1024        1024    7 55122              236        1024        1024    7 20000              237        1024        1024    6 84878              238        1024        1024    6 49756              239        1024        1024    6 14634              240        1024        1024    5 79512    n256    n256              241        1024        1024    5 44390              242        1024        1024    5 09268              243        1024        1024    4 74146              244        1024        1024    4 39024              245        1024        1024    4 03902              246        1024        1024    3 68780              247        1024        1024    3 33658              248        1024        1024    2 98536              249        1024        1024    2 63415              250        1024        1024    2 28293              251        1024        1024    1 93171              252        1024        1024    1 58049              253        1024        1024    1 22927              254        1024        1024    0 87805              255        1024        1024    0 52683              256        1024        1024    0 17561      n256   reform n256  4  256   over    n256   reform n256 3     over    n256    n256   reverse n256     return  n256 end"); 
    28 a[26] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", "       file_comments compute the latitudes of the n48 gaussian grid  See:   http: www ecmwf int products data technical gaussian n48FIS html      categories grid      examples   IDL  lat n48gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n48gaussian       compile_opt idl2  strictarrsubs              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"); 
    29 a[27] = new Array("./Grid/n80gaussian.html", "n80gaussian.pro", "", "       file_comments compute the latitudes of the n80 gaussian grid  See:   http: www ecmwf int products data technical gaussian n80FIS html      categories grid      examples   IDL  lat n80gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004     FUNCTION n80gaussian       compile_opt idl2  strictarrsubs              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", "", "             file_comments read NetCDF meshmask file created by OPA      categories grid reading      examples   IDL  ncdf_meshread   filename           param filename  in optional  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 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          keyword  CHECKDAT Suppressed  Use micromeshmask pro to create an      appropriate meshmask          keyword 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         keyword 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          keyword 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           keyword STRCALLING a string containing the calling command used to call      computegrid  this is used by xxx pro          keyword 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      uses cm_4mesh cm_4data cm_4cal      restrictions 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       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         compile_opt idl2  strictarrsubs    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        dummy   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"); 
    31 a[29] = new Array("./Grid/restoreboxparam.html", "restoreboxparam.pro", "", "             file_comments restore all the zoom parameters  defined by calling domdef             perviously defined by saveboxparam      examples   IDL  restoreboxparam  filename       param filename  in required  a scalar string defining the file name       uses cm_4mesh and cm_demomode_used if we are in demo mode      restrictions all def_myuniquetmpdir  if myuniquetmpdir is undefined:                    define  create and add it to  path      history Sebastien Masson  smasson lodyc jussieu fr                         July 2005         PRO restoreboxparam  filename     compile_opt idl2  strictarrsubs    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     "); 
    32 a[30] = new Array("./Grid/saveboxparam.html", "saveboxparam.pro", "", "             file_comments save all the zoom parameters  defined by calling domdef             in a file  using save command  located in myuniquetmpdir             common variable defined by def_myuniquetmpdir       examples   IDL  saveboxparam  filename       param filename  in required  a scalar string defining the file name       uses cm_4mesh and cm_demomode_used if we are in demo mode      restrictions call def_myuniquetmpdir  if myuniquetmpdir is undefined:                    define  create and add it to  path      history Sebastien Masson  smasson lodyc jussieu fr                         June 2005         PRO saveboxparam  filename     compile_opt idl2  strictarrsubs    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"); 
    33 a[31] = new Array("./Grid/smallmeshmask.html", "smallmeshmask.pro", "", "         categories for OPA meshmask files      history        July 2004 Sebastien Masson  smasson lodyc jussieu fr        PRO ncdf_transfer  inid  outid  inname  outname     compile_opt idl2  strictarrsubs     IF n_elements outname  EQ 0 THEN outname   inname   ncdf_varget  inid  inname  zzz   ncdf_varput  outid  outname  float reform zzz   over    RETURN END        file_comments 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          keyword IODIR to define the files path          param ncfilein  in required         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            param ncfileout  in optional  the name of the reduced meshmask file  default        definition is smallmeshmask nc      examples      IDL  meshdir d1fes2 raid2 smasson DATA ORCA05       IDL  smallmeshmask   meshmask_ORCA_R05 nc iodir meshdir      categories for OPA meshmask files      history        July 2004 Sebastien Masson  smasson lodyc jussieu fr    PRO smallmeshmask  ncfilein  ncfileout  IODIR   iodir       compile_opt idl2  strictarrsubs     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        dummy   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", "", "       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     compile_opt idl2  strictarrsubs     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           compile_opt idl2  strictarrsubs     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", "", "     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     compile_opt idl2  strictarrsubs    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_fromirr_bilinear_weigaddr.html", "compute_fromirr_bilinear_weigaddr.pro", "", "     file_comments compute the weight and address needed to interpolate data from            an  irregular 2D grid   defined as a grid made of quadrilateral cells             to any grid using the bilinear method         categories interpolation          param olonin  in required  longitudeof the input data         param olat    in required  latitude of the input data         param omsk    in required  land se mask of the input data         param alonin  in required  longitude of the output data         param alat    in required  latitude of the output data         param amsk    in required  land se mask of the output data       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  jpia  jpja   over       restrictions       the input grid must be an  irregular 2D grid  defined as a grid made        of quadrilateral cells which corners positions are defined with olonin and olat       We supposed the data are located on a sphere  with a periodicity along       the longitude       to perform the bilinear interpolation within quadrilateral cells  we       first morph the cell into a square cell and then compute the bilinear       interpolation        if some corners of the cell are land points  their weight is set to 0        and the weight is redistributed on the remaining  water  corners       points located out of the southern and northern boundaries or in cells      containing only land points are set the the same value as their closest neighbor l      history    June 2006: Sebastien Masson  smasson lodyc jussieu fr                PRO compute_fromirr_bilinear_weigaddr  olonin  olat  omsk  alonin  alat  amsk  weig  addr     compile_opt idl2  strictarrsubs      jpia    size alonin   dimensions 0    jpja    size alonin   dimensions 1      jpio    size olonin   dimensions 0    jpjo    size olonin   dimensions 1      longitude  between 0 and 360   alon   alonin MOD 360   out   where alon LT 0     IF out 0  NE  1 THEN alon out    alon out 360   olon   olonin MOD 360   out   where olon LT 0     IF out 0  NE  1 THEN olon out    olon out 360     we work only on the water points   owater   where omsk EQ 1    nowater   n_elements owater     awater   where amsk EQ 1    nawater   n_elements awater       define all cells that have corners located at olon  olat   we define the cell with the address of all corners                3        2                                                                                                                   0        1     alladdr   lindgen jpio  jpjo 1    celladdr   lonarr 4  jpio jpjo 1    celladdr 0      alladdr   celladdr 1      shift alladdr   1    celladdr 2      shift alladdr   jpio   1    celladdr 3      alladdr   jpio     list the cells that have at least 1 ocean point as corner   good   where total omsk celladdr  1  GT 0    keep only those cells    celladdr   celladdr  temporary good      xcell   olon celladdr    minxcell   min xcell  dimension   1  max   maxxcell    ycell   olat celladdr    minycell   min ycell  dimension   1  max   maxycell    foraddr: address of the ocean water cell associated to each atmosphere water point   foraddr   lonarr nawater    forweight: x y position of the atmosphere water point in the ocean water cell   forweight   dblarr nawater  2      Loop on all the water point of the atmosphere   We look for which ocean water cell contains the atmosphere water point     delta   max 360 jpio   180 jpjo  4    FOR n   0L  nawater 1 DO BEGIN   control print     IF  n MOD 5000  EQ 0 THEN print  n   longitute and latitude of the atmosphere water point     xx   alon awater n      yy   alat awater n    1  we reduce the number of ocean cells for which we will try to know if   xx yy is inside       CASE 1 OF   if we are near the norh pole       yy GE  90 delta :BEGIN         lat1   90 2 delta         good   where maxycell GE lat1          onsphere   1       END   if we are near the longitude periodicity area       xx LE delta OR xx GE  360 delta :BEGIN          lat1   yy delta         lat2   yy delta         good   where minxcell LE 2 delta OR maxxcell GE  360 2 delta  AND maxycell GE lat1 AND minycell LE lat2          onsphere   1       END   other cases       ELSE:BEGIN         lon1   xx delta         lon2   xx delta         lat1   yy delta         lat2   yy delta         good   where maxxcell GE lon1 AND minxcell LE lon2 AND maxycell GE lat1 AND minycell le lat2    ORCA cases : orca grid is irregular only northward of 40N         CASE 1 OF           jpio EQ 92   AND  jpjo EQ 76   OR jpjo EQ 75   OR jpjo EQ 74   :onsphere   yy GT 40           jpio EQ 180  AND  jpjo EQ 149  OR jpjo EQ 148  OR jpjo EQ 147  :onsphere   yy GT 40           jpio EQ 720  AND  jpjo EQ 522  OR jpjo EQ 521  OR jpjo EQ 520  :onsphere   yy GT 40           jpio EQ 1440 AND  jpjo EQ 1021 OR jpjo EQ 1020 OR jpjo EQ 1019 :onsphere   yy GT 40           ELSE:onsphere   1         ENDCASE       END     ENDCASE   we found a short list of possible ocean water cells containing the atmosphere water point     IF good 0  NE  1 THEN BEGIN   in which cell is located the atmosphere water point    Warning  inquad use clockwise quadrilateral definition       ind   inquad xx  yy                        xcell 0  good  ycell 0  good                         xcell 3  good  ycell 3  good                         xcell 2  good  ycell 2  good                         xcell 1  good  ycell 1  good                         onsphere   onsphere  newcoord   newcoord   noprint    keep only the first cell  if the atmospheric point was located in several ocean cells        ind   ind 0    we found one ocean water cell containing the atmosphere water point       IF ind NE  1 THEN BEGIN         ind   good ind    we keep its address          foraddr n    ind   now  we morph the quadrilateral ocean cell into the reference square  0   1    in addition we get the corrdinates of the atmospheric point in this new morphed square         IF onsphere THEN BEGIN   Warning  quadrilateral2square use anticlockwise quadrilateral definition           xy   quadrilateral2square newcoord 0  0  newcoord 1  0                                          newcoord 0  3  newcoord 1  3                                          newcoord 0  2  newcoord 1  2                                          newcoord 0  1  newcoord 1  1                                          newcoord 0  4  newcoord 1  4          ENDIF ELSE BEGIN           xy   quadrilateral2square xcell 0  ind  ycell 0  ind                                          xcell 1  ind  ycell 1  ind                                          xcell 2  ind  ycell 2  ind                                          xcell 3  ind  ycell 3  ind  xx  yy          ENDELSE    take care of rounding errors          zero   where abs xy  LT 1e 4          IF zero 0  NE  1 THEN xy zero    0         one   where abs 1 xy  LT 1e 4          IF one 0  NE  1 THEN xy one    1   some  useless  checks          IF  xy 0  LT 0 OR xy 0  GT 1 THEN stop         IF  xy 0  LT 0 OR xy 0  GT 1 THEN stop   keep the new coordinates         forweight n  0    xy 0          forweight n  1    xy 1        ENDIF ELSE foraddr n     1     ENDIF ELSE foraddr n     1   ENDFOR   do we have some water atmospheric points that are not located in an water oceanic cell    bad   where foraddr EQ  1    IF bad 0  NE  1 THEN BEGIN   yes    we look for neighbor water atmospheric point located in water oceanic cell     badaddr   awater bad      good   where foraddr NE  1    list the atmospheric points located in water oceanic cell     goodaddr   awater good    there longitude and latitude     goodlon   alon goodaddr      goodlat   alat goodaddr    for all the bad points  look for a neighbor     neig   lonarr n_elements bad      FOR i   0  n_elements bad 1 DO BEGIN       neig i     neighbor alon badaddr i  alat badaddr i  goodlon  goodlat   sphere 0      ENDFOR   get the address regarding foraddr     neig   good neig    associate each bad point with its neighbor  get its address and weight      foraddr bad    foraddr neig      forweight bad      forweight neig      endif   transform the address of the ocean cell into the address of its 4 corners   newaaddr   celladdr  temporary foraddr    now we compute the weight to give at each corner   newaweig   dblarr 4  nawater    a   reform forweight  0  1  nawater    b   reform forweight  1  1  nawater    forweight     1   free memory   newaweig    1 a 1 b   1 b a  a b   1 a b    a    1    b    1   free memory   mask the weight to suppress the corner located on land   newaweig   newaweig omsk newaaddr    totalweig   total newaweig  1    for cell with some land corner    we have to redistribute the weight on the reaining water corners   weights normalization   totalweig   total newaweig  1    newaweig   newaweig replicate 1  4 totalweig    totalweig   total newaweig  1     weights   weig   dblarr 4  jpia jpja    weig  awater    temporary newaweig    address   addr   dblarr 4  jpia jpja    addr  awater    temporary newaaddr      RETURN END"); 
    37 a[35] = new Array("./Interpolation/compute_fromreg_bilinear_weigaddr.html", "compute_fromreg_bilinear_weigaddr.pro", "", "     file_comments compute the weight and address needed 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 idl2  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 "); 
    38 a[36] = 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          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 idl2  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"); 
    39 a[37] = 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     compile_opt idl2  strictarrsubs     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"); 
    40 a[38] = 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     compile_opt idl2  strictarrsubs     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"); 
    41 a[39] = 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 idl2  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  "); 
    42 a[40] = new Array("./Interpolation/fromirr.html", "fromirr.pro", "", "       file_comments interpolate data from an irregular 2D grid to any 2D grid      Only 1 metod available: bilinear         categories interpolation      examples     dataout   fromirr method  datain   lonin  latin  mskin  lonout  latout  mskout          param method:  in required  a string defining the interpolation method  must be  bilinear        param datain:  in required  a 2D array the input data to interpolate       param lonin:  in required  a 2D array defining the longitude of the input data       param latin:  in required  a 2D array defining the latitude of the input data        param mskin:  in required  a 2D array  the land sea mask of the input data  1 on ocean  0 on land        param lonout:  in required  1D or 2D array defining the longitude of the output data        param latout:  in required  1D or 2D array defining the latitude of the output data        param mskout:  in required  a 2D array  the land sea mask of the ouput data  1 on ocean  0 on land       keyword WEIG  see ADDR     keyword 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  that are undefined or equal to 0  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  This greatly       speed up the interpolation  In that case  lonin  latin  lonout and latout are not necessary       returns 2D array: the interpolated data      restrictions We supposed the data are located on a sphere  with a periodicity along                the longitude                 Note that the input data can contain the same cells several times                like ORCA grid near the north pole boundary       examples        tncep   fromirr bilinear  topa  glamt  gphit  tmask 0  lonout  latout  mskout       or       t1ncep   fromirr bilinear  topa  glamt  gphit  tmask 0  lonout  latout  mskout                                  WEIG   a  ADDR   b     help  a  b    t2ncep   fromirr bilinear  topa  WEIG   a  ADDR   b       history    June 2006: Sebastien Masson  smasson lodyc jussieu fr              FUNCTION fromirr  method  datain  lonin  latin  mskin  lonout  latout  mskout                       WEIG   weig  ADDR   addr     compile_opt strictarr  strictarrsubs        atmospheric grid parameters       alon   lonin     alat   latin     get_gridparams  alon  alat  jpia  jpja  2   double     Oceanic grid parameters       olon   lonout     olat   latout     get_gridparams  olon  olat  jpio  jpjo  2   double     Compute weight and address     IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     CASE method OF        bilinear :compute_fromirr_bilinear_weigaddr  alon  alat  mskin  olon  olat  mskout  weig  addr       ELSE:BEGIN          print    unknown interpolation method  we stop          stop       ENDELSE     ENDCASE   ENDIF     to the interpolation     dataout   total weig datain addr  1    dataout   reform dataout  jpio  jpjo   over      RETURN  dataout END"); 
    43 a[41] = 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  in required   1D or 2D array defining the longitude of the input data       param latin  in required   1D or 2D array defining the latitude of the input data       param lonout  in required   1D or 2D array defining the longitude of the output data       param lonout  in required   1D or 2D array defining the latitude of the output data      keyword     WEIG  see ADDR     keyword     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  that are undefined or equal to 0  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 idl2  strictarrsubs        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     IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     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"); 
    44 a[42] = 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 in1  in required   1d or 2D arrays defining longitudes and latitudes      param in2  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   in  the number of points in the longitudinal direction     param in4   in  the number of points in the latitudinal direction     param in5  in  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       compile_opt idl2  strictarrsubs     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"); 
    45 a[43] = new Array("./Interpolation/imoms3.html", "imoms3.pro", "", "       FUNCTION imoms3  xin     compile_opt idl2  strictarrsubs      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"); 
    46 a[44] = 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     compile_opt idl2  strictarrsubs     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       found   found 0        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"); 
    47 a[45] = 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     compile_opt idl2  strictarrsubs     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"); 
    48 a[46] = 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     compile_opt idl2  strictarrsubs       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  "); 
    49 a[47] = 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  strictarrsubs    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"); 
    50 a[48] = 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     compile_opt idl2  strictarrsubs     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"); 
    51 a[49] = 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       compile_opt idl2  strictarrsubs   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"); 
    52 a[50] = 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     compile_opt idl2  strictarrsubs     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 "); 
    53 a[51] = 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     compile_opt idl2  strictarrsubs     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     compile_opt idl2  strictarrsubs     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     compile_opt idl2  strictarrsubs       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"); 
    54 a[52] = 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     compile_opt idl2  strictarrsubs       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"); 
    55 a[53] = 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    IDL   res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin            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        compile_opt idl2  strictarrsubs     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   dblarr 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"); 
     23a[21] = new Array("./Grid/computegrid.html", "computegrid.pro", "", "             file_comments compute the grid parameters from cm_4mesh common:           computegrid  startx  starty  stepx  stepy  nx  ny         computegrid  startx  starty  stepx  stepy         computegrid  xaxis   xaxis  yaxis   yaxis         or a suitable mix      glamt    glamf    gphit    gphif    e1t    e2t    horizontal parameters     glamu  in    glamv  in    gphiu  in    gphiv  in    e1u  in    e1v  in    e1f  in    e2u  in    e2v  in    e2f  in    horizontal parameters if FULLCGRID keyword is defined           gdept    gdepw    e3t    e3w    verticals parameters     tmask    masks     umaskred  in    vmaskred  in    fmaskredx  in    fmaskredy  in    masks if FULLCGRID keyword is defined      triangles_list   triangulation      categories grid      param startx  in required  scalar  x starting point    param starty  in required  scalar  y starting point    param stepxin  in required  scalar or vector: x direction step  must be   0               if vector nx is not used    param stepyin  in required  scalar or vector: y direction step                 could be   0  south to north  or  lon1 and lon2   lon1 le 360         key_shift will be defined automaticaly computed according to         glamboundary by using the FIRST LINE of glamt but          key_shift will   0 only if key_periodic   1       keyword MASK to specify the mask with a 2 or 3 dimension array      keyword 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      keyword 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        keyword  PLAIN force PERIODIC   0  SHIFT   0  STRIDE    1  1  1  and         suppress the automatic redefinition of the domain in case of          x periodicity overlap  y periodicity overlap  ORCA type only          and mask border to 0       keyword SHIFT   scalar to force the manual definition of key_shift  By         debault  key_shift is automaticaly computed according to         glamboundary  when defined  by using the FIRST LINE of glamt  if         key_periodic 0 then in any case key_shift   0        keyword STRCALLING a string containing the calling command used to         call computegrid  this is used by xxx pro       keyword STRIDE  a 3 elements vector to specify the stride in x  y  z         direction  Default definition is  1  1  1  The resulting value         will be stored in the common  cm_4mesh  variable key_stride      keyword XAXIS to specify longitude1 with a 1 or 2 dimension array  in          this case startx  stepx and nx are not used but could be         necessary if the y axis is not defined with yaxis  It must be         possible to sort the first line of xaxis in the increasing         order by shifting its elements       keyword YAXIS to specify latitudes with a 1 or 2 dimension array  in          this case starty  stepy and ny are not used but starty and         stepy could be necessary if the x axis is not defined with xaxis          It must be sorted in the increasing or deceasing order          along each column if 2d array       keyword  XYINDEX activate to specify that the horizontal grid should          be simply defined by using the index of the points             xaxis   findgen nx  and yaxis   findgen ny          using this keyword forces key_onearth 0      keyword XMINMESH     keyword YMINMESH     keyword ZMINMESH          to define the common variables i xyz minmesh         used to define the grid only in a zoomed part of the original         grid  Defaut values are 0L  max value is  XYZ MAXMESH      keyword XMAXMESH     keyword YMAXMESH     keyword ZMAXMESH          to define the common variables i xyz maxmesh         used to define the grid only in a zoomed part of the original         grid  Defaut values are jp ijk glo 1  max value is         jp ijk glo 1  if  XYZ MAXMESH is negative  then we define         i xyz maxmesh as jp ijk glo   1    XYZ MAXMESH instead of          XYZ MAXMESH        keyword FBASE2TBASE      keyword STRCALLING      keyword ZAXIS to specify the vertical axis with a 1 dimension         array  Must be sorted in the increasing or deceasing order      keyword _EXTRA used to pass your keywords to the created function       uses cm_4mesh cm_4data cm_4cal      restrictions if the grid has x y periodicity orverlap and or if      the mask has 0 everywhere at the border  like a close sea  and      if  we did not activate  plain and xminmesh  xmaxmesh  yminmesh       ymaxmesh keywords are defined to their default values  we redefine      xminmesh  xmaxmesh  yminmesh  ymaxmesh in order to reove the      overlapping part and or to open the domain  avoid ti be forced      to use cell_fill   1       restrictions FUV points definition       history Sebastien Masson  smasson lodyc jussieu fr                         2000 04 20    Sept 2004  several bug fixs to suit C grid type     Aug 2005  rewritte almost everything       version  Id            PRO computegrid  startx  starty  stepxin  stepyin  nxin  nyin                      XAXIS   xaxis  YAXIS   yaxis  ZAXIS   zaxis                      MASK   mask  GLAMBOUNDARY   glamboundary                      XMINMESH   xminmesh  XMAXMESH   xmaxmesh                      YMINMESH   yminmesh  YMAXMESH   ymaxmesh                      ZMINMESH   zminmesh  ZMAXMESH   zmaxmesh                      ONEARTH   onearth  PERIODIC   periodic                      PLAIN   plain  SHIFT   shift  STRIDE   stride                      FULLCGRID   fullcgrid  XYINDEX   xyindex                      FBASE2TBASE   fbase2tbase  STRCALLING   strcalling                      _extra   ex        compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       time1   systime 1               for key_performance         Check input parameters       xaxis related parameters     if n_elements xaxis  NE 0 then BEGIN      CASE  size xaxis 0  OF       0:nx   1L       1:nx    size xaxis 1        2:nx    size xaxis 1      ENDCASE   ENDIF ELSE BEGIN      IF n_elements startx  EQ 0 THEN BEGIN        dummy   report If xaxis is not given  startx must be defined        return     ENDIF     CASE n_elements stepxin  OF       0:BEGIN          dummy   report If xaxis is not given  stepxin must be defined          return       END       1:BEGIN          IF n_elements nxin  EQ 0 THEN BEGIN            dummy   report If xaxis is not given and stepxin has only one element  nx must be defined            return         ENDIF ELSE nx   nxin       END       ELSE:nx   n_elements stepxin          ENDCASE   ENDELSE      yaxis related parameters     if n_elements yaxis  NE 0 then BEGIN      CASE  size yaxis 0  OF       0:ny   1L       1:ny    size yaxis 1        2:ny    size yaxis 2      ENDCASE   ENDIF ELSE BEGIN      IF n_elements starty  EQ 0 THEN BEGIN        dummy   report If yaxis is not given  starty must be defined        return     ENDIF     CASE n_elements stepyin  OF       0:BEGIN          dummy   report If yaxis is not given  stepyin must be defined          return       END       1:BEGIN          IF n_elements nyin  EQ 0 THEN BEGIN            dummy   report If yaxis is not given and stepyin has only one element  ny must be defined            return         ENDIF ELSE ny   nyin       END       ELSE:ny   n_elements stepyin          ENDCASE   ENDELSE     zaxis related parameters     if n_elements zaxis  NE 0 then BEGIN      CASE  size zaxis 0  OF       0:nz   1L       1:nz    size zaxis 1        ELSE:BEGIN         print   not coded          stop       END     ENDCASE   ENDIF ELSE nz   1L       Others automatic definitions        jpiglo   long nx    jpjglo   long ny    jpkglo   long nz      impact of plain keyword:     IF keyword_set plain  THEN BEGIN     periodic   0     shift   0     stride    1  1  1    ENDIF     IF n_elements xminmesh  NE 0 THEN ixminmesh   long xminmesh 0  ELSE ixminmesh    0l   IF n_elements xmaxmesh  NE 0 THEN ixmaxmesh   long xmaxmesh 0  ELSE ixmaxmesh    jpiglo 1   IF n_elements yminmesh  NE 0 THEN iyminmesh   long yminmesh 0  ELSE iyminmesh    0l   IF n_elements ymaxmesh  NE 0 THEN iymaxmesh   long ymaxmesh 0  ELSE iymaxmesh    jpjglo 1   IF n_elements zminmesh  NE 0 THEN izminmesh   long zminmesh 0  ELSE izminmesh    0l   IF n_elements zmaxmesh  NE 0 THEN izmaxmesh   long zmaxmesh 0  ELSE izmaxmesh    jpkglo 1     iymaxmesh   iymaxmesh keyword_set fbase2tbase       IF ixmaxmesh LT 0 THEN ixmaxmesh   jpiglo  1   ixmaxmesh   IF iymaxmesh LT 0 THEN iymaxmesh   jpjglo  1   iymaxmesh   IF izmaxmesh LT 0 THEN izmaxmesh   jpkglo  1   izmaxmesh   avoid basics errors    ixmaxmesh   0   ixmaxmesh  ixminmesh  iymaxmesh  iyminmesh  izmaxmesh  izminmesh  temporary glamf   gphif  temporary glamu   gphiu  temporary glamv   gphiv   gdept stepz 2      ENDIF ELSE BEGIN       stepz   1        gdepw   gdept     ENDELSE       e3 tw :         e3t   stepz     IF n_elements stepz  GT 1 THEN BEGIN       e3w   0 5 stepz shift stepz  1        e3w 0    0 5 e3t 0      ENDIF ELSE e3w   e3t       Mask       defaut mask eq 1   if NOT keyword_set mask  then mask    1     if mask 0  NE  1 then BEGIN     tmask   byte mask ixminmesh:ixmaxmesh  iyminmesh:iymaxmesh  izminmesh:izmaxmesh      tmask   reform tmask  jpi  jpj  jpk   over      if key_shift NE 0 then tmask   shift tmask  key_shift  0  0    because tmask   reverse tmask  2  is not working if the 3rd   dimension of tmask   1  we call reform      IF jpk EQ 1 THEN tmask   reform tmask   over      IF key_yreverse EQ 1 THEN tmask   reverse tmask  2      IF jpk EQ 1 THEN tmask   reform tmask  jpi  jpj  jpk   over      IF key_zreverse EQ 1 THEN tmask   reverse tmask  3      IF jpk EQ 1 THEN tmask   reform tmask  jpi  jpj  jpk   over      IF keyword_set fullcgrid  THEN BEGIN       IF keyword_set key_periodic  THEN BEGIN         msk   tmask shift tmask   1  0  0          umaskred   msk jpi 1            ENDIF ELSE umaskred   tmask jpi 1            vmaskred   tmask  jpj 1          fmaskredy   tmask jpi 1            fmaskredx   tmask  jpj 1        ENDIF    ENDIF ELSE BEGIN      tmask   replicate 1b  jpi  jpj  jpk      IF keyword_set fullcgrid  THEN BEGIN       umaskred    replicate 1b  jpj  jpk        vmaskred    replicate 1b  jpi  jpk        fmaskredy   replicate 1b  jpj  jpk        fmaskredx   replicate 1b  jpi  jpk      ENDIF    ENDELSE     IF jpi GT 2 AND jpj GT 2 AND NOT keyword_set plain         AND ixminmesh EQ 0l AND ixmaxmesh eq jpiglo 1        AND iyminmesh EQ 0l AND iymaxmesh eq jpjglo 1        AND total tmask  0    EQ 0 AND total tmask  jpj 1    EQ 0        AND total tmask 0      EQ 0 AND total tmask jpi 1      EQ 0 THEN BEGIN         xminmesh   1         xmaxmesh    1         yminmesh   1         ymaxmesh    1         computegrid  XAXIS   glamt  YAXIS   gphit  ZAXIS   zaxis                          MASK   mask  GLAMBOUNDARY   glamboundary                          XMINMESH   xminmesh  XMAXMESH   xmaxmesh                          YMINMESH   yminmesh  YMAXMESH   ymaxmesh                          ZMINMESH   zminmesh  ZMAXMESH   zmaxmesh                          ONEARTH   onearth  PERIODIC   periodic                          PLAIN   plain  SHIFT   shift  STRIDE   stride                          FULLCGRID   fullcgrid  XYINDEX   xyindex                          FBASE2TBASE   fbase2tbase  STRCALLING   strcalling                          _extra   ex          return   ENDIF      IF NOT keyword_set fullcgrid  THEN BEGIN     umaskred    values f_nan     vmaskred    values f_nan     fmaskredy    values f_nan     fmaskredx    values f_nan   ENDIF       stride        IF total key_stride  GT 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       glamt    temporary glamt 0: :stride 0  0: :stride 1      gphit    temporary gphit 0: :stride 0  0: :stride 1      e1t    temporary e1t 0: :stride 0  0: :stride 1      e2t    temporary e2t 0: :stride 0  0: :stride 1      tmask    temporary tmask 0: :stride 0  0: :stride 1  0: :stride 2      gdept   gdept 0: :stride 2      gdepw   gdepw 0: :stride 2      e3t   e3t 0: :stride 2      e3w   e3w 0: :stride 2    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       IF jpj EQ 1 THEN BEGIN        glamt   reform glamt  jpi  jpj   over        gphit   reform gphit  jpi  jpj   over        glamf   reform glamf  jpi  jpj   over        gphif   reform gphif  jpi  jpj   over        e1t   reform e1t  jpi  jpj   over        e2t   reform e2t  jpi  jpj   over      ENDIF       IF keyword_set fullcgrid  THEN BEGIN       glamu    temporary glamu 0: :stride 0  0: :stride 1        gphiu    temporary gphiu 0: :stride 0  0: :stride 1        e1u    temporary e1u 0: :stride 0  0: :stride 1        e2u    temporary e2u 0: :stride 0  0: :stride 1        glamv    temporary glamv 0: :stride 0  0: :stride 1        gphiv    temporary gphiv 0: :stride 0  0: :stride 1        e1v    temporary e1v 0: :stride 0  0: :stride 1        e2v    temporary e2v 0: :stride 0  0: :stride 1        e1f    temporary e1f 0: :stride 0  0: :stride 1        e2f    temporary e2f 0: :stride 0  0: :stride 1        umaskred    temporary umaskred 0  0: :stride 1  0: :stride 2        vmaskred    temporary vmaskred 0: :stride 0  0  0: :stride 2        fmaskredy    temporary fmaskredy 0  0: :stride 1  0: :stride 2        fmaskredx    temporary fmaskredx 0: :stride 0  0  0: :stride 2        IF jpj EQ 1 THEN BEGIN          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          e1f   reform e1f  jpi  jpj   over          e2f   reform e2f  jpi  jpj   over        ENDIF     ENDIF   ENDIF       apply all the grid parameters        updateold   domdef       Triangulation       IF total tmask  EQ jpi jpj jpk       AND NOT keyword_set key_irregular  THEN triangles_list    1     ELSE BEGIN   are we using ORCA2       IF jpiglo EQ 182 AND jpi EQ 181 AND jpjglo EQ 149 AND jpj EQ 148 THEN          triangles_list   triangule  ELSE triangles_list   triangule keep_cont    ENDELSE        time axis  default definition        IF n_elements time  EQ 0 OR n_elements jpt  EQ 0 THEN BEGIN      jpt   1     time   0   ENDIF     IF NOT keyword_set key_forgetold  THEN BEGIN  updateold   ENDIF     grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN      IF n_elements ccmeshparameters  EQ 0 THEN strcalling    computegrid        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     ccreadparameters    funclec_name: read_ncdf                jpidta:jpidta  jpjdta:jpjdta  jpkdta:jpkdta               ixmindta:ixmindta  ixmaxdta:ixmaxdta               iymindta:iymindta  iymaxdta:iymaxdta               izmindta:izmindta  izmaxdta:izmaxdta      IF keyword_set key_performance  EQ 1 THEN       print   time computegrid  systime 1 time1     return end "); 
     24a[22] = new Array("./Grid/micromeshmask.html", "micromeshmask.pro", "", "       file_comments reduce the size of the NetCDF meshmask created by OPA by   using bit  and not byte  format for the masks and the float format   for the other fields       categories for OPA meshmask files      param inid  in required     param outid  in required     param inname  in required     param outname  in optional       history        July 2004 Sebastien Masson  smasson lodyc jussieu fr       version  Id          PRO ncdf_transfer  inid  outid  inname  outname     compile_opt idl2  strictarrsubs     IF n_elements outname  EQ 0 THEN outname   inname   ncdf_varget  inid  inname  zzz   ncdf_varput  outid  outname  float reform zzz   over    RETURN END               param ncfilein  in required         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       param ncfileout  in optional  the name of the uniq reduced meshmask file    default definition is micromeshmask nc      keyword IODIR to define the files path       examples   IDL  meshdir d1fes2 raid2 smasson DATA ORCA05    IDL  micromeshmask   meshmask_ORCA_R05 nc iodir meshdir     PRO micromeshmask  ncfilein  ncfileout  IODIR   iodir     compile_opt idl2  strictarrsubs     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   for the mask  we use  its byte  representation   its y dimension   will be extended to be a multiple of 8  then it will be divided by   8    if  jpj mod 8  eq 0 the jpj_m jpi 8 else jpj_m jpi 8   1   jpj_m    jpj 7 8   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       dummy   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    micromeshmask 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    dimidy_m   ncdf_dimdef cdfidout   y_m  jpj_m    dimidz   ncdf_dimdef cdfidout   z  jpk    global attributs   ncdf_attput  cdfidout   IDL_Program_Name   micromeshmask 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 BEGIN     varid    varid  ncdf_vardef cdfidout  msklist m                                       dimidx  dimidy_m  dimidz   byte        ncdf_attput  cdfidout  varid n_elements varid 1               Comment   the mask is stored as bit  You must use              the binary representation of the byte to get back the data    ENDFOR       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       zzz   byte temporary zzz    zzz must contain only 0 or 1       zzz   temporary zzz  MOD 2   we transpose zzz because we need to work with the y dimension as the   first dimension       zzz   transpose temporary zzz    extend jpj to be a multiple of 8       jpjadd   jpj_m 8 jpj       IF jpjadd NE 0 THEN zzz    temporary zzz  bytarr jpjadd  jpi    reform zzz  to look like output of binary pro       zzz   reform zzz  8  1  jpj_m  jpi   over    convert into  its byte form        zzz   inverse_binary temporary zzz        ncdf_varput  cdfidout  msklist m  transpose temporary zzz              offset    0  0  k  count    jpi  jpj_m  1      ENDFOR   ENDFOR       ncdf_close  cdfid   ncdf_close  cdfidout    RETURN END"); 
     25a[23] = new Array("./Grid/n128gaussian.html", "n128gaussian.pro", "", "     file_comments compute the latitudes of the n128 gaussian grid  See:   http: www ecmwf int products data technical gaussian n128FIS html      categories grid      examples    IDL  lat n128gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version  Id        FUNCTION n128gaussian       compile_opt idl2  strictarrsubs              latitude   reduced     regular  latitude             number     points      points                              n128        1          18         512   89 46282                  2          25         512   88 76695                  3          36         512   88 06697                  4          40         512   87 36606                  5          45         512   86 66480                  6          50         512   85 96337                  7          60         512   85 26184                  8          64         512   84 56026                  9          72         512   83 85863                  10          72         512   83 15698                  11          80         512   82 45531                  12          90         512   81 75363                  13          90         512   81 05194                  14         100         512   80 35023                  15         108         512   79 64852                  16         120         512   78 94681                  17         120         512   78 24509                  18         125         512   77 54336                  19         128         512   76 84163                  20         144         512   76 13990                  21         144         512   75 43817                  22         150         512   74 73644                  23         160         512   74 03470                  24         160         512   73 33296                  25         180         512   72 63123                  26         180         512   71 92949                  27         180         512   71 22774                  28         192         512   70 52600                  29         192         512   69 82426                  30         200         512   69 12252                  31         216         512   68 42077                  32         216         512   67 71903                  33         216         512   67 01728                  34         225         512   66 31554                  35         240         512   65 61379                  36         240         512   64 91204                  37         240         512   64 21030                  38         250         512   63 50855                  39         250         512   62 80680                  40         256         512   62 10505                  41         270         512   61 40330                  42         270         512   60 70156                  43         288         512   59 99981                  44         288         512   59 29806                  45         288         512   58 59631                  46         300         512   57 89456                  47         300         512   57 19281                  48         320         512   56 49106                  49         320         512   55 78931                  50         320         512   55 08756                  51         320         512   54 38581                  52         324         512   53 68406                  53         360         512   52 98231                  54         360         512   52 28056                  55         360         512   51 57881                  56         360         512   50 87705                  57         360         512   50 17530                  58         360         512   49 47355                  59         360         512   48 77180                  60         375         512   48 07005                  61         375         512   47 36830                  62         375         512   46 66655                  63         375         512   45 96479                  64         384         512   45 26304                  65         384         512   44 56129                  66         400         512   43 85954                  67         400         512   43 15779                  68         400         512   42 45604                  69         400         512   41 75428                  70         405         512   41 05253                  71         432         512   40 35078                  72         432         512   39 64903                  73         432         512   38 94728                  74         432         512   38 24552                  75         432         512   37 54377                  76         432         512   36 84202                  77         432         512   36 14027                  78         450         512   35 43851                  79         450         512   34 73676                  80         450         512   34 03501    n128    n128              81         450         512   33 33326              82         450         512   32 63150              83         480         512   31 92975              84         480         512   31 22800              85         480         512   30 52625              86         480         512   29 82449              87         480         512   29 12274              88         480         512   28 42099              89         480         512   27 71924              90         480         512   27 01748              91         480         512   26 31573              92         480         512   25 61398              93         486         512   24 91223              94         486         512   24 21047              95         486         512   23 50872              96         500         512   22 80697              97         500         512   22 10521              98         500         512   21 40346              99         500         512   20 70171              100         500         512   19 99996              101         500         512   19 29820              102         500         512   18 59645              103         512         512   17 89470              104         512         512   17 19294              105         512         512   16 49119              106         512         512   15 78944              107         512         512   15 08768              108         512         512   14 38593              109         512         512   13 68418              110         512         512   12 98243              111         512         512   12 28067              112         512         512   11 57892              113         512         512   10 87717              114         512         512   10 17541              115         512         512    9 47366              116         512         512    8 77191              117         512         512    8 07016              118         512         512    7 36840              119         512         512    6 66665              120         512         512    5 96490              121         512         512    5 26314              122         512         512    4 56139              123         512         512    3 85964              124         512         512    3 15788              125         512         512    2 45613              126         512         512    1 75438              127         512         512    1 05262              128         512         512    0 35087      n128   reform n128  4  128   over    n128   reform n128 3     over    n128    n128   reverse n128     return  n128 end"); 
     26a[24] = new Array("./Grid/n160gaussian.html", "n160gaussian.pro", "", "       file_comments compute the latitudes of the n160 gaussian grid  See:   http: www ecmwf int products data technical gaussian n160FIS html      categories grid      examples    IDL lat n160gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version  Id        FUNCTION n160gaussian       compile_opt idl2  strictarrsubs              latitude   reduced     regular  latitude             number     points      points                              n160        1          18         640   89 57009                  2          25         640   89 01318                  3          36         640   88 45297                  4          40         640   87 89203                  5          45         640   87 33080                  6          50         640   86 76944                  7          60         640   86 20800                  8          64         640   85 64651                  9          72         640   85 08499                  10          72         640   84 52345                  11          80         640   83 96190                  12          90         640   83 40033                  13          90         640   82 83876                  14          96         640   82 27718                  15         108         640   81 71559                  16         120         640   81 15400                  17         120         640   80 59240                  18         125         640   80 03080                  19         128         640   79 46920                  20         135         640   78 90760                  21         144         640   78 34600                  22         150         640   77 78439                  23         160         640   77 22278                  24         160         640   76 66117                  25         180         640   76 09956                  26         180         640   75 53795                  27         180         640   74 97634                  28         192         640   74 41473                  29         192         640   73 85311                  30         200         640   73 29150                  31         216         640   72 72988                  32         216         640   72 16827                  33         225         640   71 60665                  34         225         640   71 04504                  35         240         640   70 48342                  36         240         640   69 92181                  37         243         640   69 36019                  38         250         640   68 79857                  39         256         640   68 23695                  40         270         640   67 67534                  41         270         640   67 11372                  42         288         640   66 55210                  43         288         640   65 99048                  44         288         640   65 42886                  45         300         640   64 86725                  46         300         640   64 30563                  47         320         640   63 74401                  48         320         640   63 18239                  49         320         640   62 62077                  50         320         640   62 05915                  51         324         640   61 49753                  52         360         640   60 93591                  53         360         640   60 37429                  54         360         640   59 81267                  55         360         640   59 25105                  56         360         640   58 68943                  57         360         640   58 12781                  58         375         640   57 56619                  59         375         640   57 00457                  60         375         640   56 44295                  61         384         640   55 88133                  62         384         640   55 31971                  63         400         640   54 75809                  64         400         640   54 19647                  65         400         640   53 63485                  66         405         640   53 07323                  67         432         640   52 51161                  68         432         640   51 94999                  69         432         640   51 38837                  70         432         640   50 82675                  71         432         640   50 26513                  72         450         640   49 70351                  73         450         640   49 14189                  74         450         640   48 58026                  75         450         640   48 01864                  76         480         640   47 45702                  77         480         640   46 89540                  78         480         640   46 33378                  79         480         640   45 77216                  80         480         640   45 21054    n160    n160              81         480         640   44 64892              82         480         640   44 08730              83         500         640   43 52567              84         500         640   42 96405              85         500         640   42 40243              86         500         640   41 84081              87         500         640   41 27919              88         512         640   40 71757              89         512         640   40 15595              90         540         640   39 59433              91         540         640   39 03270              92         540         640   38 47108              93         540         640   37 90946              94         540         640   37 34784              95         540         640   36 78622              96         540         640   36 22460              97         540         640   35 66298              98         576         640   35 10136              99         576         640   34 53973              100         576         640   33 97811              101         576         640   33 41649              102         576         640   32 85487              103         576         640   32 29325              104         576         640   31 73163              105         576         640   31 17000              106         576         640   30 60838              107         576         640   30 04676              108         600         640   29 48514              109         600         640   28 92352              110         600         640   28 36190              111         600         640   27 80028              112         600         640   27 23865              113         600         640   26 67703              114         600         640   26 11541              115         600         640   25 55379              116         600         640   24 99217              117         640         640   24 43055              118         640         640   23 86892              119         640         640   23 30730              120         640         640   22 74568              121         640         640   22 18406              122         640         640   21 62244              123         640         640   21 06082              124         640         640   20 49919              125         640         640   19 93757              126         640         640   19 37595              127         640         640   18 81433              128         640         640   18 25271              129         640         640   17 69109              130         640         640   17 12946              131         640         640   16 56784              132         640         640   16 00622              133         640         640   15 44460              134         640         640   14 88298              135         640         640   14 32136              136         640         640   13 75973              137         640         640   13 19811              138         640         640   12 63649              139         640         640   12 07487              140         640         640   11 51325              141         640         640   10 95162              142         640         640   10 39000              143         640         640    9 82838              144         640         640    9 26676              145         640         640    8 70514              146         640         640    8 14352              147         640         640    7 58189              148         640         640    7 02027              149         640         640    6 45865              150         640         640    5 89703              151         640         640    5 33541              152         640         640    4 77379              153         640         640    4 21216              154         640         640    3 65054              155         640         640    3 08892              156         640         640    2 52730              157         640         640    1 96568              158         640         640    1 40405              159         640         640    0 84243              160         640         640    0 28081      n160   reform n160  4  160   over    n160   reform n160 3     over    n160    n160   reverse n160     return  n160 end"); 
     27a[25] = new Array("./Grid/n256gaussian.html", "n256gaussian.pro", "", "       file_comments compute the latitudes of the n256 gaussian grid  See:   http: www ecmwf int products data technical gaussian n256FIS html      categories grid      examples   IDL  lat n256gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version  Id        FUNCTION n256gaussian       compile_opt idl2  strictarrsubs             latitude   reduced     regular  latitude            number     points      points                             n256        1          18        1024   89 73115                  2          25        1024   89 38287                  3          32        1024   89 03254                  4          40        1024   88 68175                  5          45        1024   88 33077                  6          50        1024   87 97972                  7          60        1024   87 62861                  8          64        1024   87 27748                  9          72        1024   86 92632                  10          72        1024   86 57515                  11          75        1024   86 22398                  12          81        1024   85 87279                  13          90        1024   85 52160                  14          96        1024   85 17041                  15         100        1024   84 81921                  16         108        1024   84 46801                  17         120        1024   84 11681                  18         120        1024   83 76560                  19         125        1024   83 41440                  20         135        1024   83 06319                  21         144        1024   82 71198                  22         150        1024   82 36077                  23         160        1024   82 00956                  24         160        1024   81 65835                  25         180        1024   81 30714                  26         180        1024   80 95593                  27         180        1024   80 60471                  28         192        1024   80 25350                  29         192        1024   79 90229                  30         200        1024   79 55107                  31         216        1024   79 19986                  32         216        1024   78 84864                  33         216        1024   78 49743                  34         225        1024   78 14621                  35         240        1024   77 79500                  36         240        1024   77 44378                  37         243        1024   77 09256                  38         250        1024   76 74135                  39         256        1024   76 39013                  40         270        1024   76 03891                  41         270        1024   75 68770                  42         288        1024   75 33648                  43         288        1024   74 98526                  44         288        1024   74 63405                  45         300        1024   74 28283                  46         300        1024   73 93161                  47         320        1024   73 58040                  48         320        1024   73 22918                  49         320        1024   72 87796                  50         324        1024   72 52674                  51         360        1024   72 17552                  52         360        1024   71 82431                  53         360        1024   71 47309                  54         360        1024   71 12187                  55         360        1024   70 77065                  56         360        1024   70 41944                  57         375        1024   70 06822                  58         375        1024   69 71700                  59         384        1024   69 36578                  60         384        1024   69 01456                  61         400        1024   68 66334                  62         400        1024   68 31213                  63         400        1024   67 96091                  64         432        1024   67 60969                  65         432        1024   67 25847                  66         432        1024   66 90725                  67         432        1024   66 55603                  68         432        1024   66 20482                  69         450        1024   65 85360                  70         450        1024   65 50238                  71         450        1024   65 15116                  72         480        1024   64 79994                  73         480        1024   64 44872                  74         480        1024   64 09750                  75         480        1024   63 74629                  76         480        1024   63 39507                  77         486        1024   63 04385                  78         500        1024   62 69263                  79         500        1024   62 34141                  80         500        1024   61 99019    n256    n256              81         512        1024   61 63897              82         512        1024   61 28776              83         540        1024   60 93654              84         540        1024   60 58532              85         540        1024   60 23410              86         540        1024   59 88288              87         540        1024   59 53166              88         576        1024   59 18044              89         576        1024   58 82922              90         576        1024   58 47800              91         576        1024   58 12679              92         576        1024   57 77557              93         576        1024   57 42435              94         600        1024   57 07313              95         600        1024   56 72191              96         600        1024   56 37069              97         600        1024   56 01947              98         600        1024   55 66825              99         640        1024   55 31703              100         640        1024   54 96581              101         640        1024   54 61460              102         640        1024   54 26338              103         640        1024   53 91216              104         640        1024   53 56094              105         640        1024   53 20972              106         640        1024   52 85850              107         648        1024   52 50728              108         675        1024   52 15606              109         675        1024   51 80484              110         675        1024   51 45362              111         675        1024   51 10241              112         675        1024   50 75119              113         675        1024   50 39997              114         720        1024   50 04875              115         720        1024   49 69753              116         720        1024   49 34631              117         720        1024   48 99509              118         720        1024   48 64387              119         720        1024   48 29265              120         720        1024   47 94143              121         720        1024   47 59021              122         720        1024   47 23899              123         729        1024   46 88778              124         729        1024   46 53656              125         750        1024   46 18534              126         750        1024   45 83412              127         750        1024   45 48290              128         750        1024   45 13168              129         750        1024   44 78046              130         768        1024   44 42924              131         768        1024   44 07802              132         768        1024   43 72680              133         768        1024   43 37558              134         800        1024   43 02436              135         800        1024   42 67315              136         800        1024   42 32193              137         800        1024   41 97071              138         800        1024   41 61949              139         800        1024   41 26827              140         800        1024   40 91705              141         800        1024   40 56583              142         810        1024   40 21461              143         810        1024   39 86339              144         864        1024   39 51217              145         864        1024   39 16095              146         864        1024   38 80973              147         864        1024   38 45851              148         864        1024   38 10730              149         864        1024   37 75608              150         864        1024   37 40486              151         864        1024   37 05364              152         864        1024   36 70242              153         864        1024   36 35120              154         864        1024   35 99998              155         864        1024   35 64876              156         864        1024   35 29754              157         864        1024   34 94632              158         900        1024   34 59510              159         900        1024   34 24388              160         900        1024   33 89266    n256    n256              161         900        1024   33 54145              162         900        1024   33 19023              163         900        1024   32 83901              164         900        1024   32 48779              165         900        1024   32 13657              166         900        1024   31 78535              167         900        1024   31 43413              168         900        1024   31 08291              169         960        1024   30 73169              170         960        1024   30 38047              171         960        1024   30 02925              172         960        1024   29 67803              173         960        1024   29 32681              174         960        1024   28 97559              175         960        1024   28 62438              176         960        1024   28 27316              177         960        1024   27 92194              178         960        1024   27 57072              179         960        1024   27 21950              180         960        1024   26 86828              181         960        1024   26 51706              182         960        1024   26 16584              183         960        1024   25 81462              184         960        1024   25 46340              185         960        1024   25 11218              186         960        1024   24 76096              187         960        1024   24 40974              188         960        1024   24 05852              189         960        1024   23 70731              190         960        1024   23 35609              191         972        1024   23 00487              192         972        1024   22 65365              193         972        1024   22 30243              194         972        1024   21 95121              195         972        1024   21 59999              196        1000        1024   21 24877              197        1000        1024   20 89755              198        1000        1024   20 54633              199        1000        1024   20 19511              200        1000        1024   19 84389              201        1000        1024   19 49267              202        1000        1024   19 14145              203        1000        1024   18 79023              204        1000        1024   18 43902              205        1000        1024   18 08780              206        1000        1024   17 73658              207        1000        1024   17 38536              208        1000        1024   17 03414              209        1000        1024   16 68292              210        1000        1024   16 33170              211        1000        1024   15 98048              212        1024        1024   15 62926              213        1024        1024   15 27804              214        1024        1024   14 92682              215        1024        1024   14 57560              216        1024        1024   14 22438              217        1024        1024   13 87316              218        1024        1024   13 52194              219        1024        1024   13 17073              220        1024        1024   12 81951              221        1024        1024   12 46829              222        1024        1024   12 11707              223        1024        1024   11 76585              224        1024        1024   11 41463              225        1024        1024   11 06341              226        1024        1024   10 71219              227        1024        1024   10 36097              228        1024        1024   10 00975              229        1024        1024    9 65853              230        1024        1024    9 30731              231        1024        1024    8 95609              232        1024        1024    8 60487              233        1024        1024    8 25365              234        1024        1024    7 90244              235        1024        1024    7 55122              236        1024        1024    7 20000              237        1024        1024    6 84878              238        1024        1024    6 49756              239        1024        1024    6 14634              240        1024        1024    5 79512    n256    n256              241        1024        1024    5 44390              242        1024        1024    5 09268              243        1024        1024    4 74146              244        1024        1024    4 39024              245        1024        1024    4 03902              246        1024        1024    3 68780              247        1024        1024    3 33658              248        1024        1024    2 98536              249        1024        1024    2 63415              250        1024        1024    2 28293              251        1024        1024    1 93171              252        1024        1024    1 58049              253        1024        1024    1 22927              254        1024        1024    0 87805              255        1024        1024    0 52683              256        1024        1024    0 17561      n256   reform n256  4  256   over    n256   reform n256 3     over    n256    n256   reverse n256     return  n256 end"); 
     28a[26] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", "       file_comments compute the latitudes of the n48 gaussian grid  See:   http: www ecmwf int products data technical gaussian n48FIS html      categories grid      examples   IDL  lat n48gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version  Id        FUNCTION n48gaussian       compile_opt idl2  strictarrsubs              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"); 
     29a[27] = new Array("./Grid/n80gaussian.html", "n80gaussian.pro", "", "       file_comments compute the latitudes of the n80 gaussian grid  See:   http: www ecmwf int products data technical gaussian n80FIS html      categories grid      examples   IDL  lat n80gaussian       returns a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version  Id        FUNCTION n80gaussian       compile_opt idl2  strictarrsubs              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"); 
     30a[28] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", "             file_comments read NetCDF meshmask file created by OPA      categories grid reading      examples   IDL  ncdf_meshread   filename        param filename  in optional  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 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       keyword  CHECKDAT Suppressed  Use micromeshmask pro to create an      appropriate meshmask       keyword 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      keyword GETDIMENSIONS      keyword 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       keyword 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        keyword STRCALLING a string containing the calling command used to call      computegrid  this is used by xxx pro       keyword 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        keyword _EXTRA used to pass your keywords to the created function         uses cm_4mesh cm_4data cm_4cal      restrictions 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       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       version  Id            PRO ncdf_meshread  filename  GLAMBOUNDARY   glamboundary  CHECKDAT   checkdat                       ONEARTH   onearth  GETDIMENSIONS   getdimensions                       PERIODIC   periodic  SHIFT   shift  STRIDE   stride                       STRCALLING   strcalling  _EXTRA   ex         compile_opt idl2  strictarrsubs    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        dummy   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"); 
     31a[29] = new Array("./Grid/restoreboxparam.html", "restoreboxparam.pro", "", "             file_comments restore all the zoom parameters  defined by calling domdef             perviously defined by saveboxparam      examples   IDL  restoreboxparam  filename       param filename  in required  a scalar string defining the file name       uses cm_4mesh and cm_demomode_used if we are in demo mode      restrictions all def_myuniquetmpdir  if myuniquetmpdir is undefined:                    define  create and add it to  path      history Sebastien Masson  smasson lodyc jussieu fr                         July 2005      version  Id            PRO restoreboxparam  filename     compile_opt idl2  strictarrsubs    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     "); 
     32a[30] = new Array("./Grid/saveboxparam.html", "saveboxparam.pro", "", "             file_comments save all the zoom parameters  defined by calling domdef             in a file  using save command  located in myuniquetmpdir             common variable defined by def_myuniquetmpdir       examples   IDL  saveboxparam  filename       param filename  in required  a scalar string defining the file name       uses cm_4mesh and cm_demomode_used if we are in demo mode      restrictions call def_myuniquetmpdir  if myuniquetmpdir is undefined:                    define  create and add it to  path      history Sebastien Masson  smasson lodyc jussieu fr                         June 2005      version  Id            PRO saveboxparam  filename     compile_opt idl2  strictarrsubs    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"); 
     33a[31] = new Array("./Grid/smallmeshmask.html", "smallmeshmask.pro", "", "         categories for OPA meshmask files      param inid  in required     param outid  in required     param inname  in required     param outname  in optional       history        July 2004 Sebastien Masson  smasson lodyc jussieu fr       version  Id          PRO ncdf_transfer  inid  outid  inname  outname     compile_opt idl2  strictarrsubs     IF n_elements outname  EQ 0 THEN outname   inname   ncdf_varget  inid  inname  zzz   ncdf_varput  outid  outname  float reform zzz   over    RETURN END        file_comments reduce the size of the NetCDF meshmask created by OPA by   using byte format for the masks and the float format for the other   fields          keyword IODIR to define the files path          param ncfilein  in required         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            param ncfileout  in optional  the name of the reduced meshmask file  default        definition is smallmeshmask nc      examples      IDL  meshdir d1fes2 raid2 smasson DATA ORCA05       IDL  smallmeshmask   meshmask_ORCA_R05 nc iodir meshdir      categories for OPA meshmask files      history        July 2004 Sebastien Masson  smasson lodyc jussieu fr       version  Id      PRO smallmeshmask  ncfilein  ncfileout  IODIR   iodir       compile_opt idl2  strictarrsubs     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        dummy   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"); 
     34a[32] = new Array("./Interpolation/angle.html", "angle.pro", "", "       file_comments north stereographic polar projection      param plam  in required       param pphi  in required        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       version  Id          FUNCTION fsnspp  plam  pphi  DOUBLE   double     compile_opt idl2  strictarrsubs     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      param gcosu  in required     param gsinu  in required     param gcosv  in required     param gsinv  in required     param gcost  in required     param gsint  in required     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           compile_opt idl2  strictarrsubs     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      version  Id        FUNCTION clickincell  CELLTYPE   celltype  DRAWCELL   drawcell  COLOR   color  ORIGINAL   original  IJ   ij  _EXTRA   extra     compile_opt idl2  strictarrsubs    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_fromirr_bilinear_weigaddr.html", "compute_fromirr_bilinear_weigaddr.pro", "", "     file_comments compute the weight and address needed to interpolate data from            an  irregular 2D grid   defined as a grid made of quadrilateral cells             to any grid using the bilinear method         categories interpolation      param olonin  in required  longitudeof the input data     param olat    in required  latitude of the input data     param omsk    in required  land se mask of the input data     param alonin  in required  longitude of the output data     param alat    in required  latitude of the output data     param amsk    in required  land sea mask of the output data       param weig  out     param addr  out    2D arrays  weig and addr are the weight and addresses used to   perform the interpolation:    dataout   total weig datain addr  1     dataout   reform dataout  jpia  jpja   over       restrictions       the input grid must be an  irregular 2D grid  defined as a grid made        of quadrilateral cells which corners positions are defined with olonin and olat       We supposed the data are located on a sphere  with a periodicity along       the longitude       to perform the bilinear interpolation within quadrilateral cells  we       first morph the cell into a square cell and then compute the bilinear       interpolation        if some corners of the cell are land points  their weight is set to 0        and the weight is redistributed on the remaining  water  corners       points located out of the southern and northern boundaries or in cells      containing only land points are set the the same value as their closest neighbor l      history    June 2006: Sebastien Masson  smasson lodyc jussieu fr           version  Id              PRO compute_fromirr_bilinear_weigaddr  olonin  olat  omsk  alonin  alat  amsk  weig  addr     compile_opt idl2  strictarrsubs      jpia    size alonin   dimensions 0    jpja    size alonin   dimensions 1      jpio    size olonin   dimensions 0    jpjo    size olonin   dimensions 1      longitude  between 0 and 360   alon   alonin MOD 360   out   where alon LT 0     IF out 0  NE  1 THEN alon out    alon out 360   olon   olonin MOD 360   out   where olon LT 0     IF out 0  NE  1 THEN olon out    olon out 360     we work only on the water points   owater   where omsk EQ 1    nowater   n_elements owater     awater   where amsk EQ 1    nawater   n_elements awater       define all cells that have corners located at olon  olat   we define the cell with the address of all corners                3        2                                                                                                                   0        1     alladdr   lindgen jpio  jpjo 1    celladdr   lonarr 4  jpio jpjo 1    celladdr 0      alladdr   celladdr 1      shift alladdr   1    celladdr 2      shift alladdr   jpio   1    celladdr 3      alladdr   jpio     list the cells that have at least 1 ocean point as corner   good   where total omsk celladdr  1  GT 0    keep only those cells    celladdr   celladdr  temporary good      xcell   olon celladdr    minxcell   min xcell  dimension   1  max   maxxcell    ycell   olat celladdr    minycell   min ycell  dimension   1  max   maxycell    foraddr: address of the ocean water cell associated to each atmosphere water point   foraddr   lonarr nawater    forweight: x y position of the atmosphere water point in the ocean water cell   forweight   dblarr nawater  2      Loop on all the water point of the atmosphere   We look for which ocean water cell contains the atmosphere water point     delta   max 360 jpio   180 jpjo  4    FOR n   0L  nawater 1 DO BEGIN   control print     IF  n MOD 5000  EQ 0 THEN print  n   longitute and latitude of the atmosphere water point     xx   alon awater n      yy   alat awater n    1  we reduce the number of ocean cells for which we will try to know if   xx yy is inside       CASE 1 OF   if we are near the norh pole       yy GE  90 delta :BEGIN         lat1   90 2 delta         good   where maxycell GE lat1          onsphere   1       END   if we are near the longitude periodicity area       xx LE delta OR xx GE  360 delta :BEGIN          lat1   yy delta         lat2   yy delta         good   where minxcell LE 2 delta OR maxxcell GE  360 2 delta  AND maxycell GE lat1 AND minycell LE lat2          onsphere   1       END   other cases       ELSE:BEGIN         lon1   xx delta         lon2   xx delta         lat1   yy delta         lat2   yy delta         good   where maxxcell GE lon1 AND minxcell LE lon2 AND maxycell GE lat1 AND minycell le lat2    ORCA cases : orca grid is irregular only northward of 40N         CASE 1 OF           jpio EQ 92   AND  jpjo EQ 76   OR jpjo EQ 75   OR jpjo EQ 74   :onsphere   yy GT 40           jpio EQ 180  AND  jpjo EQ 149  OR jpjo EQ 148  OR jpjo EQ 147  :onsphere   yy GT 40           jpio EQ 720  AND  jpjo EQ 522  OR jpjo EQ 521  OR jpjo EQ 520  :onsphere   yy GT 40           jpio EQ 1440 AND  jpjo EQ 1021 OR jpjo EQ 1020 OR jpjo EQ 1019 :onsphere   yy GT 40           ELSE:onsphere   1         ENDCASE       END     ENDCASE   we found a short list of possible ocean water cells containing the atmosphere water point     IF good 0  NE  1 THEN BEGIN   in which cell is located the atmosphere water point    Warning  inquad use clockwise quadrilateral definition       ind   inquad xx  yy                        xcell 0  good  ycell 0  good                         xcell 3  good  ycell 3  good                         xcell 2  good  ycell 2  good                         xcell 1  good  ycell 1  good                         onsphere   onsphere  newcoord   newcoord   noprint    keep only the first cell  if the atmospheric point was located in several ocean cells        ind   ind 0    we found one ocean water cell containing the atmosphere water point       IF ind NE  1 THEN BEGIN         ind   good ind    we keep its address          foraddr n    ind   now  we morph the quadrilateral ocean cell into the reference square  0   1    in addition we get the corrdinates of the atmospheric point in this new morphed square         IF onsphere THEN BEGIN   Warning  quadrilateral2square use anticlockwise quadrilateral definition           xy   quadrilateral2square newcoord 0  0  newcoord 1  0                                          newcoord 0  3  newcoord 1  3                                          newcoord 0  2  newcoord 1  2                                          newcoord 0  1  newcoord 1  1                                          newcoord 0  4  newcoord 1  4          ENDIF ELSE BEGIN           xy   quadrilateral2square xcell 0  ind  ycell 0  ind                                          xcell 1  ind  ycell 1  ind                                          xcell 2  ind  ycell 2  ind                                          xcell 3  ind  ycell 3  ind  xx  yy          ENDELSE    take care of rounding errors          zero   where abs xy  LT 1e 4          IF zero 0  NE  1 THEN xy zero    0         one   where abs 1 xy  LT 1e 4          IF one 0  NE  1 THEN xy one    1   some  useless  checks          IF  xy 0  LT 0 OR xy 0  GT 1 THEN stop         IF  xy 0  LT 0 OR xy 0  GT 1 THEN stop   keep the new coordinates         forweight n  0    xy 0          forweight n  1    xy 1        ENDIF ELSE foraddr n     1     ENDIF ELSE foraddr n     1   ENDFOR   do we have some water atmospheric points that are not located in an water oceanic cell    bad   where foraddr EQ  1    IF bad 0  NE  1 THEN BEGIN   yes    we look for neighbor water atmospheric point located in water oceanic cell     badaddr   awater bad      good   where foraddr NE  1    list the atmospheric points located in water oceanic cell     goodaddr   awater good    there longitude and latitude     goodlon   alon goodaddr      goodlat   alat goodaddr    for all the bad points  look for a neighbor     neig   lonarr n_elements bad      FOR i   0  n_elements bad 1 DO BEGIN       neig i     neighbor alon badaddr i  alat badaddr i  goodlon  goodlat   sphere 0      ENDFOR   get the address regarding foraddr     neig   good neig    associate each bad point with its neighbor  get its address and weight      foraddr bad    foraddr neig      forweight bad      forweight neig      endif   transform the address of the ocean cell into the address of its 4 corners   newaaddr   celladdr  temporary foraddr    now we compute the weight to give at each corner   newaweig   dblarr 4  nawater    a   reform forweight  0  1  nawater    b   reform forweight  1  1  nawater    forweight     1   free memory   newaweig    1 a 1 b   1 b a  a b   1 a b    a    1    b    1   free memory   mask the weight to suppress the corner located on land   newaweig   newaweig omsk newaaddr    totalweig   total newaweig  1    for cell with some land corner    we have to redistribute the weight on the reaining water corners   weights normalization   totalweig   total newaweig  1    newaweig   newaweig replicate 1  4 totalweig    totalweig   total newaweig  1     weights   weig   dblarr 4  jpia jpja    weig  awater    temporary newaweig    address   addr   dblarr 4  jpia jpja    addr  awater    temporary newaaddr      RETURN END"); 
     37a[35] = new Array("./Interpolation/compute_fromreg_bilinear_weigaddr.html", "compute_fromreg_bilinear_weigaddr.pro", "", "     file_comments compute the weight and address needed 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       param weig  out     param addr  out    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         version  Id              PRO compute_fromreg_bilinear_weigaddr  alonin  alatin  olonin  olat  weig  addr       NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline     compile_opt idl2  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 "); 
     38a[36] = 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      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     keyword  NOSOUTHERNLINE    activate if you don t whant to take into account the northen southern line    of the input data when perfoming the interpolation       param weig  out     param addr  out    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      version  Id              PRO compute_fromreg_imoms3_weigaddr  alonin  alatin  olonin  olat  weig  addr                                          NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline     compile_opt idl2  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"); 
     39a[37] = 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  in required     param y0  in required      param x1  in required     param y1  in required      param x2  in required     param y2  in required      param x3  in required     param y3  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      IDL  x0    2 6 2    IDL  y0    0 2 6    IDL  x1    3 8 4    IDL  y1    4 4 6    IDL  x2    1 6 4    IDL  y2    5 6 8    IDL  x3    0 4 2    IDL  y3    1 4 8    IDL  n   4   IDL  splot   0 10   0 10  xstyle   1  ystyle   1 nodata   IDL  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    IDL  res cutpar x0  y0  x1  y1  x2  y2  x3  y3  n    IDL  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      version  Id      FUNCTION cutpar  x0  y0  x1  y1  x2  y2  x3  y3  n  endpoints   endpoints  onsphere   onsphere     compile_opt idl2  strictarrsubs     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"); 
     40a[38] = 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  in required     param y0  in required     param x1  in required     param y1  in required    1d arrays of p elements  the coordinates of the endpoints of the p segments      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      version  Id      FUNCTION cutsegment  x0  y0  x1  y1  n  endpoints   endpoints  onsphere   onsphere     compile_opt idl2  strictarrsubs     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"); 
     41a[39] = 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       param zinput  in required    data to be extrapolate      param maskinput  in required       param nb_iteration  in optional    number of iteration      keyword x_periodic    keyword MINVAL    keyword MAXVAL      version  Id      FUNCTION extrapolate  zinput  maskinput  nb_iteration  x_periodic   x_periodic  MINVAL   minval  MAXVAL   maxval     compile_opt idl2  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  "); 
     42a[40] = new Array("./Interpolation/fromirr.html", "fromirr.pro", "", "       file_comments interpolate data from an irregular 2D grid to any 2D grid      Only 1 metod available: bilinear         categories interpolation      examples     dataout   fromirr method  datain   lonin  latin  mskin  lonout  latout  mskout          param method:  in required  a string defining the interpolation method  must be  bilinear        param datain:  in required  a 2D array the input data to interpolate       param lonin:  in required  a 2D array defining the longitude of the input data       param latin:  in required  a 2D array defining the latitude of the input data        param mskin:  in required  a 2D array  the land sea mask of the input data  1 on ocean  0 on land        param lonout:  in required  1D or 2D array defining the longitude of the output data        param latout:  in required  1D or 2D array defining the latitude of the output data        param mskout:  in required  a 2D array  the land sea mask of the ouput data  1 on ocean  0 on land       keyword WEIG  see ADDR     keyword 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  that are undefined or equal to 0  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  This greatly       speed up the interpolation  In that case  lonin  latin  lonout and latout are not necessary       returns 2D array: the interpolated data      restrictions We supposed the data are located on a sphere  with a periodicity along                the longitude                 Note that the input data can contain the same cells several times                like ORCA grid near the north pole boundary       examples       IDL  tncep   fromirr bilinear  topa  glamt  gphit  tmask 0  lonout  latout  mskout       or      IDL  t1ncep   fromirr bilinear  topa  glamt  gphit  tmask 0  lonout  latout  mskout                                  WEIG   a  ADDR   b    IDL  help  a  b   IDL  t2ncep   fromirr bilinear  topa  WEIG   a  ADDR   b       history    June 2006: Sebastien Masson  smasson lodyc jussieu fr         version  Id            FUNCTION fromirr  method  datain  lonin  latin  mskin  lonout  latout  mskout                       WEIG   weig  ADDR   addr     compile_opt strictarr  strictarrsubs        atmospheric grid parameters       alon   lonin     alat   latin     get_gridparams  alon  alat  jpia  jpja  2   double     Oceanic grid parameters       olon   lonout     olat   latout     get_gridparams  olon  olat  jpio  jpjo  2   double     Compute weight and address     IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     CASE method OF        bilinear :compute_fromirr_bilinear_weigaddr  alon  alat  mskin  olon  olat  mskout  weig  addr       ELSE:BEGIN          print    unknown interpolation method  we stop          stop       ENDELSE     ENDCASE   ENDIF     to the interpolation     dataout   total weig datain addr  1    dataout   reform dataout  jpio  jpjo   over      RETURN  dataout END"); 
     43a[41] = 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  in required   1D or 2D array defining the longitude of the input data    param latin  in required   1D or 2D array defining the latitude of the input data    param lonout  in required   1D or 2D array defining the longitude of the output data    param latout  in required   1D or 2D array defining the latitude of the output data      keyword WEIG  see ADDR     keyword 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  that are undefined or equal to 0  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     keyword  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          IDL  topa   fromreg bilinear  tncep  xncep  yncep  glamt  gphit       or       IDL  t1opa   fromreg bilinear  t1ncep  xncep  yncep  glamt  gphit  WEIG   a  ADDR   b     IDL  help  a  b    IDL  t2opa   fromreg bilinear  t2ncep  xncep  WEIG   a  ADDR   b       history    November 2005: Sebastien Masson  smasson lodyc jussieu fr        version  Id            FUNCTION fromreg  method  datain  lonin  latin  lonout  latout                       WEIG   weig  ADDR   addr                       NONORTHERNLINE   nonorthernline                       NOSOUTHERNLINE   nosouthernline     compile_opt idl2  strictarrsubs        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     IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     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"); 
     44a[42] = 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 in1  in required  1d or 2D arrays defining longitudes and latitudes     param in2  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  in  the number of points in the longitudinal direction    param in4  in  the number of points in the latitudinal direction    param in5  in  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       keyword  DOUBLE use double precision to perform the computation      examples     1  IDL  ncdf_get_gridparams   coordinates_ORCA_R05 nc   glamt   gphit                   olon  olat  jpio  jpjo  2     2  IDL  ncdf_get_gridparams  olon  olat  jpio  jpjo  2      history    November 2005: Sebastien Masson  smasson lodyc jussieu fr       version  Id              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       compile_opt idl2  strictarrsubs     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"); 
     45a[43] = new Array("./Interpolation/imoms3.html", "imoms3.pro", "", "           param xin  in required       version  Id      FUNCTION imoms3  xin     compile_opt idl2  strictarrsubs      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"); 
     46a[44] = 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    IDL  res   inquad x  y  x1  y1  x2  y2  x3  y3  x4  y4       param x  in required     param 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  in required     param y1  in required     param x2  in required     param y2  in required     param x3  in required     param y3  in required     param x4  in required     param 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       keyword NEWCOORD      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  x   1 1  2  6  7  3    IDL  y   1 1  3  3  4  7    IDL  x1   1 0 4 2    IDL  y1   1 1 4 8    IDL  x2   1 1 6 4    IDL  y2   1 5 6 8    IDL  x3   1 3 8 4    IDL  y3   1 4 4 6    IDL  x4   1 2 6 2    IDL  y4   1 0 2 6    IDL  splot   0 10   0 10  xstyle   1  ystyle   1 nodata   IDL  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    IDL  oplot  x  y  color   20  psym   1  thick   2   IDL  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       version  Id      FUNCTION inquad  x  y  x1  y1  x2  y2  x3  y3  x4  y4  ONSPHERE   onsphere   DOUBLE   double  ZOOMRADIUS   zoomradius  NOPRINT   noprint  NEWCOORD   newcoord     compile_opt idl2  strictarrsubs     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       found   found 0        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"); 
     47a[45] = 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    param 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      version  Id       FUNCTION inrecgrid  x1d  y1d  left  bottom  output2d   output2d  checkout   checkout     compile_opt idl2  strictarrsubs     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"); 
     48a[46] = 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      version  Id            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     compile_opt idl2  strictarrsubs       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  "); 
     49a[47] = 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    IDL  Result   Map_nPoints lon0  lat0  lon1  lat1       param Lon0  in required     param Lat0  in required     np0 elements vector  longitudes and latitudes of np0 points P0       param Lon1  in required     param 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      version  Id      Function Map_npoints  lon0  lat0  lon1  lat1  azimuth   azimuth        RADIANS   radians  RADIUS   radius  MIDDLE   middle  TWO_BY_TWO   two_by_two    COMPILE_OPT idl2  strictarrsubs    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"); 
     50a[48] = 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      param neighlon  in optional      param neighlat  in optional        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 closest 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      version  Id      FUNCTION neighbor  p0lon  p0lat  neighlon  neighlat  sphere   sphere  distance   distance  radians   radians     compile_opt idl2  strictarrsubs     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"); 
     51a[49] = 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      IDL  res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin        param x0in  in required     param y0in  in required     param x1in  in required     param y1in  in required     param x2in  in required     param y2in  in required     param x3in  in required     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       keyword PERF      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              version  Id            FUNCTION quadrilateral2square  x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  xxin  yyin  PERF   perf       compile_opt idl2  strictarrsubs   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"); 
     52a[50] = 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      version  Id            FUNCTION spl_fstdrv  x  y  yscd  x2     compute the first derivative of the spline function     compile_opt idl2  strictarrsubs     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 "); 
     53a[51] = 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   IDL   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        param der2    param x       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      IDL  n   100L   IDL  x    dindgen n 2    IDL  y   abs randomn 0  n    IDL  y n 2:n 2 1    0    IDL  y n n 3    0    IDL  y n n 6:n n 6 5    0    IDL  y   total y   cumulative   double    IDL  x2   dindgen n 1 2    IDL  n2   n_elements x2    IDL  print  min y 1:n 1 y 0:n 2  LT 0   IDL  y2   spl_incr  x  y  x2    IDL  splot  x  y  xstyle   1  ystyle   1  ysurx 25  petit    1  2  1   land   IDL  oplot  x2  y2  color   100   IDL  c   y2 1:n2 1    y2 0:n2 2    IDL  print  min c  LT 0    IDL  print  min c  max   ma  ma   IDL  splot c xstyle 1 ystyle 1  yrange 01 05  ysurx 25  petit    1  2  2   noerase   IDL  oplot 0  n_elements c   0  0  linestyle   1      history    Sebastien Masson  smasson lodyc jussieu fr : May Dec 2005      version  Id            FUNCTION pure_concave  x1  x2  y1  y2  der2  x   X n type     compile_opt idl2  strictarrsubs     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       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        param der2    param x      FUNCTION pure_convex  x1  x2  y1  y2  der2  x   1 1 X n type     compile_opt idl2  strictarrsubs     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       param x    param y    param x2    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     compile_opt idl2  strictarrsubs       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"); 
     54a[52] = 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      version  Id            FUNCTION spl_keep_mean  x  yin  x2  YP0   yp0  YPN_1   ypn_1  GE0   ge0     compile_opt idl2  strictarrsubs       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"); 
     55a[53] = 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    IDL   res   square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin            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              version  Id            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        compile_opt idl2  strictarrsubs     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   dblarr 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"); 
    5656a[54] = new Array("./Obsolete/common.html", "common.pro", "", ""); 
    57 a[55] = 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     compile_opt idl2  strictarrsubs  obsolete     file_copy  filenamein  filenameout  _extra   ex   RETURN END"); 
    58 a[56] = new Array("./Obsolete/ficdate.html", "ficdate.pro", "", "           file_comments  sets s_fichier to name of the vairmer file associated             to the given date in vairmer format   yymmdd        obsolete      param vdate  in  date vairmer ex:930124    param dim  in   so  ou  vo  par defaut so est choisi    param nomexp  in  nom de l experience en trois lettres par defaut prefix      returns le nom du fichier vairmer  depuis iodir       uses common pro      examples   IDL  fic   ficdate 930124       history Jerome Vialard   jv lodyc jussieu fr   1 7 98         function ficdate  vdate  dim  nomexp     compile_opt idl2  strictarrsubs  obsolete    common   case n_params  of   1: dim    SO    2: dim strupcase dim    3: begin        prefix nomexp        dim strupcase dim       end endcase       constitution de l adresse ou aller chercher le fichier     date yymmdd   vdate   sets month  year and day to the good value :    rien   juldate vdate    constitution de la date yymmdd    case 1 of       year lt 10:                s_year  0 string format i1 year       year ge 10 and year lt 100:s_year      string format i2 year       year ge 100:BEGIN          year   year 1900         if year LT 10 then s_year  0 string format i1 year             ELSE s_year  string format i2 year       end    endcase    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       case dim of       SO : begin        case 1 of            year eq 0  and  month eq 0  : s_fichier iodir prefix O EX SO             year eq 0  and  month ne 0  and  day eq 0  : s_fichier iodir prefix O SE SO s_month            year ne 0  and  month eq 0  : s_fichier iodir prefix O AN SO s_year            year ne 0  and  day eq 0  :   s_fichier iodir prefix O MO SO s_year s_month           else: s_fichier iodir prefix O SO s_year s_month s_day        endcase      end       VO : begin        case 1 of            year eq 0  and  month eq 0  : s_fichier iodir prefix O EX VO             year eq 0  and  month ne 0  and  day eq 0  : s_fichier iodir prefix O SE VO s_month            year ne 0  and  month eq 0  : s_fichier iodir prefix O AN VO s_year            year ne 0  and  day eq 0  : s_fichier iodir prefix O MO VO s_year s_month           else: s_fichier iodir prefix O VO s_year s_month s_day        endcase      end      else: return  report le fichier doit etre VO ou SO     endcase       print        print  adresse du fichier:  fichier      return  s_fichier   end  "); 
    59 a[57] = new Array("./Obsolete/fictype.html", "fictype.pro", "", "           file_comments  gives fictype  DA   MO   AN   SE   EX  corresponding             to the given date in vairmer format   yymmdd      uses common pro      examples   IDL  fictype   fictype 930124       history Jerome Vialard   jv lodyc jussieu fr    2 7 98         function fictype  vdate  dim     compile_opt idl2  strictarrsubs  obsolete    common       constitution de l adresse ou aller chercher le fichier     date yymmdd   vdate    jul   juldate vdate       case 1 of        year eq 0  and  month eq 0  : return   EX         year eq 0  and  month ne 0  and  day eq 0  : return   SE         year ne 0  and  month eq 0  : return   AN         year ne 0  and  day eq 0    : return   MO        else                         : return   DA     endcase        fini:      return   1 end  "); 
    60 a[58] = 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     compile_opt idl2  strictarrsubs  obsolete     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  "); 
    61 a[59] = 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     compile_opt idl2  strictarrsubs  obsolete    case n_params  OF   0:return  daysinmonth    1:return  daysinmonth mois    2:return  daysinmonth mois  annee  endcase  end"); 
    62 a[60] = 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     compile_opt idl2  strictarrsubs  obsolete   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  "); 
    63 a[61] = 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     compile_opt idl2  strictarrsubs  obsolete    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 "); 
    64 a[62] = 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     compile_opt idl2  strictarrsubs  obsolete    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    "); 
    65 a[63] = new Array("./Obsolete/meshlec.html", "meshlec.pro", "", "             file_comments lecture du mask de des sorties d OPA  les sources se trouvent ds les    repertoires sur maia du type:     nom_exp RESTARTS      obsolete    examples   IDL  meshmask  nomfich       param  nomfich  in required  string  c est le nom du fichier a lire  Par defaut  c est meshmask           keyword GLAMBOUNDARY  in  un vecteur de 2 elements specifaint le min et le      max qui doivent etre imposes en longitude  obligatoire si le      tableau depasse 360 degres       keyword  pasblabla  in  pour suprimer les blablas      keyword  DOUBLE  in  pour forcer a lire les tableaux en double          precision  ce Mot clef est maintenant active          automatiquement       uses common pro      restrictions    La definition de ixminmesh ixmaxmesh iyminmesh iymaxmesh     izminmesh izmaxmesh doit etre faite avant l entree dans cette    routine  pour attribuer automatiquement ces valeurs au maximum    possible les mettre toutes a  1 et meshlec les calculera       history Sebastien Masson  smasson lodyc jussieu fr        Marina Levy : lecture en double precision  cas calcul sur shine          pro meshlec  nomfich  PASBLABLA   pasblabla DOUBLE   double  GLAMBOUNDARY   glamboundary  GETDIMENSIONS   GETDIMENSIONS     compile_opt idl2  strictarrsubs  obsolete    common    tempsun   systime 1            pour key_performance        jpiglo        0L    jpjglo        0L    jpkglo        0L    tab       aaaaa       definition du domaine de la grille surlequel sont    effectuees les sorties les indices des tableaux commencant    a 1: cf le fichier wrivr2 F ds WKOPA sur le cray     LECTURE DU MASK trouve ds les fichiers restart                 constitution de l adresse s_fichier et       ouverture du fichier a l adresse s_fichier       IF n_params  EQ 0 then nomfich    meshmask     s_fichier   isafile file   nomfich  iodir   iodir     if not keyword_set pasblabla  then print         if not keyword_set pasblabla  then print adresse du fichier:  s_fichier     openr  numlec  s_fichier   get_lun   f77_unformatted   swap_if_little_endian    filepamameters   fstat numlec          lecture      readu  numlec  jpiglo  jpjglo  jpkglo    if not keyword_set pasblabla  then print   taille de la grille d origine:  jpiglo   jpjglo   jpkglo      if keyword_set getdimensions  then begin       free_lun numlec       close  numlec       return    endif      on determine si le fichier a ete ecrit en double precision on non     sizenumber   8l    sizefile8   4l 3l 4l 4l        4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo jpkglo sizenumber 4l         1l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpkglo sizenumber 4l     if filepamameters size GE sizefile8 THEN double   1      sizenumber   4l      sizefile4   4l 3l 4l 4l          4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo jpkglo sizenumber 4l           1l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpkglo sizenumber 4l    print  filepamameters size   sizefile4   sizefile8      case filepamameters size of         sizefile8:double   1         sizefile4:double   0         ELSE:BEGIN             nothing   report The OPA Mesh file as not the good size             free_lun numlec            close  numlec            return          END      endcase        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         jpi      long ixmaxmesh ixminmesh 1     jpj      long iymaxmesh iyminmesh 1     jpk      long izmaxmesh izminmesh 1      doit on reellement lire la grille       meshparameters    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         noticebase xnotice Lecture du fichier  C  s_fichier C         IF NOT keyword_set double  THEN BEGIN        z3d      fltarr jpiglo  jpjglo  jpkglo        z2d      fltarr jpiglo  jpjglo        z1d      fltarr jpkglo     ENDIF ELSE BEGIN        z3d      dblarr jpiglo  jpjglo  jpkglo        z2d      dblarr jpiglo  jpjglo        z1d      dblarr jpkglo     ENDELSE      if not keyword_set pasblabla  then print         readu  numlec  tab z2d    GLAMT float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMT 25 31 :  GLAMT 25 31     readu  numlec  tab z2d    GLAMU float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMU 25 31 :  GLAMU 25 31     readu  numlec  tab z2d    GLAMV float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMV 25 31 :  GLAMV 25 31     readu  numlec  tab z2d    GLAMF float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMF 25 31 :  z2d 25 31      if not keyword_set pasblabla  then print         readu  numlec  tab  z2d      GPHIT float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIT 25 31 :  GPHIT 25 31     readu  numlec  tab  z2d      GPHIU float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIU 25 31 :  GPHIU 25 31     readu  numlec  tab  z2d      GPHIV float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIV 25 31 :  GPHIV 25 31     readu  numlec  tab  z2d      GPHIF float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIF 25 31 :  z2d 25 31      if not keyword_set pasblabla  then print         readu  numlec  tab  z2d    E1T float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1T 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E1U float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1U 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E1V float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1V 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E1F float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1F 25 5 :  z2d 25 5      if not keyword_set pasblabla  then print         readu  numlec  tab  z2d    E2T float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2T 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E2U float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2U 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E2V float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2V 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E2F float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2F 25 5 :  z2d 25 5      if not keyword_set pasblabla  then print         readu  numlec  tab  z3d         TMASK byte z3d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur TMASK 25 5 0 :  TMASK 25 5 0     readu  numlec  tab  z3d       UMASKred byte z3d ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh     umaskred   reform umaskred     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur UMASK 25 5 0 :  z3d 25 5 0     readu  numlec  tab  z3d        VMASKred byte z3d ixminmesh:ixmaxmesh iymaxmesh izminmesh:izmaxmesh     vmaskred   reform vmaskred     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur VMASK 25 5 0 :  z3d 25 5 0     readu  numlec  tab  z3d        fmaskredy byte z3d ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh     coast   where fmaskredy NE 0 and fmaskredy NE 1     IF coast 0  NE  1 THEN fmaskredy coast    0b    fmaskredx byte z3d ixminmesh:ixmaxmesh iymaxmesh izminmesh:izmaxmesh     coast   where fmaskredx NE 0 and fmaskredx NE 1     IF coast 0  NE  1 THEN fmaskredx coast    0b    fmaskredx   reform fmaskredx     fmaskredy   reform fmaskredy     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur FMASK 25 5 0 :  z3d 25 5 0       if not keyword_set pasblabla  then print         readu  numlec  tab  z2d     FF z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur FF 25 5 :  z2d 25 5     readu  numlec  tab  z1d    GDEPT float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GDEPT 1 :  GDEPT 1     readu  numlec  tab  z1d        GDEPW float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GDEPW 1 :  GDEPW 1     readu  numlec  tab  z1d       E3T float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E3T 3 :  E3T 3     readu  numlec  tab  z1d       E3W float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E3W 3 :  E3W 3       free_lun numlec    close  numlec       bornes de glam qui ne doivent pas depasser 360 degres          minglam   min glamt  max   maxglam       if maxglam minglam GE 360 AND NOT keyword_set glamboundary  then         nothing   execute glamboundary    xquestion What are the longitudes boundary   180 180 chkwidget       if keyword_set glamboundary  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       endif    endif     shift en x      if keyword_set key_shift  AND jpi NE 1 then begin       glamt   shift glamt key_shift   0        gphit   shift gphit key_shift   0        e1t   shift e1t  key_shift  0        e2t   shift e2t key_shift   0        glamu   shift glamu  key_shift  0        gphiu   shift gphiu  key_shift  0        e1u   shift e1u key_shift   0        e2u   shift e2u  key_shift  0        glamv   shift glamv  key_shift  0        gphiv   shift gphiv  key_shift  0        e1v   shift e1v key_shift   0        e2v   shift e2v  key_shift  0        glamf   shift glamf  key_shift  0        gphif   shift gphif  key_shift  0        e1f   shift e1f  key_shift   0        e2f   shift e2f  key_shift  0        if jpk EQ 1 then begin          tmask   shift tmask  key_shift  0           vmaskred   shift vmaskred  key_shift           fmaskredx   shift fmaskredx  key_shift        ENDIF ELSE BEGIN          tmask   shift tmask  key_shift  0 0           vmaskred   shift vmaskred  key_shift  0           fmaskredx   shift fmaskredx  key_shift  0        ENDELSE    endif      key_yreverse   0    key_zreverse   0    key_partialstep   0    key_stride    1  1  1     key_gridtype    c       if not keyword_set pasblabla  then print lecture  nomfich  finie     widget_control  noticebase  bad_id   toto   destroy    if keyword_set key_performance  THEN print   temps meshlec  systime 1 tempsun      return end    "); 
    66 a[64] = 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       compile_opt idl2  strictarrsubs  obsolete     CASE n_params  OF     0:ncdf_meshread  _EXTRA   ex     1:ncdf_meshread  filename  _EXTRA   ex   ENDCASE     return END"); 
    67 a[65] = 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     compile_opt idl2  strictarrsubs  obsolete    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              "); 
    68 a[66] = 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     compile_opt idl2  strictarrsubs  obsolete    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"); 
    69 a[67] = 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     compile_opt idl2  strictarrsubs  obsolete    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"); 
    70 a[68] = 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     compile_opt idl2  strictarrsubs  obsolete    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"); 
    71 a[69] = new Array("./Obsolete/nlecsaison.html", "nlecsaison.pro", "", "           file_comments lit les moyennes annuelles   sur maia:  u rech eee reee217 TOTEM REF OUTPUTS     obsolete      categories lecture de NETCDF      examples   IDL  res nlecsaison 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 saisonnier climato grid T nc     function nlecsaison  nom  numsortie79  nbretps BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    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 saisonnier climato 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 saisonnier climato grid        IF quelsfichiers 0  EQ   THEN     liste vide          return  report LES FICHIERS:  iodir prefix saisonnier climato 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 saisonnier climato 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       IF numsortie79 EQ 13 THEN vardate CLIMATOLOGIE  prefix         ELSE begin          vardate climato mensuelle  strtrim numsortie79 1        endelse    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"); 
    72 a[70] = new Array("./Obsolete/nlecserie.html", "nlecserie.pro", "", "           file_comments lit les series temporelles se rapportant a une variable   sur maia:  u rech eee reee217 TOTEM REF OUTPUTS     obsolete      categories lecture de NETCDF      examples    IDL  res nlecserie nom  date1  date2       param nom  in required  nom du tableau contenant le champ que l on veut  le   trouver avec ncdflec fichier var       param  date1 date2  in required  les dates vermairs qui delimitent la serie temporelle      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 sss grid T nc   function nlecserie  nom  date1  date2 BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    common        res 1    anneedepart 1979     gestion du nom de la grille   et ouverture du fichier     liste des fichiers pouvant convenir    quelsfichiers   findfile iodir prefix nom grid     IF quelsfichiers 0  EQ   THEN BEGIN   liste vide        print   LES FICHIERS:  iodir prefix nom grid  n existe pas        return    1    ENDIF ELSE BEGIN        vargrid strmid quelsfichiers 0 strpos quelsfichiers 0 grid 5 1   nom de grille       IF  version OS_FAMILY EQ  unix  THEN spawn   file  quelsfichiers 0     dev null        cdfid ncdf_open quelsfichiers 0     ENDELSE      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     ncdf_attget cdfid file_name value global    varexp string value     varexp strmid varexp  0  strpos varexp        lecture de l axe des temps en entier on ja reperer la place des   dates debut et fin pour faire l extraction temporelle      ncdf_varget cdfid time_counter time    time   long time julday 1  5  1979      debut   where time EQ juldate date1      fin   where time EQ juldate date2     debut   where time EQ date1     fin   where time EQ date2     if debut 0  EQ  1 then         return  report l axe des temps ne contient pas la date de debut  strtrim date1  1     if fin 0  EQ  1 then         return  report l axe des temps ne contient pas la date de fin  strtrim date2  1     time   time debut 0 :fin 0     jpt fin 0 debut 0 1    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       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    endif       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    ENDELSE      ncdf_varget cdfid nom res        offset premierx premiery debut 0         count nx ny fin 0 debut 0 1       ncdf_close cdfid    return res     end"); 
    73 a[71] = new Array("./Obsolete/vairdate.html", "vairdate.pro", "", "             file_comments  gives vairmer date equivalent of a date in julian format             sets month  day and year to the corresp values    obsolete    file_comments you better use jul2date      examples    IDL  vdate   vairdate 1755087       param jdate  in required  date en jours juliens        keyword MENSUEL a activer si on veut pour  que les dates dont le jour est      15 deviennent avec un jour egale a 0  par ex:      19990115       19990100      keyword  ANNUEL a activer si on veut pour  que les dates dont le mois est      6 et dont le jour est 1 deviennent avec un mois et jour egale a      0  par ex:      19990601       19990000      returns vdate date vairmer     plus year  month et day      uses  common        history  Jerome Vialard   jv lodyc jussieu fr      2 7 98                  13 9 1999  Sebastien Masson  smasson lodyc jussieu fr                          ANNUEL MENSUEL _EXTRA et possibilite                         d utiliser vairdate avec des scalaire ou des                         tableaux         function vairdate  jdate   ANNUEL   annuel  MENSUEL   mensuel  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    common      caldat  jdate  month  day  year  _EXTRA   ex    index   where year eq  1     if index 0  NE  1 then year index    0    if keyword_set mensuel  THEN BEGIN        index   where day EQ 15        if index 0  NE  1 then day index    0    endif    if keyword_set annuel  THEN BEGIN        index   where day EQ 1 AND month EQ 6        if index 0  NE  1 then BEGIN           day index    0          month index    0       endif    endif      return  10000L year 100L month day   end  "); 
    74 a[72] = new Array("./Obsolete/vraidate.html", "vraidate.pro", "", "           file_comments donne la date en long    obsolete        param date  in required  une date du type yyyymmdd       keyword  GRADS if  1 le year le 49 then year   2000 year                 if 50 le year le 99 then year   1900 year      returns une date vairmer du type yyyymmdd   si year est nulle ou egale a  1 ne change rien      examples    IDL  res vraidate date    IDL  vraidate 980703     donne 19980703 qui est un long      history Sebastien Masson  smasson lodyc jussieu fr      3 7 98   remove automatic change from year 1 to 1901  Aug 2004         function vraidate  date  GRADS   grads  _EXTRA   ex       compile_opt idl2  strictarrsubs  obsolete     IF NOT keyword_set GRADS  THEN return  long date      date   long date    annee   date 10000   return  date 19000000L annee GE 50 and date lt 1000000 20000000L annee LT 50 and date lt 1000000    end"); 
    75 a[73] = new Array("./Postscript/closeps.html", "closeps.pro", "", "           file_comments Close the Postscript mode      when archive_ps ne 0  we add the name and the date    at the bottom left corner of the postcript page  If the    postscript is called idl ps we change its name to number ps     number automatically found to be 1 larger that any of the    existing ps file       keyword INFOWIDGET A long integer giving the id of the information             widget  created by openps  that we have de destroy at              the end of closeps  when the postscript is done       uses cm_4ps      history Sebastien Masson  smasson lodyc jussieu fr                          21 12 98   June 2005: Sebastien Masson  english version with new commons          PRO closeps  INFOWIDGET   infowidget       compile_opt idl2  strictarrsubs      IF lmgr demo  EQ 1 THEN return     include commons  cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     IF  d name NE  PS  THEN GOTO  last_part     if archive_ps   0 we will add its name and the date at the bottom   left corner of the page  in case if the postscript will be archived    in printps       IF keyword_set archive_ps  THEN BEGIN     we get the name of the latest created postscript          psdir   isadirectory psdir  title    Select psdir       nameps   file_search psdir ps                                 test_regular   test_write   nosort       dates    file_info nameps mtime      lastdate    reverse sort temporary dates 0       nameps   nameps lastdate       nameps   file_basename nameps   ps    If this name is idl ps then we change it to the number ps      IF nameps EQ  idl  then BEGIN   get the name of all the  ps or  ps gz files available in psdir        allps   file_search psdir ps ps gz pdf   test_regular   nosort         allps   file_basename file_basename allps gz ps         allps   file_basename allps pdf    find which of these names corresponds to numbers    get ascii codes of the names        testnumb   byte allps    longest name        maxstrlen    size testnumb   dimensions 0    ascii codes can be 0 or between byte 0  and byte 9         testnumb   testnumb EQ 0 OR                      testnumb GE  byte 0 0  AND testnumb LE  byte 9 0         testnumb   where total testnumb  1  EQ maxstrlen  count         IF count NE 0 THEN BEGIN   get the largest number          psnumber   fix allps testnumb           psnumber    psnumber reverse sort psnumber 0    1        ENDIF ELSE psnumber   0        nameps   strtrim psnumber  2       ENDIF     we annote the postscript        date   byte systime 0       we get the date      xyouts   d x_px_cm   d y_px_cm                  nameps   string date 4:10 string date 20:23                    device  charsize    75    ENDIF     close the postcript mode    device   close   last_part:      thisOS   strupcase strmid version os_family  0  3     CASE thisOS of       MAC : SET_PLOT  thisOS       WIN : SET_PLOT  thisOS      ELSE: SET_PLOT   X     ENDCASE        def_myuniquetmpdir    colorfile   myuniquetmpdir    original_colors dat     IF file_test colorfile   regular  THEN BEGIN      restore  colorfile      file_delete  colorfile   quiet   reload the original colors      tvlct  red  green  blue    ENDIF     p font    1   force background color to the last color  white      p BACKGROUND d n_colors 1    255     p color 0    if  d n_colors gt 256 then  p background ffffff x      if keyword_set infowidget  then       widget_control  long infowidget  bad_id   toto   destroy      return end"); 
    76 a[74] = new Array("./Postscript/openps.html", "openps.pro", "", "             file_comments switch to postcript mode and define it      param namepsin  in optional  name of the postscript file  Extension  ps  is added                  if missing  It will be stored in the psdir directory       keyword FILENAME to define the name of the postcript file through                    a keyword rather than with nameps inut argument                     in this case the keyword can be pass through                     different routines via _extra keyword       keyword INFOWIDGET If INFOWIDGET is present  it specifies a named               variable into which the id of the widget giving informations               about the postscript creation is stored as a long integer                This id is needed by close ps to kill the information widget       keyword KEEP_PFONT activate to suppress the modification of  p font               by defaut we force   p font   0  to make smaller postscripts     keyword KEEPPFONT same as keep_pfont      keyword LIGHTNESS a scalar used to change the Lightness of the color              palette to be abble to adjust according to the printer we use               the media  paper or slide                   lightness  1 to get darker colors      keyword _EXTRA: used to pass any keyword to device procedure        uses cm_4ps      history Sebastien Masson  smasson lodyc jussieu fr    21 12 98   1 2 98: ajout de nameps en input   1 9 1999: ajout du mot cle FILENAME et du widget   June 2005: Sebastien Masson  cleaning  english version with new commons          pro openps  namepsin  FILENAME   filename  INFOWIDGET   infowidget                 KEEPPFONT   keeppfont  KEEP_PFONT   keep_pfont                 PORTRAIT   portrait  LANDSCAPE   landscape                 LIGHTNESS   Lightness _extra   ex       compile_opt idl2  strictarrsubs      IF lmgr demo  EQ 1 THEN BEGIN       dummy   report impossible to create a PS in demo mode        return    ENDIF     include commons  cm_4ps IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew ENDIF     close the postcript device if we are already in postcsrit mode    IF  d name EQ  PS  THEN device   close   switch to postscript mode    set_plot ps      if we use  keyword Lightness   save the actual color palette in a temporary file    to be restored when calling closeps      IF n_elements Lightness  NE 0 THEN BEGIN      IF Lightness NE 1 THEN BEGIN        tvlct  red  green  blue   get        def_myuniquetmpdir        save  red  green  blue  filename   myuniquetmpdir    original_colors dat         palit  Lightness  red  green  blue      ENDIF    ENDIF     we define the name of the file      CASE 1 OF      n_params  EQ 1:nameps   namepsin      keyword_set filename : nameps   filename      ELSE:nameps   xquestion Name of the postscript file   idl ps   chkwid     ENDCASE   make sure that nameps ends with  ps     nameps   file_dirname nameps   mark_directory                  file_basename nameps   ps     ps    add path  psdir  and check that nameps is ok    nameps   isafile nameps  iodir   psdir   new      we define xsize  ysize  xoffset et  yoffset       IF n_elements portrait  NE 0 OR n_elements landscape  NE 0 THEN        key_portrait   keyword_set portrait     1   keyword_set landscape      if key_portrait EQ 1 then begin       xs   min page_size        ys   max page_size        xoff   0        yoff   0     ENDIF ELSE BEGIN        xs   max page_size        ys   min page_size        xoff   0        yoff   max page_size     ENDELSE      We define the device of the postscript mode      device   color   palatino  filename   strcompress nameps   remove_all                 LANDSCAPE   1   key_portrait  PORTRAIT   key_portrait                xsize   xs  ysize   ys  xoffset   xoff  yoffset   yoff                bits_per_pixel   8  _extra   ex   to make smaller postcripts    IF NOT  keyword_set keeppfont  OR keyword_set keep_pfont       THEN  p font   0      show some informations    IF arg_present infowidget  THEN       infowidget   xnotice Postcript file is currently processed       RETURN END            "); 
    77 a[75] = new Array("./Postscript/printps.html", "printps.pro", "", "                  archiving possibilities        if archive_ps  common variable of cm_4ps  ne 0 then the postscript   can be saved for archiving if it is printed or if the button    archive ps  is pressed  if it is printed and archive_ps   1 then   the archiving is done automatically whereas we ask if the postscript   file must be archived or not    If the postcript name is  idl ps   default name  then this name will   be changed to number ps  number automatically found to be 1 larger   that any of the existing ps file       categories for the postscripts      restrictions     1  this is working only with unix linux osX machines     2  definition of the printing command     the printing command is defined by the common variable  print_command    in cm_4ps  This command must be defind build in a way that it the   instruction:       print_command i printer_machine_names i   file ps   or       print_command printer_machine_names i   file ps   is working  default definition is  lpr  P         history Sebastien Masson  smasson lodyc jussieu fr   21 12 98                         25 8 19999 utilisation des widgets                         8 9 1999 utilisation de cw_bgroup   June 2005: Sebastien Masson: cleaning  english version with new commons          PRO printps_event  event     include commons     compile_opt idl2  strictarrsubs    cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     What kind of event do we have     widget_control  event id  get_uvalue   uval   case on the event   CASE uval name OF     visualize case : postscript visualization         visualize :BEGIN    paper orientation       if key_portrait EQ 1 then ori    portrait  ELSE ori    seascape    paper format       CASE round 10 total page_size  OF         round 10 83 9611   118 816  : papsize    a0          round 10 59 4078   83 9611  : papsize    a1          round 10 41 9806   59 4078  : papsize    a2          round 10 29 7039   41 9806  : papsize    a3          round 10 20 9903   29 7039  : papsize    a4          round 10 14 8519   20 9903  : papsize    a5          round 10 10 4775   14 8519  : papsize    a6          round 10 7 40833   10 4775  : papsize    a7          round 10 5 22111   7 40833  : papsize    a8          round 10 3 70417   5 22111  : papsize    a9          round 10 2 61056   3 70417  : papsize    a10          round 10 100 048   141 393  : papsize    b0          round 10 70 6967   100 048  : papsize    b1          round 10 50 0239   70 6967  : papsize    b2          round 10 35 3483   50 0239  : papsize    b3          round 10 25 0119   35 3483  : papsize    b4          round 10 17 6742   25 0119  : papsize    b5          round 10 22 86   30 48  : papsize    archA          round 10 30 48   45 72  : papsize    archB          round 10 45 72   60 96  : papsize    archC          round 10 60 96   91 44  : papsize    archD          round 10 91 44   121 92  : papsize    archE          round 10 21 59   33 02  : papsize    flsa          round 10 21 59   33 02  : papsize    flse          round 10 13 97   21 59  : papsize    halfletter          round 10 19 05   25 4  : papsize    note          round 10 21 59   27 94  : papsize    letter          round 10 21 59   35 56  : papsize    legal          round 10 27 94   43 18  : papsize    11x17          round 10 43 18   27 94  : papsize    ledger          ELSE:papsize    a4        ENDCASE       call the viewers       CASE event value OF          Ghostview :spawn   ghostview  papsize   quiet  ori   uval nameps          Ghostscript :spawn   gs  sPAPERSIZE papsize   q  uval nameps          Kghostview :spawn   kghostview  uval nameps       ENDCASE       return      END     print case: print and archive the file if needed        print :BEGIN    printer selection       printer   printer_machine_names event value    print       CASE n_elements print_command  OF         0:ptcmd    lpr  P          1:ptcmd   print_command 0          n_elements printer_machine_names :ptcmd   print_command event value          ELSE:BEGIN           ng   report bad definition of print_command  common variable of cm_4ps   C we did not print the postscript file   simple            return         END       ENDCASE       spawn  ptcmd   printer         uval nameps     printing informations          spawn   lpq  P imprimante   l  info     display them         xdisplayfile   nothing  text   info                           title    Printing Info  file_basename uval nameps                            height   n_elements info   printps      history Sebastien Masson  smasson lodyc jussieu fr   21 12 98                         25 8 19999 utilisation des widgets                         8 9 1999 utilisation de cw_bgroup   June 2005: Sebastien Masson: cleaning  english version with new commons        PRO printps  psfilename     this is working only with unix linux osX machines     compile_opt idl2  strictarrsubs     thisOS   strupcase strmid version os_family  0  3    CASE thisOS OF       MAC :return      WIN :return     ELSE:   ENDCASE     include commons  cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     we get the name of the latest created postscript      psdir   isadirectory psdir  title    Select psdir    CASE N_PARAMS  OF     0: BEGIN       nameps   file_search psdir ps   test_regular   nosort        IF nameps 0  EQ   THEN BEGIN         ras   report no postsrcipt file  ending with  ps  found in :     psdir          RETURN       ENDIF       dates    file_info nameps mtime       lastdate    reverse sort temporary dates 0        nameps   nameps lastdate      END     1: nameps   psfilename     ELSE: BEGIN        ras   report printps accept only one element: psfilename        RETURN     END    ENDCASE            we check if the file is exist in psdir  if necessary we complete   its name with  ps and or  gz     nameps   find nameps ps gz  iodir   psdir   nopro    IF nameps EQ  NOT FOUND  THEN BEGIN      ng   report file  nameps ps gz  does not exist       return   ENDIF    gzipped   strpos nameps   gz    if the file is gzipped we call gunzip et change its name   IF gzipped NE  1 THEN BEGIN     spawn   gunzip     nameps     nameps   strmid nameps  0  gzipped    endif     build the widget     base   widget_base row  title    Postscript file:                            file_basename nameps    ps viewers grouped button   psviewers    no psviewers found    IF file_which getenv PATH   ghostview  NE   THEN       psviewers    psviewers   Ghostview     IF file_which getenv PATH   gs  NE   THEN       psviewers    psviewers   Ghostscript     IF file_which getenv PATH   kghostview  NE   THEN       psviewers    psviewers   Kghostview     if at least one of viewer was found we define these buttons   IF n_elements psviewers  GT 1 THEN BEGIN      psviewers   psviewers 1:      notused   cw_bgroup base  psviewers   frame  label_top    Visualize                              uvalue    name: visualize  nameps:nameps                               column   return_name    ENDIF    printers list grouped buttons   are the common variables printer_human_names and printer_human_names   defined in a proper way    CASE 1 OF     n_elements printer_human_names  eq 0:         noting   report the cm_4ps variable printer_human_names is not defined   CWe could not propose any printer   simple      n_elements printer_human_names  NE n_elements printer_machine_names :         noting   report the cm_4ps variables printer_human_names and  Cprinter_machine_names do not have the same number of arguments   CWe could not propose any printer   simple      printer_human_names 0  EQ  :     ELSE:notused           cw_bgroup base  printer_human_names   frame   column                     label_top    Select printer                      uvalue    name: print  nameps:nameps  gzip:gzipped NE  1    ENDCASE    archive ps  button  can be created only if archive_ps ne 0   IF keyword_set archive_ps  THEN       notused   widget_button base  value    archive ps                                  uvalue    name: archive  nameps:nameps                                             gzip:gzipped NE  1    quit button   notused   widget_button base  value    quit                                uvalue    name: quit  nameps:nameps                                           gzip:gzipped NE  1      widget_control  base   realize     xmanager   printps  base   no_block     return end"); 
     57a[55] = new Array("./Obsolete/cp.html", "cp.pro", "", "           file_comments copy files      obsolete      file_comments file_copy should be used instead       param filenamein  in required     param filenameout  in required       keyword _EXTRA used to pass your keywords      history   June 2005: Sebastien Masson   obsolete routine      version  Id            PRO cp  filenamein  filenameout  _extra   ex     compile_opt idl2  strictarrsubs  obsolete     file_copy  filenamein  filenameout  _extra   ex   RETURN END"); 
     58a[56] = new Array("./Obsolete/ficdate.html", "ficdate.pro", "", "           file_comments  sets s_fichier to name of the vairmer file associated             to the given date in vairmer format   yymmdd        obsolete      param vdate  in  date vairmer ex:930124    param dim  in   so  ou  vo  par defaut so est choisi    param nomexp  in  nom de l experience en trois lettres par defaut prefix      returns le nom du fichier vairmer  depuis iodir       uses common pro      examples   IDL  fic   ficdate 930124       history Jerome Vialard   jv lodyc jussieu fr   1 7 98      version  Id            function ficdate  vdate  dim  nomexp     compile_opt idl2  strictarrsubs  obsolete    common   case n_params  of   1: dim    SO    2: dim strupcase dim    3: begin        prefix nomexp        dim strupcase dim       end endcase       constitution de l adresse ou aller chercher le fichier     date yymmdd   vdate   sets month  year and day to the good value :    rien   juldate vdate    constitution de la date yymmdd    case 1 of      year lt 10:                s_year  0 string format i1 year       year ge 10 and year lt 100:s_year      string format i2 year       year ge 100:BEGIN         year   year 1900         if year LT 10 then s_year  0 string format i1 year             ELSE s_year  string format i2 year       end    endcase    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       case dim of       SO : begin        case 1 of            year eq 0  and  month eq 0  : s_fichier iodir prefix O EX SO             year eq 0  and  month ne 0  and  day eq 0  : s_fichier iodir prefix O SE SO s_month            year ne 0  and  month eq 0  : s_fichier iodir prefix O AN SO s_year            year ne 0  and  day eq 0  :   s_fichier iodir prefix O MO SO s_year s_month           else: s_fichier iodir prefix O SO s_year s_month s_day        endcase      end       VO : begin        case 1 of            year eq 0  and  month eq 0  : s_fichier iodir prefix O EX VO             year eq 0  and  month ne 0  and  day eq 0  : s_fichier iodir prefix O SE VO s_month            year ne 0  and  month eq 0  : s_fichier iodir prefix O AN VO s_year            year ne 0  and  day eq 0  : s_fichier iodir prefix O MO VO s_year s_month           else: s_fichier iodir prefix O VO s_year s_month s_day        endcase      end      else: return  report le fichier doit etre VO ou SO     endcase       print        print  adresse du fichier:  fichier      return  s_fichier   end  "); 
     59a[57] = new Array("./Obsolete/fictype.html", "fictype.pro", "", "           file_comments  gives fictype  DA   MO   AN   SE   EX  corresponding             to the given date in vairmer format   yymmdd        param vdate  in required     param dim unused      uses common pro      examples   IDL  fictype   fictype 930124       history Jerome Vialard   jv lodyc jussieu fr    2 7 98      version  Id            function fictype  vdate  dim     compile_opt idl2  strictarrsubs  obsolete    common       constitution de l adresse ou aller chercher le fichier     date yymmdd   vdate    jul   juldate vdate       case 1 of        year eq 0  and  month eq 0  : return   EX         year eq 0  and  month ne 0  and  day eq 0  : return   SE         year ne 0  and  month eq 0  : return   AN         year ne 0  and  day eq 0    : return   MO        else                         : return   DA     endcase        fini:      return   1 end  "); 
     60a[58] = new Array("./Obsolete/imprime.html", "imprime.pro", "", "           file_comments use printps instead     obsolete      param filename  in required       keyword TRANS      keyword NB      uses printps      history   June 2005: Sebastien Masson  english version      version  Id            PRO imprime  filename  TRANS   trans  NB   nb     this is working only with unix linux osX machines     compile_opt idl2  strictarrsubs  obsolete     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  "); 
     61a[59] = new Array("./Obsolete/jourdsmois.html", "jourdsmois.pro", "", "           file_comments used daysinmonth instead     obsolete      param mois  in optional     param annee  in optional       history Sebastien Masson  smasson lodyc jussieu fr    June 2005: Sebastien Masson  english version      version  Id            function jourdsmois  mois  annee     compile_opt idl2  strictarrsubs  obsolete    case n_params  OF   0:return  daysinmonth    1:return  daysinmonth mois    2:return  daysinmonth mois  annee  endcase  end"); 
     62a[60] = 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 _EXTRA used to pass your keywords      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      convertit 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      version  Id            function juldate  vvdate  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete   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  "); 
     63a[61] = 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 BOITE      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      version  Id            function lec  nomchamp date nomexp ECRIT ecrit ANOM anom  BOITE   boite EXPANOM expanom  TOUT   tout  GRID   grid  NAME   name  filename   FILENAME     compile_opt idl2  strictarrsubs  obsolete    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 "); 
     64a[62] = 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      version  Id                               1      2      3    4      5 function lect  nomchamp date1 date2 nomexp direc BOITE boite                   ANOM anom EXPANOM expanom  REPEAT repeat     compile_opt idl2  strictarrsubs  obsolete    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    "); 
     65a[63] = new Array("./Obsolete/meshlec.html", "meshlec.pro", "", "             file_comments lecture du mask des sorties d OPA  les sources se trouvent ds les   repertoires sur maia du type:     nom_exp RESTARTS      obsolete      examples   IDL  meshmask  nomfich       param nomfich  in required  string  c est le nom du fichier a lire  Par defaut  c est meshmask         keyword GLAMBOUNDARY  in  un vecteur de 2 elements specifaint le min et le   max qui doivent etre imposes en longitude  obligatoire si le   tableau depasse 360 degres       keyword  pasblabla  in  pour suprimer les blablas      keyword  DOUBLE  in  pour forcer a lire les tableaux en double          precision  ce Mot clef est maintenant active          automatiquement       keyword GETDIMENSIONS      uses common pro      restrictions    La definition de ixminmesh ixmaxmesh iyminmesh iymaxmesh     izminmesh izmaxmesh doit etre faite avant l entree dans cette    routine  pour attribuer automatiquement ces valeurs au maximum    possible les mettre toutes a  1 et meshlec les calculera       history Sebastien Masson  smasson lodyc jussieu fr        Marina Levy : lecture en double precision  cas calcul sur shine       version  Id            pro meshlec  nomfich  PASBLABLA   pasblabla DOUBLE   double  GLAMBOUNDARY   glamboundary  GETDIMENSIONS   GETDIMENSIONS     compile_opt idl2  strictarrsubs  obsolete    common    tempsun   systime 1            pour key_performance        jpiglo        0L    jpjglo        0L    jpkglo        0L    tab       aaaaa       definition du domaine de la grille surlequel sont    effectuees les sorties les indices des tableaux commencant    a 1: cf le fichier wrivr2 F ds WKOPA sur le cray     LECTURE DU MASK trouve ds les fichiers restart                 constitution de l adresse s_fichier et       ouverture du fichier a l adresse s_fichier       IF n_params  EQ 0 then nomfich    meshmask     s_fichier   isafile file   nomfich  iodir   iodir     if not keyword_set pasblabla  then print         if not keyword_set pasblabla  then print adresse du fichier:  s_fichier     openr  numlec  s_fichier   get_lun   f77_unformatted   swap_if_little_endian    filepamameters   fstat numlec          lecture      readu  numlec  jpiglo  jpjglo  jpkglo    if not keyword_set pasblabla  then print   taille de la grille d origine:  jpiglo   jpjglo   jpkglo      if keyword_set getdimensions  then begin       free_lun numlec       close  numlec       return    endif      on determine si le fichier a ete ecrit en double precision on non     sizenumber   8l    sizefile8   4l 3l 4l 4l        4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpiglo jpjglo jpkglo sizenumber 4l         1l 4l jpiglo jpjglo sizenumber 4l         4l 4l jpkglo sizenumber 4l     if filepamameters size GE sizefile8 THEN double   1      sizenumber   4l      sizefile4   4l 3l 4l 4l          4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpiglo jpjglo jpkglo sizenumber 4l           1l 4l jpiglo jpjglo sizenumber 4l           4l 4l jpkglo sizenumber 4l    print  filepamameters size   sizefile4   sizefile8      case filepamameters size of         sizefile8:double   1         sizefile4:double   0         ELSE:BEGIN            nothing   report The OPA Mesh file as not the good size             free_lun numlec            close  numlec            return         END      endcase        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         jpi      long ixmaxmesh ixminmesh 1     jpj      long iymaxmesh iyminmesh 1     jpk      long izmaxmesh izminmesh 1      doit on reellement lire la grille       meshparameters    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         noticebase xnotice Lecture du fichier  C  s_fichier C         IF NOT keyword_set double  THEN BEGIN       z3d      fltarr jpiglo  jpjglo  jpkglo        z2d      fltarr jpiglo  jpjglo        z1d      fltarr jpkglo     ENDIF ELSE BEGIN       z3d      dblarr jpiglo  jpjglo  jpkglo        z2d      dblarr jpiglo  jpjglo        z1d      dblarr jpkglo     ENDELSE     if not keyword_set pasblabla  then print         readu  numlec  tab z2d    GLAMT float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMT 25 31 :  GLAMT 25 31     readu  numlec  tab z2d    GLAMU float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMU 25 31 :  GLAMU 25 31     readu  numlec  tab z2d    GLAMV float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMV 25 31 :  GLAMV 25 31     readu  numlec  tab z2d    GLAMF float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GLAMF 25 31 :  z2d 25 31      if not keyword_set pasblabla  then print         readu  numlec  tab  z2d    GPHIT float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIT 25 31 :  GPHIT 25 31     readu  numlec  tab  z2d    GPHIU float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIU 25 31 :  GPHIU 25 31     readu  numlec  tab  z2d    GPHIV float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIV 25 31 :  GPHIV 25 31     readu  numlec  tab  z2d    GPHIF float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GPHIF 25 31 :  z2d 25 31      if not keyword_set pasblabla  then print         readu  numlec  tab  z2d    E1T float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1T 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E1U float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1U 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E1V float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1V 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E1F float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E1F 25 5 :  z2d 25 5      if not keyword_set pasblabla  then print         readu  numlec  tab  z2d    E2T float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2T 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E2U float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2U 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E2V float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2V 25 5 :  z2d 25 5     readu  numlec  tab  z2d    E2F float z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E2F 25 5 :  z2d 25 5      if not keyword_set pasblabla  then print         readu  numlec  tab  z3d    TMASK byte z3d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur TMASK 25 5 0 :  TMASK 25 5 0     readu  numlec  tab  z3d    UMASKred byte z3d ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh     umaskred   reform umaskred     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur UMASK 25 5 0 :  z3d 25 5 0     readu  numlec  tab  z3d    VMASKred byte z3d ixminmesh:ixmaxmesh iymaxmesh izminmesh:izmaxmesh     vmaskred   reform vmaskred     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur VMASK 25 5 0 :  z3d 25 5 0     readu  numlec  tab  z3d    fmaskredy byte z3d ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh     coast   where fmaskredy NE 0 and fmaskredy NE 1     IF coast 0  NE  1 THEN fmaskredy coast    0b    fmaskredx byte z3d ixminmesh:ixmaxmesh iymaxmesh izminmesh:izmaxmesh     coast   where fmaskredx NE 0 and fmaskredx NE 1     IF coast 0  NE  1 THEN fmaskredx coast    0b    fmaskredx   reform fmaskredx     fmaskredy   reform fmaskredy     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur FMASK 25 5 0 :  z3d 25 5 0       if not keyword_set pasblabla  then print         readu  numlec  tab  z2d  FF z2d ixminmesh:ixmaxmesh iyminmesh:iymaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur FF 25 5 :  z2d 25 5     readu  numlec  tab  z1d    GDEPT float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GDEPT 1 :  GDEPT 1     readu  numlec  tab  z1d    GDEPW float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur GDEPW 1 :  GDEPW 1     readu  numlec  tab  z1d    E3T float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E3T 3 :  E3T 3     readu  numlec  tab  z1d    E3W float z1d izminmesh:izmaxmesh     if not keyword_set pasblabla  then print   tableau:  tab  exemple de valeur E3W 3 :  E3W 3       free_lun numlec    close  numlec       bornes de glam qui ne doivent pas depasser 360 degres         minglam   min glamt  max   maxglam       if maxglam minglam GE 360 AND NOT keyword_set glamboundary  then         nothing   execute glamboundary    xquestion What are the longitudes boundary   180 180 chkwidget       if keyword_set glamboundary  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       endif    endif     shift en x      if keyword_set key_shift  AND jpi NE 1 then begin       glamt   shift glamt key_shift   0        gphit   shift gphit key_shift   0        e1t   shift e1t  key_shift  0        e2t   shift e2t key_shift   0        glamu   shift glamu  key_shift  0        gphiu   shift gphiu  key_shift  0        e1u   shift e1u key_shift   0        e2u   shift e2u  key_shift  0        glamv   shift glamv  key_shift  0        gphiv   shift gphiv  key_shift  0        e1v   shift e1v key_shift   0        e2v   shift e2v  key_shift  0        glamf   shift glamf  key_shift  0        gphif   shift gphif  key_shift  0        e1f   shift e1f  key_shift   0        e2f   shift e2f  key_shift  0        if jpk EQ 1 then begin          tmask   shift tmask  key_shift  0           vmaskred   shift vmaskred  key_shift           fmaskredx   shift fmaskredx  key_shift        ENDIF ELSE BEGIN          tmask   shift tmask  key_shift  0 0           vmaskred   shift vmaskred  key_shift  0           fmaskredx   shift fmaskredx  key_shift  0        ENDELSE    endif      key_yreverse   0    key_zreverse   0    key_partialstep   0    key_stride    1  1  1     key_gridtype    c       if not keyword_set pasblabla  then print lecture  nomfich  finie     widget_control  noticebase  bad_id   toto   destroy    if keyword_set key_performance  THEN print   temps meshlec  systime 1 tempsun     return end    "); 
     66a[64] = new Array("./Obsolete/ncdf_meshlec.html", "ncdf_meshlec.pro", "", "           file_comments use ncdf_meshread instead     obsolete      param filename      keyword _EXTRA used to pass your keywords      history   Aug  2005  Sebastien Masson: switch to ncdf_meshread      version  Id            PRO ncdf_meshlec  filename  _EXTRA   ex       compile_opt idl2  strictarrsubs  obsolete     CASE n_params  OF     0:ncdf_meshread  _EXTRA   ex     1:ncdf_meshread  filename  _EXTRA   ex   ENDCASE     return END"); 
     67a[65] = 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    keyword STRUCTURE     keyword SEUILMIN     keyword SEUILMAX     keyword NAN      keyword _EXTRA used to pass your keywords      uses common pro vraidate juldate  nlec5j nlecserie      history Sebastien Masson  smasson lodyc jussieu fr      14 8 98      version  Id         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     compile_opt idl2  strictarrsubs  obsolete    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"); 
     68a[66] = 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      keyword _EXTRA used to pass your keywords     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         version  Id            function nlec5j  nom  numsortie  nbretps BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    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"); 
     69a[67] = 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      keyword _EXTRA used to pass your keywords      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         version  Id           REF moyenne annuelle grid T nc   function nlecan  nom  numsortie79  nbretps BOITE   boite GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    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"); 
     70a[68] = 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    keyword _EXTRA used to pass your keywords     uses common pro      history Sebastien Masson  smasson lodyc jussieu fr       version  Id           REF moyenne mensuelle 79 81 grid T nc   function nlecmois nom numsortie79 nbretps  BOITE boite GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    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"); 
     71a[69] = new Array("./Obsolete/nlecsaison.html", "nlecsaison.pro", "", "           file_comments lit les moyennes annuelles   sur maia:  u rech eee reee217 TOTEM REF OUTPUTS    obsolete      categories lecture de NETCDF      examples   IDL  res nlecsaison 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      keyword _EXTRA used to pass your keywords     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         version  Id         REF saisonnier climato grid T nc     function nlecsaison  nom  numsortie79  nbretps BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    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 saisonnier climato 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 saisonnier climato grid        IF quelsfichiers 0  EQ   THEN     liste vide          return  report LES FICHIERS:  iodir prefix saisonnier climato 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 saisonnier climato 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       IF numsortie79 EQ 13 THEN vardate CLIMATOLOGIE  prefix         ELSE begin          vardate climato mensuelle  strtrim numsortie79 1        endelse    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"); 
     72a[70] = new Array("./Obsolete/nlecserie.html", "nlecserie.pro", "", "           file_comments lit les series temporelles se rapportant a une variable   sur maia:  u rech eee reee217 TOTEM REF OUTPUTS    obsolete      categories lecture de NETCDF      examples   IDL  res nlecserie nom  date1  date2       param nom  in required  nom du tableau contenant le champ que l on veut  le   trouver avec ncdflec fichier var       param  date1 date2  in required  les dates vermairs qui delimitent la serie temporelle      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      keyword _EXTRA used to pass your keywords      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       version  Id           REF sss grid T nc   function nlecserie  nom  date1  date2 BOITE   boite  GRILLE grille TOUT tout  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    common        res 1    anneedepart 1979     gestion du nom de la grille   et ouverture du fichier     liste des fichiers pouvant convenir    quelsfichiers   findfile iodir prefix nom grid     IF quelsfichiers 0  EQ   THEN BEGIN   liste vide        print   LES FICHIERS:  iodir prefix nom grid  n existe pas        return    1    ENDIF ELSE BEGIN       vargrid strmid quelsfichiers 0 strpos quelsfichiers 0 grid 5 1   nom de grille       IF  version OS_FAMILY EQ  unix  THEN spawn   file  quelsfichiers 0     dev null        cdfid ncdf_open quelsfichiers 0     ENDELSE     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     ncdf_attget cdfid file_name value global    varexp string value     varexp strmid varexp  0  strpos varexp        lecture de l axe des temps en entier on ja reperer la place des   dates debut et fin pour faire l extraction temporelle      ncdf_varget cdfid time_counter time    time   long time julday 1  5  1979      debut   where time EQ juldate date1      fin   where time EQ juldate date2     debut   where time EQ date1     fin   where time EQ date2     if debut 0  EQ  1 then         return  report l axe des temps ne contient pas la date de debut  strtrim date1  1     if fin 0  EQ  1 then         return  report l axe des temps ne contient pas la date de fin  strtrim date2  1     time   time debut 0 :fin 0     jpt fin 0 debut 0 1    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       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    endif       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    ENDELSE      ncdf_varget cdfid nom res        offset premierx premiery debut 0         count nx ny fin 0 debut 0 1       ncdf_close cdfid    return res     end"); 
     73a[71] = new Array("./Obsolete/vairdate.html", "vairdate.pro", "", "             file_comments  gives vairmer date equivalent of a date in julian format             sets month  day and year to the corresp values    obsolete    file_comments you better use jul2date      examples   IDL  vdate   vairdate 1755087       param jdate  in required  date en jours juliens      keyword MENSUEL a activer si on veut pour  que les dates dont le jour est      15 deviennent avec un jour egale a 0  par ex:      19990115       19990100      keyword  ANNUEL a activer si on veut pour  que les dates dont le mois est      6 et dont le jour est 1 deviennent avec un mois et jour egale a      0  par ex:      19990601       19990000      keyword _EXTRA used to pass your keywords      returns vdate date vairmer     plus year  month et day      uses  common        history  Jerome Vialard   jv lodyc jussieu fr      2 7 98                  13 9 1999  Sebastien Masson  smasson lodyc jussieu fr                          ANNUEL MENSUEL _EXTRA et possibilite                         d utiliser vairdate avec des scalaire ou des                         tableaux      version  Id            function vairdate  jdate   ANNUEL   annuel  MENSUEL   mensuel  _EXTRA   ex     compile_opt idl2  strictarrsubs  obsolete    common      caldat  jdate  month  day  year  _EXTRA   ex    index   where year eq  1     if index 0  NE  1 then year index    0    if keyword_set mensuel  THEN BEGIN       index   where day EQ 15        if index 0  NE  1 then day index    0    endif    if keyword_set annuel  THEN BEGIN       index   where day EQ 1 AND month EQ 6        if index 0  NE  1 then BEGIN          day index    0          month index    0       endif    endif      return  10000L year 100L month day   end  "); 
     74a[72] = new Array("./Obsolete/vraidate.html", "vraidate.pro", "", "           file_comments donne la date en long    obsolete      param date  in required  une date du type yyyymmdd      keyword  GRADS if  1 le year le 49 then year   2000 year                 if 50 le year le 99 then year   1900 year      keyword _EXTRA used to pass your keywords      returns une date vairmer du type yyyymmdd   si year est nulle ou egale a  1 ne change rien      examples   IDL  res vraidate date    IDL  vraidate 980703    donne 19980703 qui est un long      history Sebastien Masson  smasson lodyc jussieu fr      3 7 98   remove automatic change from year 1 to 1901  Aug 2004      version  Id            function vraidate  date  GRADS   grads  _EXTRA   ex       compile_opt idl2  strictarrsubs  obsolete     IF NOT keyword_set GRADS  THEN return  long date      date   long date    annee   date 10000   return  date 19000000L annee GE 50 and date lt 1000000 20000000L annee LT 50 and date lt 1000000    end"); 
     75a[73] = new Array("./Postscript/closeps.html", "closeps.pro", "", "           file_comments Close the Postscript mode      when archive_ps ne 0  we add the name and the date    at the bottom left corner of the postcript page  If the    postscript is called idl ps we change its name to number ps     number automatically found to be 1 larger that any of the    existing ps file       keyword INFOWIDGET A long integer giving the id of the information             widget  created by openps  that we have de destroy at             the end of closeps  when the postscript is done       uses cm_4ps      history Sebastien Masson  smasson lodyc jussieu fr                          21 12 98   June 2005: Sebastien Masson  english version with new commons      version  Id            PRO closeps  INFOWIDGET   infowidget       compile_opt idl2  strictarrsubs      IF lmgr demo  EQ 1 THEN return     include commons  cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     IF  d name NE  PS  THEN GOTO  last_part     if archive_ps   0 we will add its name and the date at the bottom   left corner of the page  in case if the postscript will be archived   in printps      IF keyword_set archive_ps  THEN BEGIN     we get the name of the latest created postscript         psdir   isadirectory psdir  title    Select psdir       nameps   file_search psdir ps                                 test_regular   test_write   nosort       dates    file_info nameps mtime      lastdate    reverse sort temporary dates 0       nameps   nameps lastdate       nameps   file_basename nameps   ps    If this name is idl ps then we change it to the number ps      IF nameps EQ  idl  then BEGIN   get the name of all the  ps or  ps gz files available in psdir        allps   file_search psdir ps ps gz pdf   test_regular   nosort         allps   file_basename file_basename allps gz ps         allps   file_basename allps pdf    find which of these names corresponds to numbers    get ascii codes of the names        testnumb   byte allps    longest name        maxstrlen    size testnumb   dimensions 0    ascii codes can be 0 or between byte 0  and byte 9         testnumb   testnumb EQ 0 OR                      testnumb GE  byte 0 0  AND testnumb LE  byte 9 0         testnumb   where total testnumb  1  EQ maxstrlen  count         IF count NE 0 THEN BEGIN   get the largest number          psnumber   fix allps testnumb           psnumber    psnumber reverse sort psnumber 0    1        ENDIF ELSE psnumber   0        nameps   strtrim psnumber  2       ENDIF     we annote the postscript        date   byte systime 0       we get the date      xyouts   d x_px_cm   d y_px_cm                  nameps   string date 4:10 string date 20:23                    device  charsize    75    ENDIF     close the postcript mode    device   close   last_part:      thisOS   strupcase strmid version os_family  0  3     CASE thisOS of       MAC : SET_PLOT  thisOS       WIN : SET_PLOT  thisOS      ELSE: SET_PLOT   X     ENDCASE    def_myuniquetmpdir    colorfile   myuniquetmpdir    original_colors dat     IF file_test colorfile   regular  THEN BEGIN      restore  colorfile      file_delete  colorfile   quiet   reload the original colors      tvlct  red  green  blue    ENDIF     p font    1   force background color to the last color  white      p BACKGROUND d n_colors 1    255     p color 0    if  d n_colors gt 256 then  p background ffffff x      if keyword_set infowidget  then       widget_control  long infowidget  bad_id   toto   destroy      return end"); 
     76a[74] = new Array("./Postscript/openps.html", "openps.pro", "", "             file_comments switch to postcript mode and define it      param namepsin  in optional  name of the postscript file  Extension  ps  is added                  if missing  It will be stored in the psdir directory       keyword FILENAME to define the name of the postcript file through                    a keyword rather than with nameps inut argument                     in this case the keyword can be pass through                    different routines via _extra keyword       keyword INFOWIDGET If INFOWIDGET is present  it specifies a named               variable into which the id of the widget giving informations               about the postscript creation is stored as a long integer                This id is needed by close ps to kill the information widget       keyword KEEP_PFONT activate to suppress the modification of  p font               by defaut we force   p font   0  to make smaller postscripts     keyword PORTRAIT    keyword LANDSCAPE    keyword KEEPPFONT same as keep_pfont      keyword LIGHTNESS a scalar used to change the Lightness of the color              palette to be abble to adjust according to the printer we use               the media  paper or slide                  lightness  1 to get darker colors      keyword _EXTRA used to pass any keyword to device procedure       uses cm_4ps      history Sebastien Masson  smasson lodyc jussieu fr    21 12 98   1 2 98: ajout de nameps en input   1 9 1999: ajout du mot cle FILENAME et du widget   June 2005: Sebastien Masson  cleaning  english version with new commons      version  Id            pro openps  namepsin  FILENAME   filename  INFOWIDGET   infowidget                 KEEPPFONT   keeppfont  KEEP_PFONT   keep_pfont                 PORTRAIT   portrait  LANDSCAPE   landscape                 LIGHTNESS   Lightness _extra   ex       compile_opt idl2  strictarrsubs      IF lmgr demo  EQ 1 THEN BEGIN       dummy   report impossible to create a PS in demo mode        return    ENDIF     include commons  cm_4ps IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew ENDIF     close the postcript device if we are already in postcsrit mode    IF  d name EQ  PS  THEN device   close   switch to postscript mode    set_plot ps      if we use  keyword Lightness   save the actual color palette in a temporary file    to be restored when calling closeps      IF n_elements Lightness  NE 0 THEN BEGIN      IF Lightness NE 1 THEN BEGIN        tvlct  red  green  blue   get        def_myuniquetmpdir        save  red  green  blue  filename   myuniquetmpdir    original_colors dat         palit  Lightness  red  green  blue      ENDIF    ENDIF     we define the name of the file      CASE 1 OF      n_params  EQ 1:nameps   namepsin      keyword_set filename : nameps   filename      ELSE:nameps   xquestion Name of the postscript file   idl ps   chkwid     ENDCASE   make sure that nameps ends with  ps     nameps   file_dirname nameps   mark_directory                  file_basename nameps   ps     ps    add path  psdir  and check that nameps is ok    nameps   isafile nameps  iodir   psdir   new      we define xsize  ysize  xoffset et  yoffset      IF n_elements portrait  NE 0 OR n_elements landscape  NE 0 THEN        key_portrait   keyword_set portrait     1   keyword_set landscape      if key_portrait EQ 1 then begin       xs   min page_size        ys   max page_size        xoff   0        yoff   0     ENDIF ELSE BEGIN       xs   max page_size        ys   min page_size        xoff   0        yoff   max page_size     ENDELSE     We define the device of the postscript mode      device   color   palatino  filename   strcompress nameps   remove_all                 LANDSCAPE   1   key_portrait  PORTRAIT   key_portrait                xsize   xs  ysize   ys  xoffset   xoff  yoffset   yoff                bits_per_pixel   8  _extra   ex   to make smaller postcripts    IF NOT  keyword_set keeppfont  OR keyword_set keep_pfont       THEN  p font   0   show some informations    IF arg_present infowidget  THEN       infowidget   xnotice Postcript file is currently processed       RETURN END            "); 
     77a[75] = new Array("./Postscript/printps.html", "printps.pro", "", "             file_comments     archiving possibilities       if archive_ps  common variable of cm_4ps  ne 0 then the postscript   can be saved for archiving if it is printed or if the button    archive ps  is pressed  if it is printed and archive_ps   1 then   the archiving is done automatically whereas we ask if the postscript   file must be archived or not    If the postcript name is  idl ps   default name  then this name will   be changed to number ps  number automatically found to be 1 larger   that any of the existing ps file       categories for the postscripts      param event      restrictions     1  this is working only with unix linux osX machines     2  definition of the printing command     the printing command is defined by the common variable  print_command    in cm_4ps  This command must be defind build in a way that it the   instruction:       print_command i printer_machine_names i   file ps   or       print_command printer_machine_names i   file ps   is working  default definition is  lpr  P         history Sebastien Masson  smasson lodyc jussieu fr   21 12 98                         25 8 19999 utilisation des widgets                         8 9 1999 utilisation de cw_bgroup   June 2005: Sebastien Masson: cleaning  english version with new commons      version  Id            PRO printps_event  event     include commons     compile_opt idl2  strictarrsubs    cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     What kind of event do we have     widget_control  event id  get_uvalue   uval   case on the event   CASE uval name OF     visualize case : postscript visualization        visualize :BEGIN   paper orientation       if key_portrait EQ 1 then ori    portrait  ELSE ori    seascape    paper format       CASE round 10 total page_size  OF         round 10 83 9611   118 816  : papsize    a0          round 10 59 4078   83 9611  : papsize    a1          round 10 41 9806   59 4078  : papsize    a2          round 10 29 7039   41 9806  : papsize    a3          round 10 20 9903   29 7039  : papsize    a4          round 10 14 8519   20 9903  : papsize    a5          round 10 10 4775   14 8519  : papsize    a6          round 10 7 40833   10 4775  : papsize    a7          round 10 5 22111   7 40833  : papsize    a8          round 10 3 70417   5 22111  : papsize    a9          round 10 2 61056   3 70417  : papsize    a10          round 10 100 048   141 393  : papsize    b0          round 10 70 6967   100 048  : papsize    b1          round 10 50 0239   70 6967  : papsize    b2          round 10 35 3483   50 0239  : papsize    b3          round 10 25 0119   35 3483  : papsize    b4          round 10 17 6742   25 0119  : papsize    b5          round 10 22 86   30 48  : papsize    archA          round 10 30 48   45 72  : papsize    archB          round 10 45 72   60 96  : papsize    archC          round 10 60 96   91 44  : papsize    archD          round 10 91 44   121 92  : papsize    archE          round 10 21 59   33 02  : papsize    flsa          round 10 21 59   33 02  : papsize    flse          round 10 13 97   21 59  : papsize    halfletter          round 10 19 05   25 4  : papsize    note          round 10 21 59   27 94  : papsize    letter          round 10 21 59   35 56  : papsize    legal          round 10 27 94   43 18  : papsize    11x17          round 10 43 18   27 94  : papsize    ledger          ELSE:papsize    a4        ENDCASE   call the viewers       CASE event value OF          Ghostview :spawn   ghostview  papsize   quiet  ori   uval nameps          Ghostscript :spawn   gs  sPAPERSIZE papsize   q  uval nameps          Kghostview :spawn   kghostview  uval nameps       ENDCASE       return     END     print case: print and archive the file if needed        print :BEGIN   printer selection       printer   printer_machine_names event value    print       CASE n_elements print_command  OF         0:ptcmd    lpr  P          1:ptcmd   print_command 0          n_elements printer_machine_names :ptcmd   print_command event value          ELSE:BEGIN           ng   report bad definition of print_command  common variable of cm_4ps   C we did not print the postscript file   simple            return         END       ENDCASE       spawn  ptcmd   printer         uval nameps     printing informations          spawn   lpq  P imprimante   l  info     display them         xdisplayfile   nothing  text   info                           title    Printing Info  file_basename uval nameps                            height   n_elements info   printps      history Sebastien Masson  smasson lodyc jussieu fr   21 12 98                         25 8 19999 utilisation des widgets                         8 9 1999 utilisation de cw_bgroup   June 2005: Sebastien Masson: cleaning  english version with new commons      version  Id          PRO printps  psfilename     this is working only with unix linux osX machines     compile_opt idl2  strictarrsubs     thisOS   strupcase strmid version os_family  0  3    CASE thisOS OF      MAC :return      WIN :return     ELSE:   ENDCASE     include commons  cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     we get the name of the latest created postscript      psdir   isadirectory psdir  title    Select psdir    CASE N_PARAMS  OF     0: BEGIN       nameps   file_search psdir ps   test_regular   nosort        IF nameps 0  EQ   THEN BEGIN         ras   report no postsrcipt file  ending with  ps  found in :     psdir          RETURN       ENDIF       dates    file_info nameps mtime       lastdate    reverse sort temporary dates 0        nameps   nameps lastdate      END     1: nameps   psfilename     ELSE: BEGIN       ras   report printps accept only one element: psfilename        RETURN     END   ENDCASE     we check if the file is exist in psdir  if necessary we complete   its name with  ps and or  gz     nameps   find nameps ps gz  iodir   psdir   nopro    IF nameps EQ  NOT FOUND  THEN BEGIN     ng   report file  nameps ps gz  does not exist       return   ENDIF   gzipped   strpos nameps   gz    if the file is gzipped we call gunzip et change its name   IF gzipped NE  1 THEN BEGIN     spawn   gunzip     nameps     nameps   strmid nameps  0  gzipped    endif     build the widget     base   widget_base row  title    Postscript file:                            file_basename nameps    ps viewers grouped button   psviewers    no psviewers found    IF file_which getenv PATH   ghostview  NE   THEN       psviewers    psviewers   Ghostview    IF file_which getenv PATH   gs  NE   THEN       psviewers    psviewers   Ghostscript    IF file_which getenv PATH   kghostview  NE   THEN       psviewers    psviewers   Kghostview    if at least one of viewer was found we define these buttons   IF n_elements psviewers  GT 1 THEN BEGIN     psviewers   psviewers 1:      notused   cw_bgroup base  psviewers   frame  label_top    Visualize                              uvalue    name: visualize  nameps:nameps                               column   return_name    ENDIF   printers list grouped buttons   are the common variables printer_human_names and printer_human_names   defined in a proper way    CASE 1 OF     n_elements printer_human_names  eq 0:         noting   report the cm_4ps variable printer_human_names is not defined   CWe could not propose any printer   simple      n_elements printer_human_names  NE n_elements printer_machine_names :         noting   report the cm_4ps variables printer_human_names and  Cprinter_machine_names do not have the same number of arguments   CWe could not propose any printer   simple      printer_human_names 0  EQ  :     ELSE:notused           cw_bgroup base  printer_human_names   frame   column                     label_top    Select printer                      uvalue    name: print  nameps:nameps  gzip:gzipped NE  1    ENDCASE    archive ps  button  can be created only if archive_ps ne 0   IF keyword_set archive_ps  THEN       notused   widget_button base  value    archive ps                                  uvalue    name: archive  nameps:nameps                                             gzip:gzipped NE  1    quit button   notused   widget_button base  value    quit                                uvalue    name: quit  nameps:nameps                                           gzip:gzipped NE  1      widget_control  base   realize     xmanager   printps  base   no_block     return end"); 
    7878a[76] = new Array("./ReadWrite/idl-NetCDF/ncdf_listdims.html", "ncdf_listdims.pro", "", "FUNCTION ncdf_listdims ncid     compile_opt idl2  strictarrsubs    n ncdf_inquire ncid ndims  names strarr n   for i 0 n 1 do begin     ncdf_diminq ncid i name size     names i name endfor  return names  end"); 
    7979a[77] = new Array("./ReadWrite/idl-NetCDF/ncdf_listvars.html", "ncdf_listvars.pro", "", "FUNCTION ncdf_listvars ncid     compile_opt idl2  strictarrsubs    n ncdf_inquire ncid nvars  names strarr n   for i 0 n 1 do begin     names i ncdf_varinq ncid i name endfor  return names  end"); 
     
    138138a[136] = new Array("./Tests/tst_pltt.html", "tst_pltt.pro", "", "PRO tst_pltt  IMAGE   image   commons     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4cal     figure 2: regular grid     CASE jpi key_stride 0 jpj key_stride 1  OF     180 148:file    Levitus98_1m_01_12_Temperature_Pot_ORCA2 nc      360 180:file    Levitus98_1m_01_12_Temperature_Pot_1x1 nc      720 510:file    Levitus98_1m_01_12_Temperature_Pot_ORCA05 nc    ENDCASE   file   isafile file  title    Where is  file     lookalldir    IF size file   type  NE 7 THEN return     dummy       cnt   1      1 1 xt plot     IF key_onearth THEN domdef  20  380   1  1  0  gdept 0      ELSE domdef  min glamt  max glamf  jpj 2 1  jpj 2 1  0  gdept 0      temp   read_ncdf votemper  00101  01231  file   file    IF key_forgetold THEN help  temp arr ELSE help  temp tab   help  jpt  time   pltt  temp   if keyword_set image  then saveimage   tst_pltt_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltt  temp   nocontour   if keyword_set image  then saveimage   tst_pltt_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltt  temp   color_c   if keyword_set image  then saveimage   tst_pltt_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltt  temp   nofill   if keyword_set image  then saveimage   tst_pltt_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     equatorial plot     IF key_onearth THEN BEGIN      a   abs gphit 0        yind   where a EQ min a      domdef  20  380  yind 0  yind n_elements yind 1            gdept 10    jpk 1  gdept 10    jpk 1  gridtype    T   yindex   ENDIF ELSE BEGIN      domdef  min glamt  max glamf  jpj 2  jpj 2           gdept 10    jpk 1  gdept 10    jpk 1  gridtype    T   yindex   ENDELSE    temp   read_ncdf votemper  00101  01231  file   file    IF key_forgetold THEN help  temp arr ELSE help  temp tab   pltt  temp   if keyword_set image  then saveimage   tst_pltt_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     yt plot along the column that contain the largest latitude     IF key_onearth THEN BEGIN      ind   where gphit EQ max gphit      ind   ind 0  MOD jpi     domdef  ind  ind   90  90  gdept 0  gdept 0  gridtype    T   xindex   ENDIF ELSE BEGIN      domdef  jpi 2  jpi 2  min gphit  max gphif  gdept 0  gdept 0  gridtype    T   xindex   ENDELSE     temp   read_ncdf votemper  00101  01231  file   file    IF key_forgetold THEN help  temp arr ELSE help  temp tab   pltt  temp    if keyword_set image  then saveimage   tst_pltt_ image _ string cnt  format    i2 2 png   png   cnt   cnt   1    return end"); 
    139139a[137] = new Array("./Tests/tst_pltz.html", "tst_pltz.pro", "", "PRO tst_pltz  IMAGE   image   commons     compile_opt idl2  strictarrsubs    cm_4mesh     IF jpk EQ 1 THEN return     dummy       cnt   1     CASE jpi key_stride 0 jpj key_stride 1  OF     180 148:file    Levitus98_1m_01_12_Temperature_Pot_ORCA2 nc      360 180:file    Levitus98_1m_01_12_Temperature_Pot_1x1 nc      720 510:file    Levitus98_1m_01_12_Temperature_Pot_ORCA05 nc    ENDCASE   file   isafile file  title    Where is  file     lookalldir    IF size file   type  NE 7 THEN return     IF key_onearth THEN domdef  20  380   1  1  0  max gdept      ELSE domdef  min glamt  max glamf  jpj 2 1  jpj 2 1  0  max gdept      temp   read_ncdf votemper  00101  00131  file   file    IF key_forgetold THEN help  temp arr ELSE help  temp tab      pltz  temp   portrait   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltz  temp   portrait   nocontour   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltz  temp   portrait   color_c   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltz  temp   portrait   nofill   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltz  temp  boxzoom    6000    if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1                                     pltz  temp  boxzoom    6000  zoom   1000   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltz  temp  boxzoom    6000  zoom   1000  yxaspect   2   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     pltz  temp  boxzoom    6000  zoom   1000  yxaspect   2  zratio    5   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     yt plot along the column that contain the largest latitude     IF key_onearth THEN BEGIN      ind   where gphit EQ max gphit      ind   ind 0  MOD jpi     domdef  ind  ind   90  90  0  max gdept  gridtype    T   xindex   ENDIF ELSE BEGIN      domdef  jpi 2  jpi 2  min gphit  max gphif  0  max gdept  gridtype    T   xindex   ENDELSE     temp   read_ncdf votemper  00101  01231  file   file    pltz  temp  boxzoom    6000  zoom   1000  yxaspect   2  zratio    5   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     oblique sections      IF key_onearth THEN endpoints    110   45  290  45      ELSE endpoints    jpi 6  jpj 3  5 jpi 6  2 jpj 3    domdef  endpoints   endpoints  type    pltz    temp   read_ncdf votemper  00101  00131  file   file    pltz  temp  endpoints   endpoints   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     false oblique sections      IF key_onearth THEN endpoints    180   70  180  90      ELSE endpoints    jpi 2 0 25   0 25  jpi 2 0 25   jpj    domdef  6000  endpoints   endpoints  type    pltz    temp   read_ncdf votemper  00101  00131  file   file    pltz  temp  endpoints   endpoints  boxzoom    6000              zoom   1000  yxaspect   2  zratio    5      showbuild   if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     ELSE read  dummy   prompt    press return for the next plot    cnt   cnt   1     comparison between real section and false oblique sections     IF  where gphit EQ 0 0  NE  1 THEN BEGIN      IF key_onearth THEN box    20  380  0  0  0  6000        ELSE box    0  jpi 1  jpj 2  jpj 2  0  6000      domdef  box  gridtype    T      temp   read_ncdf votemper  00101  00131  file   file      pltz  temp  boxzoom    6000   portrait  small    1  2  1                zoom   500  zratio    5          IF key_onearth THEN endpoints    20  0  380  0        ELSE endpoints    0  jpj 2  jpi 1  jpj 2      domdef  6000  endpoints   endpoints  type    pltz  gridtype    T      temp   read_ncdf votemper  00101  00131  file   file      pltz  temp  endpoints   endpoints  boxzoom    6000                zoom   500  zratio    5               small    1  2  2   noerase          if keyword_set image  then saveimage   tst_pltz_ image _ string cnt  format    i2 2 png   png     cnt   cnt   1   ENDIF       return end"); 
    140 a[138] = new Array("./Textoidl/matchdelim.html", "matchdelim.pro", "", "      NAME:         MATCHDELIM   PURPOSE:          Match open close delimiters in a string    CATEGORY:          text strings   CALLING SEQUENCE:          position   matchdelim  strn   openpos    INPUTS:          strn          a string containing an open                 in                         delimiter  e g    in which you                          want to find the matching closing                           delimiter  e g      KEYWORD PARAMETERS:          OPEN_DELIM    A single character containing the opening   in                         delimiter  e g     Default is            CLOSE_DELIM   A single character containing the closing   in                         delimiter  e g     Default is     OUTPUTS:          position   returns the position in strn of the            out                      closing delimiter   1 if no closing found           openpos    Set to a named variable to receive the         out                      position of the first opening delimiter                       Optional    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:            Any pair of  nonidentical  characters can be used as            delimiters     EXAMPLE:          matchdelim one two three  returns 9  the character just          before  three      MODIFICATION HISTORY:          Id: matchdelim pro 47 2006 05 09 09:13:01Z pinsard            Log: matchdelim pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Removed restriction that open delim must be first char   Added argument         to allow for return of position of open delim            Revision 1 1  1996 01 31 18:41:06  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION Matchdelim  InString  OpenPos                         OPEN_DELIM OpenDelim                         CLOSE_DELIM CloseDelim                         HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2      IF  n_params  LT 1  OR keyword_set Help  THEN BEGIN         offset                 print  offset Match open close delimiters in a string          print  offset position   matchdelim  strn   openpos          print  offset Inputs:          print  offset offset strn          a string containing an open                 in          print  offset offset                delimiter  e g    in which you           print  offset offset                want to find the matching closing            print  offset offset                delimiter  e g            print  offset Keywords:          print  offset offset OPEN_DELIM    A single character containing the opening   in          print  offset offset                delimiter  e g     Default is           print  offset offset CLOSE_DELIM   A single character containing the closing   in          print  offset offset                delimiter  e g     Default is           print  offset Outputs:          print  offset offset position   returns the position in strn of the            out          print  offset offset             closing delimiter   1 if no closing found          print  offset offset openpos    Set to a named variable to receive the         out          print  offset offset             position of the first opening delimiter          print  offset offset             Optional          print  offset Example:          print  offset offset matchdelim a one two three  returns 10  the character just          print  offset offset   before  three             print  offset offset             a matchdelim aaa bbb ccc ddd eee f OP CL          print  offset offset   returns a 12  just before ddd  f 3              just before bbb            return   1     ENDIF     Set default delimiters      IF n_elements OpenDelim  EQ 0 THEN OpenDelim          IF n_elements CloseDelim  EQ 0 THEN CloseDelim         Make sure InString has more than 1 character      length   strlen InString       IF  length LE 1  THEN return 1    Return if no open delimiter     OpenPos   strpos  InString  OpenDelim       IF  OpenPos EQ  1  THEN BEGIN          print   Error: No opening delimiter          return   1     ENDIF         Convert strings to array of integers to speed processing      OpenDelim   fix byte OpenDelim 0      CloseDelim   fix byte CloseDelim 0      TmpStr   fix byte strmid  InString  OpenPos  length    Leave the  1  in here   This forces conversion from BYTE to INTEGER    necessary because there are no negative BYTEs      TmpStr    TmpStr EQ OpenDelim                   1 TmpStr EQ CloseDelim      length   n_elements TmpStr      Initialize count of number of delimiters   We ve found one  the   first opener      BraceCnt   1     i 0     WHILE  BraceCnt GT 0  AND  i LT length 1  DO BEGIN          i   i 1         BraceCnt   BraceCnt   TmpStr i      ENDWHILE           i   i   OpenPos     IF  BraceCnt GT 0  THEN i    1     return  i END      "); 
    141 a[139] = new Array("./Textoidl/nexttok.html", "nexttok.pro", "", "      NAME:         NEXTTOK   PURPOSE:         Find the next occurance of any of a set of characters in a         string and return the character which occurs next    CATEGORY:         text strings   CALLING SEQUENCE:         tok   nexttok  strn  tokens     INPUTS:         strn     string to be searched for sub superscripts    in         tokens   string containing characters to be found      in   KEYWORD PARAMETERS:         POSITION   Set to a named variable to get position     out                     of next token  or  1 if none found           HELP      Print useful message and exit    OUTPUTS:         tok      Contains the character among tokens which     out                   occurs next in strn  or null   if none found    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:   EXAMPLE:         nexttok   x 2   N_j 3   _  position pos   returns   and sets         pos to 1    MODIFICATION HISTORY:          Id: nexttok pro 47 2006 05 09 09:13:01Z pinsard            Log: nexttok pro v           Revision 1 4  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Generalized so that the next occurence of any of a set of characters will         be returned            Revision 1 1  1996 01 31 18:41:06  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION nexttok  strn  tokens                      POSITION position                      HELP Help     compile_opt idl2  strictarrsubs       Return to caller on error      On_error  2     Help those in need of it      IF  n_params  NE 2  OR keyword_set Help  THEN BEGIN          offset                 print  offset Find the next occurance of any of a set of characters in a          print  offset string and return the character which occurs next    CALLING SEQUENCE:         print  offset tok   nexttok  strn  tokens     INPUTS:         print  offset Inputs:          print  offset offset strn     string to be searched for sub superscripts    in          print  offset offset tokens   string containing characters to be found      in    KEYWORD PARAMETERS:         print  offset Keywords:          print  offset offset POSITION   Set to a named variable to get position     out          print  offset offset             of next token  or  1 if none found          print  offset offset HELP      Print useful message and exit    OUTPUTS:         print  offset Outputs:          print  offset offset tok     Contains the character among tokens which      out          print  offset offset          occurs next in strn  or null   if none found    EXAMPLE:         print  offset Example:          print  offset offset nexttok   x 2   N_j 3   _  position pos   returns   and sets          print  offset offset pos to 1          return        ENDIF       TmpStr   byte strn      TmpTok   byte tokens      NumToks   n_elements TmpTok        MatchIdx   0L     Matches   0L     FOR j 0  NumToks 1 DO BEGIN          TmpMatch   where TmpStr EQ TmpTok j   TmpCnt          IF  TmpCnt GT 0  THEN BEGIN             MatchIdx    MatchIdx  Replicate j  TmpCnt              Matches    Matches  TmpMatch          ENDIF      ENDFOR       IF n_elements MatchIdx  EQ 1 THEN BEGIN          Position    1         return        ENDIF       MatchIdx   MatchIdx 1:      Matches   Matches 1:       SortInd   sort Matches       Position   Matches SortInd 0       Tok   string TmpTok MatchIdx SortInd 0           return  Tok END   "); 
    142 a[140] = new Array("./Textoidl/showtex.html", "showtex.pro", "", "      NAME:         SHOWTEX   PURPOSE:         Display TeX sequence translation table on current graphics device    CATEGORY:         text strings   CALLING SEQUENCE:         showtex   INPUTS:   KEYWORD PARAMETERS:          HELP   print out info on use of the function                  and exit          FONT    Set to 0 to use hardware font   1 to use vector                   Note that the only hardware font supported is                  Postscript   OUTPUTS:   COMMON BLOCKS:   SIDE EFFECTS:         Plot is created    NOTES:         Hardware fonts are supported only for device PS  PostScript    EXAMPLE:   MODIFICATION HISTORY:          Id: showtex pro 47 2006 05 09 09:13:01Z pinsard            Log: showtex pro v           Revision 1 4  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added error handling and updated built in help            Revision 1 1  1996 02 08 18:55:12  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      PRO Showtex  FONT fnt  HELP help     compile_opt idl2  strictarrsubs      Return to caller on error      On_error  2    Print help if needed      IF keyword_set help  THEN BEGIN         print       Display TeX sequence translation table on current graphics device          print       showtex          print       Keywords:          print           HELP       print this message and return          print          FONT        set to 0 to use hardware fonts for current device          print                       1 to use vector fonts  DEFAULT          print       NOTES:    The only hardware font supported is PostScript          print                 The FONT keyword overrides the font selected in  p font          return     ENDIF         We begin by deciding on the font   PostScript   0 means use vector      PostScript   0     PlotTitle    Vector Fonts      IF n_elements fnt  EQ 0 THEN BEGIN   get font from  p font         IF  P font NE  1 THEN BEGIN   User wants hardware font              PostScript   1             PlotTitle    PostScript Fonts          ENDIF      ENDIF ELSE BEGIN              get font from FONT keyword         IF fnt NE  1 THEN BEGIN             PostScript   1             PlotTitle    PostScript Fonts          ENDIF     ENDELSE         Bomb out if user wants hardware font for non PostScript device      IF  PostScript EQ 1  AND  strupcase D name  NE  PS  THEN BEGIN                                                    Device isn t postscript                                                  and user wants hardware                                                 font   Not good          print   Warning: No translation for device:    D name         return     ENDIF       Set  P font to value indicated by FONT keyword  saving surrent   setting to reset at end      OldPFont    p font      p font   PostScript   1      erase     seq   textoidl tex      DisplayString   seq          textoidl seq       nseq   n_elements seq      nrows   nseq 5   1            Five sequences per row      dx    9 5      dy    9 nrows     y 95     xyouts 5 y PlotTitle align 5 norm size 2 5     count 0     FOR i   1L  nrows DO BEGIN         y  y   dy         x    1         FOR j   1  5 DO BEGIN             IF  count LT nseq   THEN xyouts  x  y  DisplayString count  align    5   norm             count   count 1             x   x   dx         ENDFOR     ENDFOR    Restore old  P font       p font   OldPFont END"); 
     140a[138] = new Array("./Textoidl/matchdelim.html", "matchdelim.pro", "", "      NAME:         MATCHDELIM   PURPOSE:          Match open close delimiters in a string    CATEGORY:          text strings   CALLING SEQUENCE:          position   matchdelim  strn   openpos    INPUTS:          strn          a string containing an open                 in                         delimiter  e g    in which you                          want to find the matching closing                           delimiter  e g      KEYWORD PARAMETERS:          OPEN_DELIM    A single character containing the opening   in                         delimiter  e g     Default is            CLOSE_DELIM   A single character containing the closing   in                         delimiter  e g     Default is     OUTPUTS:          position   returns the position in strn of the            out                      closing delimiter   1 if no closing found           openpos    Set to a named variable to receive the         out                      position of the first opening delimiter                       Optional    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:            Any pair of  nonidentical  characters can be used as            delimiters     EXAMPLE:          matchdelim one two three  returns 9  the character just          before  three      MODIFICATION HISTORY:          Id: matchdelim pro 114 2006 06 19 14:14:56Z smasson            Log: matchdelim pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Removed restriction that open delim must be first char   Added argument         to allow for return of position of open delim            Revision 1 1  1996 01 31 18:41:06  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION Matchdelim  InString  OpenPos                         OPEN_DELIM OpenDelim                         CLOSE_DELIM CloseDelim                         HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2      IF  n_params  LT 1  OR keyword_set Help  THEN BEGIN         offset                 print  offset Match open close delimiters in a string          print  offset position   matchdelim  strn   openpos          print  offset Inputs:          print  offset offset strn          a string containing an open                 in          print  offset offset                delimiter  e g    in which you           print  offset offset                want to find the matching closing            print  offset offset                delimiter  e g            print  offset Keywords:          print  offset offset OPEN_DELIM    A single character containing the opening   in          print  offset offset                delimiter  e g     Default is           print  offset offset CLOSE_DELIM   A single character containing the closing   in          print  offset offset                delimiter  e g     Default is           print  offset Outputs:          print  offset offset position   returns the position in strn of the            out          print  offset offset             closing delimiter   1 if no closing found          print  offset offset openpos    Set to a named variable to receive the         out          print  offset offset             position of the first opening delimiter          print  offset offset             Optional          print  offset Example:          print  offset offset matchdelim a one two three  returns 10  the character just          print  offset offset   before  three             print  offset offset             a matchdelim aaa bbb ccc ddd eee f OP CL          print  offset offset   returns a 12  just before ddd  f 3              just before bbb            return   1     ENDIF     Set default delimiters      IF n_elements OpenDelim  EQ 0 THEN OpenDelim          IF n_elements CloseDelim  EQ 0 THEN CloseDelim         Make sure InString has more than 1 character      length   strlen InString       IF  length LE 1  THEN return 1    Return if no open delimiter     OpenPos   strpos  InString  OpenDelim       IF  OpenPos EQ  1  THEN BEGIN          print   Error: No opening delimiter          return   1     ENDIF         Convert strings to array of integers to speed processing      OpenDelim   fix byte OpenDelim 0      CloseDelim   fix byte CloseDelim 0      TmpStr   fix byte strmid  InString  OpenPos  length    Leave the  1  in here   This forces conversion from BYTE to INTEGER    necessary because there are no negative BYTEs      TmpStr    TmpStr EQ OpenDelim                   1 TmpStr EQ CloseDelim      length   n_elements TmpStr      Initialize count of number of delimiters   We ve found one  the   first opener      BraceCnt   1     i 0     WHILE  BraceCnt GT 0  AND  i LT length 1  DO BEGIN          i   i 1         BraceCnt   BraceCnt   TmpStr i      ENDWHILE           i   i   OpenPos     IF  BraceCnt GT 0  THEN i    1     return  i END      "); 
     141a[139] = new Array("./Textoidl/nexttok.html", "nexttok.pro", "", "      NAME:         NEXTTOK   PURPOSE:         Find the next occurance of any of a set of characters in a         string and return the character which occurs next    CATEGORY:         text strings   CALLING SEQUENCE:         tok   nexttok  strn  tokens     INPUTS:         strn     string to be searched for sub superscripts    in         tokens   string containing characters to be found      in   KEYWORD PARAMETERS:         POSITION   Set to a named variable to get position     out                     of next token  or  1 if none found           HELP      Print useful message and exit    OUTPUTS:         tok      Contains the character among tokens which     out                   occurs next in strn  or null   if none found    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:   EXAMPLE:         nexttok   x 2   N_j 3   _  position pos   returns   and sets         pos to 1    MODIFICATION HISTORY:          Id: nexttok pro 114 2006 06 19 14:14:56Z smasson            Log: nexttok pro v           Revision 1 4  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Generalized so that the next occurence of any of a set of characters will         be returned            Revision 1 1  1996 01 31 18:41:06  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION nexttok  strn  tokens                      POSITION position                      HELP Help     compile_opt idl2  strictarrsubs       Return to caller on error      On_error  2     Help those in need of it      IF  n_params  NE 2  OR keyword_set Help  THEN BEGIN          offset                 print  offset Find the next occurance of any of a set of characters in a          print  offset string and return the character which occurs next    CALLING SEQUENCE:         print  offset tok   nexttok  strn  tokens     INPUTS:         print  offset Inputs:          print  offset offset strn     string to be searched for sub superscripts    in          print  offset offset tokens   string containing characters to be found      in    KEYWORD PARAMETERS:         print  offset Keywords:          print  offset offset POSITION   Set to a named variable to get position     out          print  offset offset             of next token  or  1 if none found          print  offset offset HELP      Print useful message and exit    OUTPUTS:         print  offset Outputs:          print  offset offset tok     Contains the character among tokens which      out          print  offset offset          occurs next in strn  or null   if none found    EXAMPLE:         print  offset Example:          print  offset offset nexttok   x 2   N_j 3   _  position pos   returns   and sets          print  offset offset pos to 1          return        ENDIF       TmpStr   byte strn      TmpTok   byte tokens      NumToks   n_elements TmpTok        MatchIdx   0L     Matches   0L     FOR j 0  NumToks 1 DO BEGIN          TmpMatch   where TmpStr EQ TmpTok j   TmpCnt          IF  TmpCnt GT 0  THEN BEGIN             MatchIdx    MatchIdx  Replicate j  TmpCnt              Matches    Matches  TmpMatch          ENDIF      ENDFOR       IF n_elements MatchIdx  EQ 1 THEN BEGIN          Position    1         return        ENDIF       MatchIdx   MatchIdx 1:      Matches   Matches 1:       SortInd   sort Matches       Position   Matches SortInd 0       Tok   string TmpTok MatchIdx SortInd 0           return  Tok END   "); 
     142a[140] = new Array("./Textoidl/showtex.html", "showtex.pro", "", "      NAME:         SHOWTEX   PURPOSE:         Display TeX sequence translation table on current graphics device    CATEGORY:         text strings   CALLING SEQUENCE:         showtex   INPUTS:   KEYWORD PARAMETERS:          HELP   print out info on use of the function                  and exit          FONT    Set to 0 to use hardware font   1 to use vector                   Note that the only hardware font supported is                  Postscript   OUTPUTS:   COMMON BLOCKS:   SIDE EFFECTS:         Plot is created    NOTES:         Hardware fonts are supported only for device PS  PostScript    EXAMPLE:   MODIFICATION HISTORY:          Id: showtex pro 114 2006 06 19 14:14:56Z smasson            Log: showtex pro v           Revision 1 4  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added error handling and updated built in help            Revision 1 1  1996 02 08 18:55:12  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      PRO Showtex  FONT fnt  HELP help     compile_opt idl2  strictarrsubs      Return to caller on error      On_error  2    Print help if needed      IF keyword_set help  THEN BEGIN         print       Display TeX sequence translation table on current graphics device          print       showtex          print       Keywords:          print           HELP       print this message and return          print          FONT        set to 0 to use hardware fonts for current device          print                       1 to use vector fonts  DEFAULT          print       NOTES:    The only hardware font supported is PostScript          print                 The FONT keyword overrides the font selected in  p font          return     ENDIF         We begin by deciding on the font   PostScript   0 means use vector      PostScript   0     PlotTitle    Vector Fonts      IF n_elements fnt  EQ 0 THEN BEGIN   get font from  p font         IF  P font NE  1 THEN BEGIN   User wants hardware font              PostScript   1             PlotTitle    PostScript Fonts          ENDIF      ENDIF ELSE BEGIN              get font from FONT keyword         IF fnt NE  1 THEN BEGIN             PostScript   1             PlotTitle    PostScript Fonts          ENDIF     ENDELSE         Bomb out if user wants hardware font for non PostScript device      IF  PostScript EQ 1  AND  strupcase D name  NE  PS  THEN BEGIN                                                    Device isn t postscript                                                  and user wants hardware                                                 font   Not good          print   Warning: No translation for device:    D name         return     ENDIF       Set  P font to value indicated by FONT keyword  saving surrent   setting to reset at end      OldPFont    p font      p font   PostScript   1      erase     seq   textoidl tex      DisplayString   seq          textoidl seq       nseq   n_elements seq      nrows   nseq 5   1            Five sequences per row      dx    9 5      dy    9 nrows     y 95     xyouts 5 y PlotTitle align 5 norm size 2 5     count 0     FOR i   1L  nrows DO BEGIN         y  y   dy         x    1         FOR j   1  5 DO BEGIN             IF  count LT nseq   THEN xyouts  x  y  DisplayString count  align    5   norm             count   count 1             x   x   dx         ENDFOR     ENDFOR    Restore old  P font       p font   OldPFont END"); 
    143143a[141] = new Array("./Textoidl/str_token.html", "str_token.pro", "", "      NAME:         STR_TOKEN   PURPOSE:         Retrieve portion of string up to token    CATEGORY:         text strings   CALLING SEQUENCE:         new   str_token  old  token     INPUTS:         old     String to be split   Contains text after    in  out                  token on output          token   Token to use in splitting old               in   KEYWORD PARAMETERS:          TRIM   set to remove leading blanks from old                   before returning           HELP   print useful message and exit    OUTPUTS:         new     portion of string up to token               out         old     portion of old after token                  out  in   COMMON BLOCKS:   SIDE EFFECTS:         Input parameter old is modified    NOTES:         Token may be one or more characters          If token is not found  returns old and sets old to     EXAMPLE:         If old is  foo44 bar  then str_token  old   44    would return          foo  and upon return  old will be left with   bar   If  TRIM         were set  old would be  bar  on return            If old xyz  then new str_token old a  would return with         new xyz  and old    THANKS:         To D  Linder who wrote GETTOK  part of the goddard library          upon which this is based    MODIFICATION HISTORY:          Id: str_token pro v 1 1 2000 06 14 19:09:22 mcraig Exp            Log: str_token pro v           Revision 1 1  2000 06 14 19:09:22  mcraig         Changed name of strtok str_token to avoid conflict in IDL 5 3            Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added built in help            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Str_token  string  token                     TRIM trim  HELP Help     compile_opt idl2  strictarrsubs      Back to the caller if error occurs      On_error  2      IF  n_params  NE 2  OR keyword_set Help  THEN BEGIN          offset                 print  offset Retrieve portion of string up to token          print  offset new   str_token  old  token           print  offset Inputs:          print  offset offset old     String to be split   Contains text after    in  out          print  offset offset          token on output          print  offset offset token   Token to use in splitting old               in          print  offset Keywords:          print  offset offset TRIM   set to remove leading blanks from old           print  offset offset          before returning          print  offset offset HELP   print useful message and exit          print  offset Outputs:          print  offset offset new     portion of string up to token               out          print  offset offset old     portion of old after token                  out  in          print  offset Side effects:          print  offset offset Input parameter old is modified          print  offset Notes:          print  offset offset Token may be one or more characters          print  offset offset If token is not found  returns old and sets old to           print  offset Examples:          print  offset offset If old is  foo44 bar  then str_token  old   44    would return          print  offset offset    foo  and upon return  old will be left with   bar   If  TRIM          print  offset offset   were set  old would be  bar  on return            print  offset offset If old xyz  then new str_token old a  would return with          print  offset offset   new xyz  and old          return   1     ENDIF       pos   strpos string  token       IF  pos GE 0  THEN BEGIN         front   strmid string  0  pos           string   strmid string  pos   strlen token  strlen string          IF keyword_set trim  THEN string   strtrim string  1          return  front     ENDIF          front   string     string         return  front      END "); 
    144144a[142] = new Array("./Textoidl/strcnt.html", "strcnt.pro", "", "      NAME:         STRCNT   PURPOSE:         Count number of occurrences of a substring in a string    CATEGORY:         text strings   CALLING SEQUENCE:         num   strcnt strn  substring   pos    INPUTS:         string      The string in which to count occurences      in         substring   The substring to count occurrences of        in         pos         the position at which to begin the search     in                       If not supplied  start at beginning of                      string    KEYWORD PARAMETERS:          HELP       Print useful message and return    OUTPUTS:         num         Number of occurances of substring in string  out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         Overlapping occurances are not counted separately   For         example  counting occurances of  bb  in  blah bbb  returns one         occurance     EXAMPLE:   MODIFICATION HISTORY:          Id: strcnt pro v 1 3 1996 06 14 20:00:27 mcraig Exp            Log: strcnt pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added fast processing using BYTE arrays if we are counting occurences of         a single character   Added error handling            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Strcnt  strn  substrn  startpos                     HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Help user  if needed      IF  n_params  LT 2  OR keyword_set Help  THEN BEGIN         offset                 print  offset Count number of occurrences of a substring in a string          print  offset num   strcnt strn  substring   pos          print  offset Inputs:          print offset offset string      The string in which to count occurences      in          print offset offset substring   The substring to count occurrences of        in          print offset offset pos         the position at which to begin the search     in          print offset offset              If not supplied  start at beginning of          print offset offset              string          print  offset Keywords:          print offset offset HELP       Print useful message and return          print  offset Outputs:          print offset offset num         Number of occurances of substring in string  out          return   1     ENDIF       IF n_params  EQ 2 THEN startpos   0     return if we weren t really given a substring to search for          IF strlen substrn  EQ 0 THEN BEGIN          print   Error: Can t count occurances of null string          return   1     ENDIF          or if we were told to start at the end of the string      tmpstrn   strmid strn  startpos  strlen strn      IF strlen tmpstrn  EQ 0 THEN return  0    If looking for occurences of single character  process using BYTE   array      IF strlen substrn  EQ 1 THEN BEGIN         tmpstrn   byte TmpStrn          count   n_elements where TmpStrn EQ  byte substrn 0       ENDIF ELSE BEGIN          count   0L         pos   rstrpos tmpstrn  substrn          WHILE pos GE 0 DO BEGIN             count   count   1             pos   rstrpos tmpstrn  substrn  pos          ENDWHILE     ENDELSE       return  count END         "); 
    145145a[143] = new Array("./Textoidl/strtrans.html", "strtrans.pro", "", "      NAME:         STRTRANS   PURPOSE:         Translate all occurences of one substring to another    CATEGORY:         text strings   CALLING SEQUENCE:         new   strtrans oldstr from to ned    INPUTS:         oldstr   string on which to operate               in                   May be an array          from     substrings to be translated  May be      in                   an array          to       what strings in from should be           in                   translated to  May be an array    KEYWORD PARAMETERS:          HELP    Set this to print useful message and                    exit    OUTPUTS:         new      Translated string  Array if oldstr is    out                             an array          ned      number of substitutions performed in     out                   oldstr   Array if oldstr is an array    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           Any of old  from  and to can be arrays              from and to must have the same number of elements    EXAMPLE:         inp Many bad chars in_here          from _          to                    out   strtrans inp from to ned          Will produce out Many bad chars in here  and set ned to 4    MODIFICATION HISTORY:          Id: strtrans pro v 1 7 2004 06 15 17:25:54 mcraig Exp            Log: strtrans pro v           Revision 1 7  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 6  2004 01 11 01:49:00  mcraig         Changed format of one array to newer   style to avoidf conflict with function name in astro library            Revision 1 5  2001 11 23 21:14:35  mcraig         Added keywords  EXTRACT   PRESERVE_NULL   REGEX to call to         strsplit  This comes very close to reproducing the behavior of the         obsolete routine str_sep            Revision 1 4  2001 11 21 19:13:23  mcraig         Changed str_sep to strsplit  The former is now considered obsolete by RSI            Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Sped up significantly by using str_sep to handle the translation   No longer         relies on routines fromother user libraries            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION strtrans  InputString  from  to  ned                        HELP Help     compile_opt idl2  strictarrsubs      Bomb out to caller if error      On_error  2    Offer help if we don t have at least InputString  from  and to  or   if the user asks for it      IF  n_params  LT 3  OR keyword_set help  THEN BEGIN         offset                 print  offset Translate all occurences of one substring to another          print  offset new   strtrans oldstr from to ned          print  offset Inputs:          print  offset offset oldstr   string on which to operate               in          print  offset offset           May be an array          print  offset offset from     substrings to be translated  May be      in          print  offset offset           an array          print  offset offset to       what strings in from should be           in          print  offset offset           translated to  May be an array          print  offset Outputs:          print  offset offset new      Translated string  Array if oldstr is    out          print  offset offset           an array          print  offset offset ned      number of substitutions performed in     out          print  offset offset           oldstr   Array if oldstr is an array          print  offset Notes:          print  offset offset  Any of old  from  and to can be arrays             print  offset offset  from and to must have the same number of elements          return   1     ENDIF           strn   InputString     Check that From To have same number of elements   RETURN if they don t      NFrom   n_elements from      NTo   n_elements to      IF  NFrom EQ 0  OR  NTo EQ 0  THEN return  strn     IF NFrom NE NTo THEN BEGIN         print Error: Number of elements in from to unequal          return 1     ENDIF     Make sure there are no null strings in From   RETURN if there are         FromLen   strlen From      IF  total FromLen EQ 0  GT 0  THEN BEGIN         print   Error: elements of From must have nonzero length          return   1     ENDIF       NStrings   n_elements strn      ned   lonarr NStrings      tmpned   0L    Say strn a b c  from  and to   Then the approach here is to   first split strn at all occurances of   then recombine the pieces   with   inserted instead   Do this for all elements of strn  and   all elements of from      FOR i   0L  NStrings 1 DO BEGIN         ned i    0L         FOR j 0L  NFrom 1 DO BEGIN             SepStr   strsplit strn i  from j                                   EXTRACT   REGEX   PRESERVE_NULL              NSubs   n_elements SepStr    1             strn i    SepStr 0              FOR k 1L  NSubs DO strn i    strn i    To j    SepStr k              ned i     ned i    NSubs         ENDFOR      ENDFOR      return  strn END "); 
    146146a[144] = new Array("./Textoidl/sub_sup_idl.html", "sub_sup_idl.pro", "", "      NAME:         SUB_SUP_IDL   PURPOSE:         Return the proper IDL font positioning command for TeX         sub superscripts     CATEGORY:   CALLING SEQUENCE:         fnt   sub_sup_idl  strn     INPUTS:         strn   Either   or  _  the TeX super subscript       in                 characters   KEYWORD PARAMETERS:          FORCE_UD   Set this to use  U D instead of  E I for                      sub superscripts     OUTPUTS:         fnt   Either  U  or  E  for superscripts               out                or  D  or  I  for subscripts    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:   EXAMPLE:   LIBRARY FUNCTIONS CALLED:             MODIFICATION HISTORY:          Id: sub_sup_idl pro v 1 1 1996 01 31 18:47:37 mcraig Exp            Log: sub_sup_idl pro v           Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2     FUNCTION Sub_sup_idl  token   FORCE_UD   force_ud     compile_opt idl2  strictarrsubs    IF keyword_set force_ud  THEN BEGIN      IF  token EQ   THEN return   U       IF  token EQ  _  THEN return   D      return    ENDIF ELSE BEGIN     IF  token EQ   THEN return   E       IF  token EQ  _  THEN return   I      return    ENDELSE  END  "); 
    147 a[145] = new Array("./Textoidl/textable.html", "textable.pro", "", "      NAME:         TEXTABLE   PURPOSE:         Returns a translation table from TeX to IDL    CATEGORY:         text strings   CALLING SEQUENCE:         table   textable    INPUTS:         None   KEYWORD PARAMETERS:          POSTSCRIPT   If set  return postscript translation                        table rather than vector fonts table                         Default is translations for vector                        fonts           HELP         Print help and exit    OUTPUTS:         table   a 2D text array   table 0  contains          out                  the words to be translated away  table 1                   contains the words to translate them to       COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         To find out what TeX sequences are available  look at         table 0    EXAMPLE:   MODIFICATION HISTORY:          Id: textable pro 47 2006 05 09 09:13:01Z pinsard            Log: textable pro v           Revision 1 8  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 7  1996 07 22 23:56:08  mcraig         Added  vartheta            Revision 1 6  1996 07 12 21:31:42  mcraig         Fixed  varphi in vector font  added  circ            Revision 1 5  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 4  1996 05 09 00:22:17  mcraig         Added command to return to previous font after switching to Greek or         symbol font            Revision 1 3  1996 02 08 19:49:35  mcraig         Removed control sequence  perp because the postscript code for it is             Revision 1 2  1996 02 08 18:53:38  mcraig         Added translations for PostScript fonts  and added several new TeX         control sequences            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION textable  POSTSCRIPT ps  VECTOR vec   HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Print help if necessary      IF keyword_set Help   THEN BEGIN         offset                 print  offset Returns a translation table from TeX to IDL          print  offset table   textable          print  offset Keywords:          print  offset offset POSTSCRIPT   If set  return postscript translation          print  offset offset                table rather than vector fonts table          print  offset offset                Default is translations for vector          print  offset offset                fonts          print  offset offset HELP         Print help and exit          print  offset Outputs:          print  offset offset table   a 2D text array   table 0  contains          out          print  offset offset          the words to be translated away  table 1          print  offset offset          contains the words to translate them to          print  offset Notes:          print  offset offset To find out what TeX sequences are available  look at          print  offset offset table 0      ENDIF       VECFONT 1                     index of vector font in translation table     PSFONT 2  index of postscript font in trans table     IF keyword_set ps  THEN FontSelection PSFONT ELSE FontSelection VECFONT     Set IDL font sequence needed to switch to Greek letters      GreekFont   strarr 3      GreekFont VECFONT     7      GreekFont PSFONT     M      Set IDL font sequence needed to switch to special symbol font      SymbolFont   strarr 3      SymbolFont VECFONT     M      SymbolFont PSFONT     M      Set IDL font sequence needed to switch back to initial font      PreviousFont   strarr 3      PreviousFont VECFONT     X      PreviousFont PSFONT     X    lowercase Greek         Note there is some trickery involved in getting  varphi      to work in the vector fonts  because it is actually      a member of the symbol font set  not the Greek font      set   Go figure   Solution is just to make the vector      character a switch to symbol  the proper character from      that font  and a switch back out of symbol   Same comment holds      for  vartheta           TeX SEQUENCE       VECTOR       POSTSCRIPT     LowercaseGreek        alpha       a             a           beta        b             b           gamma       c             g           delta       d             d           epsilon     e             e           zeta        f             z           eta   g       h           theta   h       q           iota   i       i           kappa   j       k           lambda   k       l           mu   l       m           nu   m       n           xi   n    S  Rx         pi   p       p           rho   q       r           sigma   r       s           tau   s       t           upsilon   t       u           phi   u       f           chi   v       c           psi   w       y           omega   x       w           varpi   p       v           varepsilon   e             e           varphi                SymbolFont VECFONT P PreviousFont VECFONT                                                   j           vartheta                SymbolFont VECFONT t PreviousFont VECFONT                                                   J                                 Uppercase Greek             TeX SEQUENCE        VECTOR          POSTSCRIPT     UppercaseGreek        Gamma   C              G               Delta   D              D               Theta   H              Q               Lambda   K              L               Xi   N            S  RX             Pi   P              P               Sigma   R              S               Upsilon   T       string byte 161        Phi   U              F               Psi   W              Y               Omega   X              W                   Special symbols       NOTES   You must leave  infty before  in in the translatation             table to avoid having the  in part of  infty translated             away                            DO NOT blindly add the control sequence  perp   Its             PostScript code is   which leads to thing being             interpreted as superscripts which shouldn t be             TeX SEQUENCE        VECTOR          POSTSCRIPT     Symbols        aleph        string byte 192        ast                              cap   3      string byte 199        cdot        string byte 215        cup   1      string byte 200        exists   E                            infty        string byte 165        in   e      string byte 206        equiv   :      string byte 186        pm        string byte 177        div        string byte 184        subset   0      string byte 204        superset   2      string byte 201        leftarrow   4      string byte 172        downarrow   5      string byte 175        rightarrow   6      string byte 174        uparrow   7      string byte 173        neq        string byte 185        propto        string byte 181        sim   A      string byte 126        partial   D      string byte 182        nabla   G      string byte 209        angle   a      string byte 208        times   X      string byte 180        geq   b      string byte 179        leq   l      string byte 163               string byte 162        prime        string byte 162        circ        string byte 176                              LowercaseGreek 1            GreekFont FontSelection            LowercaseGreek FontSelection            PreviousFont FontSelection      UppercaseGreek 1            GreekFont FontSelection          UppercaseGreek FontSelection            PreviousFont FontSelection      Symbols 1            SymbolFont FontSelection            Symbols FontSelection            PreviousFont FontSelection       TranslationTable    LowercaseGreek UppercaseGreek Symbols      return TranslationTable 0:1   END  "); 
    148 a[146] = new Array("./Textoidl/textoidl.html", "textoidl.pro", "", "      NAME:         TEXTOIDL   PURPOSE:         Convert a valid TeX string to a valid IDL string for plot labels    CATEGORY:         text strings   CALLING SEQUENCE:         new   textoidl old    INPUTS:         old              TeX string to be converted   Will not be     in                           modified   old may be a string array    KEYWORD PARAMETERS:         FONT             Set to 0 to use hardware font   1 to use                            vector   Note that the only hardware font                            supported is PostScript           TEX_SEQUENCES   return the available TeX sequences          HELP            print out info on use of the function                           and exit    OUTPUTS:         new              IDL string corresponding to old              out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           Use the procedure SHOWTEX to get a list of the available TeX           control sequences              The only hardware font for which translation is available is           PostScript             The only device for which hardware font            translation is available is PostScript            The FONT keyword overrides the font selected            by  p font    EXAMPLE:         out   TeXtoIDL Gamma 2   5N_ ed          The string out may be used in XYOUTS or other IDL text         display routines   It will be an uppercase Gamma  with an         exponent of 2  then a plus sign  then an N with the subscript         ed    MODIFICATION HISTORY:          Id: textoidl pro 47 2006 05 09 09:13:01Z pinsard            Log: textoidl pro v           Revision 1 7  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 6  2004 01 11 01:49:00  mcraig         Changed format of one array to newer   style to avoidf conflict with function name in astro library            Revision 1 5  2001 11 23 21:10:55  mcraig         Added backslash   to tex sequences in translation table to protect them during regexp search in strsplit            Revision 1 4  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 3  1996 05 09 00:22:17  mcraig         Added error handling  cleaned up documentation            Revision 1 2  1996 02 08 18:52:50  mcraig         Added ability to use hardware fonts for PostScript device            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION Textoidl  InputString                       FONT fnt                       HELP hlp                       TEX_SEQUENCES tex_seq     compile_opt idl2  strictarrsubs       Return to caller if there is an error      On_error  2    We begin by deciding on the font   PostScript   0 means use vector      PostScript   0     IF n_elements fnt  EQ 0 THEN BEGIN       get font from  p font         IF  p font NE  1 THEN BEGIN          User wants hardware font              PostScript 1         ENDIF     ENDIF ELSE BEGIN                         get font from FONT keyword         IF fnt NE  1 THEN PostScript   1     ENDELSE     Bomb out if user wants non PostScript hardware font      IF  PostScript EQ 1  AND  d name NE  PS  THEN BEGIN                                                    Device isn t postscript                                                  and user wants hardware                                                 font   Not good          print Warning: No translation for device:  d name         return InputString                    ENDIF           IF keyword_set  tex_seq  THEN BEGIN         table textable          return table 0      ENDIF       IF keyword_set hlp  OR  n_params  EQ 0  THEN BEGIN         print      Convert a TeX string to an IDL string          print      new   TeXtoIDL old          print        old   TeX string to translate                  in          print        new   resulting IDL string                     out          print      Keywords:          print         FONT       set to  1 to translate for vector fonts           print                     DEFAULT     Set to 0 to translate for          print                    hardware font          print          TEX_SEQUENCES   return the available TeX sequences          print          HELP      print this message and exit          print      NOTES:            print           Use SHOWTEX to obtain a list of the available          print           TeX control sequences          print           old may be a string array   If so  new is too          print           The only device for which hardware font          print           translation is available is PostScript          print           The FONT keyword overrides the font selected          print           by  p font          return   1     ENDIF        PostScript has been set to 1 if PostScript fonts are desired      strn   InputString     table   textable POSTSCRIPT PostScript           Greek sub superscripts need to be protected by putting braces     around them if they are unbraced   This will have the result the     it will be difficult to use   as a sub superscript   Get over it       V2 11 Must include the   in from of translation table TeX     sequences to ensure that strsplit properly treats the   in the     TeX sequence  Since strsplit is doing a regexp replace  and   is     special in regexps  need to escape it      strn    strtrans strn   table 0     table 0        strn    strtrans strn   _ table 0     _ table 0        First we translate Greek letters and the like   This makes guessing    alignment of sub superscripts easier  as all special characters will then    be one character long       V2 11 Must include the   in from of translation table TeX     sequences to ensure that strsplit properly treats the   in the     TeX sequence  Since strsplit is doing a regexp replace  and   is     special in regexps  need to escape it      strn   strtrans strn   table 0    table 1          FOR i   0L  n_elements strn 1 DO BEGIN          strn i    translate_sub_super strn i    Take care of sub superscripts     ENDFOR       return strn END "); 
    149 a[147] = new Array("./Textoidl/translate_sub_super.html", "translate_sub_super.pro", "", "   NOTE to future maintainers:     Make sure sub_sup_idl stays before translate_sub_super   At least     for now  when IDL encounters a function and automatically compiles     it  it only compiles the functions in the file up to the named     function   So even if sub_sup_idl was declared with     FORWARD_FUNCTION in translate_sub_super  it would not properly     compile         SPECIAL NOTE:          The file translate_sub_super pro contains two functions          translate_sub_super  and sub_sup_idl   The former is the         generic routine for processing TeX sub superscripts  the         latter is used only by translate_sub_super and has no general         utility   Hence it lives here   You will see documentation for         translate_sub_super second if you use DOC_LIBRARY            NAME:         SUB_SUP_IDL   PURPOSE:         Return the proper IDL font positioning command for TeX         sub superscripts     CATEGORY:         TeXtoIDL   CALLING SEQUENCE:         fnt   sub_sup_idl  strn     INPUTS:         strn        Either   or  _  the TeX super subscript       in                      characters   KEYWORD PARAMETERS:          FORCE_UD   Set this to use  U D instead of  E I for                      sub superscripts            HELP       Set to print useful message and exit    OUTPUTS:         fnt         Either  U  or  E  for superscripts              out                      or  D  or  I  for subscripts    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         Used only by translate_sub_super   Should be kept in same         file     EXAMPLE:   MODIFICATION HISTORY:          Id: translate_sub_super pro 47 2006 05 09 09:13:01Z pinsard            Log: translate_sub_super pro v           Revision 1 5  2000 06 14 19:09:22  mcraig         Changed name of strtok str_token to avoid conflict in IDL 5 3            Revision 1 4  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 3  1996 05 09 00:22:17  mcraig         Changed some function calls to reflect changes in those functions  moved         some code out of the main loop that didn t need to be there  added         documentation            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2     COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Sub_sup_idl  token   FORCE_UD   force_ud     compile_opt idl2  strictarrsubs      provide help if needed      IF  n_params  NE 1  OR keyword_set Help  THEN BEGIN         offset                 print  offset Return the proper IDL font positioning command for TeX          print  offset sub superscripts            print  offset fnt   sub_sup_idl  strn           print  offset Inputs:          print  offset offset strn        Either   or  _  the TeX super subscript       in          print  offset offset              characters          print  offset Keywords:          print  offset offset FORCE_UD   Set this to use  U D instead of  E I for          print  offset offset              sub superscripts           print  offset offset HELP       Set to print useful message and exit          print  offset Outputs:          print  offset offset fnt         Either  U  or  E  for superscripts              out          print  offset offset              or  D  or  I  for subscripts          return   1     ENDIF       IF keyword_set force_ud  THEN BEGIN          IF  token EQ   THEN return   U           IF  token EQ  _  THEN return   D          return        ENDIF ELSE BEGIN         IF  token EQ   THEN return   E           IF  token EQ  _  THEN return   I          return        ENDELSE      END        NAME:         TRANSLATE_SUB_SUPER   PURPOSE:         Translate TeX sub superscripts to IDL sub superscripts    CATEGORY:         text strings   CALLING SEQUENCE:         new   translate_sub_super  old     INPUTS:         old         string to be translated from TeX to IDL    in   KEYWORD PARAMETERS:          RECURSED   set if this function is being called                       recursively                             HELP       Set to print useful message and exit    OUTPUTS:         new         string old converted from TeX to IDL       out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           For best results  when both a sub and superscript are used            place the shorter of the two first  e g   N a _ bbbb  is           better than  N_ bbbb a            Single character sub super scripts do not need to be           protected by braces            Sub superscripts may be nested  e g   N N_1 N    EXAMPLE:         out   translate_sub_super   N 2_ big            Then out N U2 N Dbig N  which looks like it should on the         display     LIBRARY FUNCTIONS CALLED:         str_token        Text string  mcraig          sub_sup_idl   contained in this file   MODIFICATION HISTORY:          Id: translate_sub_super pro 47 2006 05 09 09:13:01Z pinsard            Log: translate_sub_super pro v           Revision 1 5  2000 06 14 19:09:22  mcraig         Changed name of strtok str_token to avoid conflict in IDL 5 3            Revision 1 4  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 3  1996 05 09 00:22:17  mcraig         Changed some function calls to reflect changes in those functions  moved         some code out of the main loop that didn t need to be there  added         documentation            Revision 1 2  1996 02 08 18:54:20  mcraig         Changed default sub superscript size to be  D U rather than  I E to         improve readability of plat annotations            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Translate_sub_super  InputString                                  RECURSED recursed                                  HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Offer help if needed and or desired     IF  n_params  NE 1  OR keyword_set help  THEN BEGIN         offset                 print  offset Translate TeX sub superscripts to IDL sub superscripts          print  offset new   translate_sub_super  old           print  offset Inputs:          print  offset offset old         string to be translated from TeX to IDL    in          print  offset Keywords:          print  offset offset RECURSED   set if this function is being called           print  offset offset              recursively                             print  offset offset HELP       Set to print useful message and exit          print  offset Outputs:          print  offset offset new         string old converted from TeX to IDL       out          print  offset Notes:          print  offset offset  For best results  when both a sub and superscript are used          print  offset offset   place the shorter of the two first  e g   N a _ bbbb  is          print  offset offset   better than  N_ bbbb a          print  offset offset  Single character sub super scripts do not need to be          print  offset offset   protected by braces          print  offset offset  Sub superscripts may be nested  e g   N N_1 N          return   1     ENDIF      To allow for nested scripts  use  E I instead of  U D for scripts    when called recursively      IF  NOT keyword_set recursed  THEN         ud   1       ELSE         ud   0     Return to the normal level after making sub superscript unless we    are recursed  which indicates we are processing a nested script      IF keyword_set recursed  THEN fontRestore     ELSE fontRestore    N      Initialize vars for processing scripts      SpcByte    byte   0      We need the BYTE value for a space below      strn   InputString     pos   0     StorePos         RecallPos         OldToken          LenLastScript   0    Grab next sub superscript   Token will be either   or  _    RETURN if no scripts      Token   nexttok strn    _  pos   pos      if pos EQ  1 then return  InputString  nothing to process       FntChange    sub_sup_idl Token     Our approach will be to grab the input string up to the next   or    _  then process the script we ve found      NewString str_token strn Token       WHILE  strlen strn  GT  0 DO  BEGIN    Grab first char of sub superscript          Script   strmid strn  0  1          EndOfScript   0          Position of end of this script          IF  Script EQ   THEN BEGIN     Scripts of more than 1 char              EndOfScript   matchdelim strn                    Script   translate_sub_super strmid strn  1  EndOfScript 1                                              recursed           ENDIF        Grab rest of string _after_ the end of the script                  strn   strmid strn  EndOfScript 1                          strlen strn EndOfScript 1         Find the next script and prepare for processing it          FntChange   sub_sup_idl Token  FORCE_UD   ud          OldToken   Token         Token   nexttok strn   _  POS   pos         If the input is  n 2_j  we want the  2  to be directly above       the  j  rather than having the  j  below and to the right of       the 2   In other words  we want the first below  not the second                 2               2               N               N                J                J       To accomplish this  we need to save the position at which we       begin writing the 2 with a  S  and restore that position with a        R after writing the 2   The first section in the IF block below       handles the  J  above  the thing after the first script   We       don t care if there is another script following   We also padd       the second script with spaces if it is shorter than the first to       make sure that whatever comes out after the scripts starts in       the proper place   The worry is that without the spaces  the       input  N looong _ s    1  will end up with the   starting right       the  s  ends          IF  StorePos EQ  S  THEN BEGIN             StorePos                 RecallPos           calculate the difference in length between this script and the        previous stacked one  removing font change commands  crudely by       guessing that the number of characters this takes is twice the       number of exclamation points   The    1 below is a kludge   I       don t know why  but I need one extra space              NumSpaces   LenLastScript    strlen script    2 strcnt Script              NumSpaces    NumSpaces   1    0             IF NumSpaces GT 0 THEN                 Script   Script   string  replicate SpcByte  NumSpaces            ENDIF ELSE BEGIN             IF  Token NE OldToken  AND  pos EQ 0  THEN BEGIN               The next script immediately folows this one   Arrange to               save the position of the current script so that both begin               with the same horizontal position                  StorePos    S                  RecallPos    R                  LenLastScript   strlen Script    2 strcnt Script              ENDIF         ENDELSE       Continue building the IDL string  adding on our just processed script          NewString   NewString   StorePos   FntChange   Script   RecallPos               FontRestore          IF   pos NE  1   THEN BEGIN       more left to process                  NewString   NewString                   str_token strn  Token             ENDIF ELSE BEGIN                  we are done             NewString   NewString   strn             strn             ENDELSE     ENDWHILE           return  NewString END    "); 
     147a[145] = new Array("./Textoidl/textable.html", "textable.pro", "", "      NAME:         TEXTABLE   PURPOSE:         Returns a translation table from TeX to IDL    CATEGORY:         text strings   CALLING SEQUENCE:         table   textable    INPUTS:         None   KEYWORD PARAMETERS:          POSTSCRIPT   If set  return postscript translation                        table rather than vector fonts table                         Default is translations for vector                        fonts           HELP         Print help and exit    OUTPUTS:         table   a 2D text array   table 0  contains          out                  the words to be translated away  table 1                   contains the words to translate them to       COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         To find out what TeX sequences are available  look at         table 0    EXAMPLE:   MODIFICATION HISTORY:          Id: textable pro 114 2006 06 19 14:14:56Z smasson            Log: textable pro v           Revision 1 8  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 7  1996 07 22 23:56:08  mcraig         Added  vartheta            Revision 1 6  1996 07 12 21:31:42  mcraig         Fixed  varphi in vector font  added  circ            Revision 1 5  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 4  1996 05 09 00:22:17  mcraig         Added command to return to previous font after switching to Greek or         symbol font            Revision 1 3  1996 02 08 19:49:35  mcraig         Removed control sequence  perp because the postscript code for it is             Revision 1 2  1996 02 08 18:53:38  mcraig         Added translations for PostScript fonts  and added several new TeX         control sequences            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION textable  POSTSCRIPT ps  VECTOR vec   HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Print help if necessary      IF keyword_set Help   THEN BEGIN         offset                 print  offset Returns a translation table from TeX to IDL          print  offset table   textable          print  offset Keywords:          print  offset offset POSTSCRIPT   If set  return postscript translation          print  offset offset                table rather than vector fonts table          print  offset offset                Default is translations for vector          print  offset offset                fonts          print  offset offset HELP         Print help and exit          print  offset Outputs:          print  offset offset table   a 2D text array   table 0  contains          out          print  offset offset          the words to be translated away  table 1          print  offset offset          contains the words to translate them to          print  offset Notes:          print  offset offset To find out what TeX sequences are available  look at          print  offset offset table 0      ENDIF       VECFONT 1                     index of vector font in translation table     PSFONT 2  index of postscript font in trans table     IF keyword_set ps  THEN FontSelection PSFONT ELSE FontSelection VECFONT     Set IDL font sequence needed to switch to Greek letters      GreekFont   strarr 3      GreekFont VECFONT     7      GreekFont PSFONT     M      Set IDL font sequence needed to switch to special symbol font      SymbolFont   strarr 3      SymbolFont VECFONT     M      SymbolFont PSFONT     M      Set IDL font sequence needed to switch back to initial font      PreviousFont   strarr 3      PreviousFont VECFONT     X      PreviousFont PSFONT     X    lowercase Greek         Note there is some trickery involved in getting  varphi      to work in the vector fonts  because it is actually      a member of the symbol font set  not the Greek font      set   Go figure   Solution is just to make the vector      character a switch to symbol  the proper character from      that font  and a switch back out of symbol   Same comment holds      for  vartheta           TeX SEQUENCE       VECTOR       POSTSCRIPT     LowercaseGreek        alpha       a             a           beta        b             b           gamma       c             g           delta       d             d           epsilon     e             e           zeta        f             z           eta   g       h           theta   h       q           iota   i       i           kappa   j       k           lambda   k       l           mu   l       m           nu   m       n           xi   n    S  Rx         pi   p       p           rho   q       r           sigma   r       s           tau   s       t           upsilon   t       u           phi   u       f           chi   v       c           psi   w       y           omega   x       w           varpi   p       v           varepsilon   e             e           varphi                SymbolFont VECFONT P PreviousFont VECFONT                                                   j           vartheta                SymbolFont VECFONT t PreviousFont VECFONT                                                   J                                 Uppercase Greek             TeX SEQUENCE        VECTOR          POSTSCRIPT     UppercaseGreek        Gamma   C              G               Delta   D              D               Theta   H              Q               Lambda   K              L               Xi   N            S  RX             Pi   P              P               Sigma   R              S               Upsilon   T       string byte 161        Phi   U              F               Psi   W              Y               Omega   X              W                   Special symbols       NOTES   You must leave  infty before  in in the translatation             table to avoid having the  in part of  infty translated             away                            DO NOT blindly add the control sequence  perp   Its             PostScript code is   which leads to thing being             interpreted as superscripts which shouldn t be             TeX SEQUENCE        VECTOR          POSTSCRIPT     Symbols        aleph        string byte 192        ast                              cap   3      string byte 199        cdot        string byte 215        cup   1      string byte 200        exists   E                            infty        string byte 165        in   e      string byte 206        equiv   :      string byte 186        pm        string byte 177        div        string byte 184        subset   0      string byte 204        superset   2      string byte 201        leftarrow   4      string byte 172        downarrow   5      string byte 175        rightarrow   6      string byte 174        uparrow   7      string byte 173        neq        string byte 185        propto        string byte 181        sim   A      string byte 126        partial   D      string byte 182        nabla   G      string byte 209        angle   a      string byte 208        times   X      string byte 180        geq   b      string byte 179        leq   l      string byte 163               string byte 162        prime        string byte 162        circ        string byte 176                              LowercaseGreek 1            GreekFont FontSelection            LowercaseGreek FontSelection            PreviousFont FontSelection      UppercaseGreek 1            GreekFont FontSelection          UppercaseGreek FontSelection            PreviousFont FontSelection      Symbols 1            SymbolFont FontSelection            Symbols FontSelection            PreviousFont FontSelection       TranslationTable    LowercaseGreek UppercaseGreek Symbols      return TranslationTable 0:1   END  "); 
     148a[146] = new Array("./Textoidl/textoidl.html", "textoidl.pro", "", "      NAME:         TEXTOIDL   PURPOSE:         Convert a valid TeX string to a valid IDL string for plot labels    CATEGORY:         text strings   CALLING SEQUENCE:         new   textoidl old    INPUTS:         old              TeX string to be converted   Will not be     in                           modified   old may be a string array    KEYWORD PARAMETERS:         FONT             Set to 0 to use hardware font   1 to use                            vector   Note that the only hardware font                            supported is PostScript           TEX_SEQUENCES   return the available TeX sequences          HELP            print out info on use of the function                           and exit    OUTPUTS:         new              IDL string corresponding to old              out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           Use the procedure SHOWTEX to get a list of the available TeX           control sequences              The only hardware font for which translation is available is           PostScript             The only device for which hardware font            translation is available is PostScript            The FONT keyword overrides the font selected            by  p font    EXAMPLE:         out   TeXtoIDL Gamma 2   5N_ ed          The string out may be used in XYOUTS or other IDL text         display routines   It will be an uppercase Gamma  with an         exponent of 2  then a plus sign  then an N with the subscript         ed    MODIFICATION HISTORY:          Id: textoidl pro 114 2006 06 19 14:14:56Z smasson            Log: textoidl pro v           Revision 1 7  2004 06 15 17:25:54  mcraig         Fixed bug in regular expression  changed array notation to square brackets           Revision 1 6  2004 01 11 01:49:00  mcraig         Changed format of one array to newer   style to avoidf conflict with function name in astro library            Revision 1 5  2001 11 23 21:10:55  mcraig         Added backslash   to tex sequences in translation table to protect them during regexp search in strsplit            Revision 1 4  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 3  1996 05 09 00:22:17  mcraig         Added error handling  cleaned up documentation            Revision 1 2  1996 02 08 18:52:50  mcraig         Added ability to use hardware fonts for PostScript device            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION Textoidl  InputString                       FONT fnt                       HELP hlp                       TEX_SEQUENCES tex_seq     compile_opt idl2  strictarrsubs       Return to caller if there is an error      On_error  2    We begin by deciding on the font   PostScript   0 means use vector      PostScript   0     IF n_elements fnt  EQ 0 THEN BEGIN       get font from  p font         IF  p font NE  1 THEN BEGIN          User wants hardware font              PostScript 1         ENDIF     ENDIF ELSE BEGIN                         get font from FONT keyword         IF fnt NE  1 THEN PostScript   1     ENDELSE     Bomb out if user wants non PostScript hardware font      IF  PostScript EQ 1  AND  d name NE  PS  THEN BEGIN                                                    Device isn t postscript                                                  and user wants hardware                                                 font   Not good          print Warning: No translation for device:  d name         return InputString                    ENDIF           IF keyword_set  tex_seq  THEN BEGIN         table textable          return table 0      ENDIF       IF keyword_set hlp  OR  n_params  EQ 0  THEN BEGIN         print      Convert a TeX string to an IDL string          print      new   TeXtoIDL old          print        old   TeX string to translate                  in          print        new   resulting IDL string                     out          print      Keywords:          print         FONT       set to  1 to translate for vector fonts           print                     DEFAULT     Set to 0 to translate for          print                    hardware font          print          TEX_SEQUENCES   return the available TeX sequences          print          HELP      print this message and exit          print      NOTES:            print           Use SHOWTEX to obtain a list of the available          print           TeX control sequences          print           old may be a string array   If so  new is too          print           The only device for which hardware font          print           translation is available is PostScript          print           The FONT keyword overrides the font selected          print           by  p font          return   1     ENDIF        PostScript has been set to 1 if PostScript fonts are desired      strn   InputString     table   textable POSTSCRIPT PostScript           Greek sub superscripts need to be protected by putting braces     around them if they are unbraced   This will have the result the     it will be difficult to use   as a sub superscript   Get over it       V2 11 Must include the   in from of translation table TeX     sequences to ensure that strsplit properly treats the   in the     TeX sequence  Since strsplit is doing a regexp replace  and   is     special in regexps  need to escape it      strn    strtrans strn   table 0     table 0        strn    strtrans strn   _ table 0     _ table 0        First we translate Greek letters and the like   This makes guessing    alignment of sub superscripts easier  as all special characters will then    be one character long       V2 11 Must include the   in from of translation table TeX     sequences to ensure that strsplit properly treats the   in the     TeX sequence  Since strsplit is doing a regexp replace  and   is     special in regexps  need to escape it      strn   strtrans strn   table 0    table 1          FOR i   0L  n_elements strn 1 DO BEGIN          strn i    translate_sub_super strn i    Take care of sub superscripts     ENDFOR       return strn END "); 
     149a[147] = new Array("./Textoidl/translate_sub_super.html", "translate_sub_super.pro", "", "   NOTE to future maintainers:     Make sure sub_sup_idl stays before translate_sub_super   At least     for now  when IDL encounters a function and automatically compiles     it  it only compiles the functions in the file up to the named     function   So even if sub_sup_idl was declared with     FORWARD_FUNCTION in translate_sub_super  it would not properly     compile         SPECIAL NOTE:          The file translate_sub_super pro contains two functions          translate_sub_super  and sub_sup_idl   The former is the         generic routine for processing TeX sub superscripts  the         latter is used only by translate_sub_super and has no general         utility   Hence it lives here   You will see documentation for         translate_sub_super second if you use DOC_LIBRARY            NAME:         SUB_SUP_IDL   PURPOSE:         Return the proper IDL font positioning command for TeX         sub superscripts     CATEGORY:         TeXtoIDL   CALLING SEQUENCE:         fnt   sub_sup_idl  strn     INPUTS:         strn        Either   or  _  the TeX super subscript       in                      characters   KEYWORD PARAMETERS:          FORCE_UD   Set this to use  U D instead of  E I for                      sub superscripts            HELP       Set to print useful message and exit    OUTPUTS:         fnt         Either  U  or  E  for superscripts              out                      or  D  or  I  for subscripts    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         Used only by translate_sub_super   Should be kept in same         file     EXAMPLE:   MODIFICATION HISTORY:          Id: translate_sub_super pro 114 2006 06 19 14:14:56Z smasson            Log: translate_sub_super pro v           Revision 1 5  2000 06 14 19:09:22  mcraig         Changed name of strtok str_token to avoid conflict in IDL 5 3            Revision 1 4  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 3  1996 05 09 00:22:17  mcraig         Changed some function calls to reflect changes in those functions  moved         some code out of the main loop that didn t need to be there  added         documentation            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2     COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Sub_sup_idl  token   FORCE_UD   force_ud     compile_opt idl2  strictarrsubs      provide help if needed      IF  n_params  NE 1  OR keyword_set Help  THEN BEGIN         offset                 print  offset Return the proper IDL font positioning command for TeX          print  offset sub superscripts            print  offset fnt   sub_sup_idl  strn           print  offset Inputs:          print  offset offset strn        Either   or  _  the TeX super subscript       in          print  offset offset              characters          print  offset Keywords:          print  offset offset FORCE_UD   Set this to use  U D instead of  E I for          print  offset offset              sub superscripts           print  offset offset HELP       Set to print useful message and exit          print  offset Outputs:          print  offset offset fnt         Either  U  or  E  for superscripts              out          print  offset offset              or  D  or  I  for subscripts          return   1     ENDIF       IF keyword_set force_ud  THEN BEGIN          IF  token EQ   THEN return   U           IF  token EQ  _  THEN return   D          return        ENDIF ELSE BEGIN         IF  token EQ   THEN return   E           IF  token EQ  _  THEN return   I          return        ENDELSE      END        NAME:         TRANSLATE_SUB_SUPER   PURPOSE:         Translate TeX sub superscripts to IDL sub superscripts    CATEGORY:         text strings   CALLING SEQUENCE:         new   translate_sub_super  old     INPUTS:         old         string to be translated from TeX to IDL    in   KEYWORD PARAMETERS:          RECURSED   set if this function is being called                       recursively                             HELP       Set to print useful message and exit    OUTPUTS:         new         string old converted from TeX to IDL       out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           For best results  when both a sub and superscript are used            place the shorter of the two first  e g   N a _ bbbb  is           better than  N_ bbbb a            Single character sub super scripts do not need to be           protected by braces            Sub superscripts may be nested  e g   N N_1 N    EXAMPLE:         out   translate_sub_super   N 2_ big            Then out N U2 N Dbig N  which looks like it should on the         display     LIBRARY FUNCTIONS CALLED:         str_token        Text string  mcraig          sub_sup_idl   contained in this file   MODIFICATION HISTORY:          Id: translate_sub_super pro 114 2006 06 19 14:14:56Z smasson            Log: translate_sub_super pro v           Revision 1 5  2000 06 14 19:09:22  mcraig         Changed name of strtok str_token to avoid conflict in IDL 5 3            Revision 1 4  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 3  1996 05 09 00:22:17  mcraig         Changed some function calls to reflect changes in those functions  moved         some code out of the main loop that didn t need to be there  added         documentation            Revision 1 2  1996 02 08 18:54:20  mcraig         Changed default sub superscript size to be  D U rather than  I E to         improve readability of plat annotations            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_2_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Translate_sub_super  InputString                                  RECURSED recursed                                  HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Offer help if needed and or desired     IF  n_params  NE 1  OR keyword_set help  THEN BEGIN         offset                 print  offset Translate TeX sub superscripts to IDL sub superscripts          print  offset new   translate_sub_super  old           print  offset Inputs:          print  offset offset old         string to be translated from TeX to IDL    in          print  offset Keywords:          print  offset offset RECURSED   set if this function is being called           print  offset offset              recursively                             print  offset offset HELP       Set to print useful message and exit          print  offset Outputs:          print  offset offset new         string old converted from TeX to IDL       out          print  offset Notes:          print  offset offset  For best results  when both a sub and superscript are used          print  offset offset   place the shorter of the two first  e g   N a _ bbbb  is          print  offset offset   better than  N_ bbbb a          print  offset offset  Single character sub super scripts do not need to be          print  offset offset   protected by braces          print  offset offset  Sub superscripts may be nested  e g   N N_1 N          return   1     ENDIF      To allow for nested scripts  use  E I instead of  U D for scripts    when called recursively      IF  NOT keyword_set recursed  THEN         ud   1       ELSE         ud   0     Return to the normal level after making sub superscript unless we    are recursed  which indicates we are processing a nested script      IF keyword_set recursed  THEN fontRestore     ELSE fontRestore    N      Initialize vars for processing scripts      SpcByte    byte   0      We need the BYTE value for a space below      strn   InputString     pos   0     StorePos         RecallPos         OldToken          LenLastScript   0    Grab next sub superscript   Token will be either   or  _    RETURN if no scripts      Token   nexttok strn    _  pos   pos      if pos EQ  1 then return  InputString  nothing to process       FntChange    sub_sup_idl Token     Our approach will be to grab the input string up to the next   or    _  then process the script we ve found      NewString str_token strn Token       WHILE  strlen strn  GT  0 DO  BEGIN    Grab first char of sub superscript          Script   strmid strn  0  1          EndOfScript   0          Position of end of this script          IF  Script EQ   THEN BEGIN     Scripts of more than 1 char              EndOfScript   matchdelim strn                    Script   translate_sub_super strmid strn  1  EndOfScript 1                                              recursed           ENDIF        Grab rest of string _after_ the end of the script                  strn   strmid strn  EndOfScript 1                          strlen strn EndOfScript 1         Find the next script and prepare for processing it          FntChange   sub_sup_idl Token  FORCE_UD   ud          OldToken   Token         Token   nexttok strn   _  POS   pos         If the input is  n 2_j  we want the  2  to be directly above       the  j  rather than having the  j  below and to the right of       the 2   In other words  we want the first below  not the second                 2               2               N               N                J                J       To accomplish this  we need to save the position at which we       begin writing the 2 with a  S  and restore that position with a        R after writing the 2   The first section in the IF block below       handles the  J  above  the thing after the first script   We       don t care if there is another script following   We also padd       the second script with spaces if it is shorter than the first to       make sure that whatever comes out after the scripts starts in       the proper place   The worry is that without the spaces  the       input  N looong _ s    1  will end up with the   starting right       the  s  ends          IF  StorePos EQ  S  THEN BEGIN             StorePos                 RecallPos           calculate the difference in length between this script and the        previous stacked one  removing font change commands  crudely by       guessing that the number of characters this takes is twice the       number of exclamation points   The    1 below is a kludge   I       don t know why  but I need one extra space              NumSpaces   LenLastScript    strlen script    2 strcnt Script              NumSpaces    NumSpaces   1    0             IF NumSpaces GT 0 THEN                 Script   Script   string  replicate SpcByte  NumSpaces            ENDIF ELSE BEGIN             IF  Token NE OldToken  AND  pos EQ 0  THEN BEGIN               The next script immediately folows this one   Arrange to               save the position of the current script so that both begin               with the same horizontal position                  StorePos    S                  RecallPos    R                  LenLastScript   strlen Script    2 strcnt Script              ENDIF         ENDELSE       Continue building the IDL string  adding on our just processed script          NewString   NewString   StorePos   FntChange   Script   RecallPos               FontRestore          IF   pos NE  1   THEN BEGIN       more left to process                  NewString   NewString                   str_token strn  Token             ENDIF ELSE BEGIN                  we are done             NewString   NewString   strn             strn             ENDELSE     ENDWHILE           return  NewString END    "); 
    150150a[148] = new Array("./ToBeReviewed/CALCULS/curl.html", "curl.pro", "", "          NAME:curl     PURPOSE:calcule la composante verticale du rotationnel d un champ   de vecteur horizontaux     CATEGORY:calcule sur les matrices     CALLING SEQUENCE:res curl u v      INPUTS:         u et v deux matrices representant les coordonnes d un         champ de vecteur     KEYWORD PARAMETERS:     OUTPUTS:res: une matrice 2d     COMMON BLOCKS:  common pro     SIDE EFFECTS:     RESTRICTIONS:   les matrices u et v peuvent de 2 a 4 dimensions    attention pour distinger les differents configurations de u et v    xy  xyz  xyt  xyzt  on regarde la variable du common            time qui contient le calendrier en jour julien d IDL auquel          se rapportent u et v ansi que la variable            jpt qui est le nombre de pas de temps a considerer ds time    les tableaux u et v sont decoupes sur le meme domaine   geographique  A cause du decalage des grilles T  U  V et F il est   possiible que ces 2 tableaux n aient pas la meme taille et se   repportent a des indices differents  Si tel est le cas les tableaux   sont redecoupes sur les indices qu ils ont en commun et le dommaine   est redefinit pour qu il colle a ces indices communs    pour eviter ces redecoupes utiliser le mot cles  memeindice ds   domdef pro       les points sur le bord du dessin sont mis a  values f_nan      EXAMPLE:     MODIFICATION HISTORY:Guillaume Roullet  grlod ipsl jussieu fr                            Sebastien Masson  smasson lodyc jussieu fr                         adaptation pour marcher avec un domaine reduit                          21 5 1999: valeurs manquantes a  values f_nan  periodicite          FUNCTION curl  uu  vv     compile_opt idl2  strictarrsubs    common    tempsun   systime 1            pour key_performance      IF finite glamu 0 finite gphiu 0 finite glamv 0 finite gphiv 0  EQ 0 THEN        return  report This version of curl is based on Arakawa C grid                            U and V grids must therefore be defined       u   litchamp uu     v   litchamp vv      date1   time 0     if n_elements jpt  EQ 0 then date2   date1 ELSE date2   time jpt 1     if  size u 0  NE  size v 0  then return    1      on trouve les points que u et v ont en communs      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     case 1 of      xyz          size u 0  EQ 3 AND date1 EQ date2 :BEGIN           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 3 OR  size v 0  NE 3: return    1              size u 1  EQ nxu AND  size u 2  EQ nyu AND                 size v 1  EQ nxv AND  size v 2  EQ nyv:BEGIN              case 1 of                nxu NE nx:if indicex 0  EQ firstxu then u   u 0:nx 1      ELSE u   u 1: nx                     nxv NE nx:if indicex 0  EQ firstxv then v   v 0:nx 1      ELSE v   v 1: nx                     nyu NE ny:if indicey 0  EQ firstyu then u   u  0:ny 1    ELSE u   u  1: ny                   nyv NE ny:if indicey 0  EQ firstyv then v   v  0:ny 1    ELSE v   v  1: ny                   ELSE :             endcase             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 indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1                   v   v indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1                END             ELSE:return    1          endcase     calcul du rotationnel            coefu    e1u indice2d replicate 1  nzt           coefu   reform coefu  nx  ny  nzt   over           coefu   coefu umask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           terreu   where coefu EQ 0           if terreu 0  NE  1 then coefu temporary terreu     values f_nan                    coefv    e2v indice2d replicate 1  nzt           coefv   reform coefv  nx  ny  nzt   over           coefv   coefv vmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           terrev   where coefv EQ 0           if terrev 0  NE  1 then coefv temporary terrev     values f_nan           tabf    fmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           div    e1f indice2d e2f indice2d replicate 1  nzt           div   reform div  nx  ny  nzt   over           tabf   tabf div            zu   u temporary coefu           zv   v temporary coefv            psi     shift zv   1  0  0 zv     zu shift zu  0   1  0           psi   tabf psi     mise a  values f_nan de la bordure            if NOT keyword_set key_periodic   OR nx NE jpi then begin             psi 0         values f_nan             psi nx 1         values f_nan          endif          psi  0       values f_nan          psi  ny 1       values f_nan            if n_elements valmask  EQ 0 THEN valmask   1e20          terref    where tabf EQ 0           if terref 0  NE  1 then psi temporary terref    valmask     pour le trace graphique            domdef   glagmt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t   f           if keyword_set direc  then psi   moyenne psi direc nan           END      xyt           date1 NE date2 AND  size u 0  EQ 3 :BEGIN           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 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 indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1                   v   v indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1                END             ELSE:BEGIN                 print   problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs                 return   1             end          endcase     calcul du rotationnel            coefu   e1u indice2d umask indice2d jpi jpj firstzt           terreu   where coefu EQ 0           if terreu 0  NE  1 then coefu temporary terreu     values f_nan          coefu   temporary coefu replicate 1  jpt           coefu   reform coefu  nx  ny  jpt   over             coefv   e2v indice2d vmask indice2d jpi jpj firstzt           terrev   where coefv EQ 0           if terrev 0  NE  1 then coefv temporary terrev     values f_nan          coefv   temporary coefv replicate 1  jpt           coefv   reform coefv  nx  ny  jpt   over             tabf    fmask indice2d jpi jpj firstzt e1f indice2d e2f indice2d           tabf   temporary tabf replicate 1  jpt           tabf   reform tabf  nx  ny  jpt   over      calcul du rotationnel            zu   u temporary coefu           zv   v temporary coefv             psi     shift zv   1  0  0 zv     zu shift zu  0   1  0           psi   tabf psi     mise a  values f_nan de la bordure            if NOT keyword_set key_periodic  OR nx NE jpi then begin             psi 0         values f_nan             psi nx 1         values f_nan          endif          psi  0       values f_nan          psi  ny 1       values f_nan          if n_elements valmask  EQ 0 THEN valmask   1e20          terref    where tabf EQ 0           if terref 0  NE  1 then psi temporary terref    valmask            domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t   f           if keyword_set direc  then psi   grossemoyenne psi direc nan          END      xyzt           date1 NE date2 AND  size u 0  EQ 4:BEGIN           return  report non code        END      xy           ELSE:BEGIN                 xy          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    1              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:return    1          endcase     calcul du rotationnel            coefu   e1u indice2d umask indice2d jpi jpj firstzt           terreu   where coefu EQ 0           if terreu 0  NE  1 then coefu temporary terreu     values f_nan          coefv   e2v indice2d vmask indice2d jpi jpj firstzt           terrev   where coefv EQ 0           if terrev 0  NE  1 then coefv temporary terrev     values f_nan          tabf    fmask indice2d jpi jpj firstzt e1f indice2d e2f indice2d             zu   u temporary coefu           zv   v temporary coefv            psi     shift zv   1  0 zv     zu shift zu  0   1           psi   tabf psi      mise a  values f_nan de la bordure            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             psi 0       values f_nan             psi nx 1       values f_nan          endif          psi  0     values f_nan          psi  ny 1     values f_nan            if n_elements valmask  EQ 0 THEN valmask   1e20          terref    where tabf EQ 0           if terref 0  NE  1 then psi temporary terref    valmask     pour le trace graphique            domdef   glamt indice2d 0  0   glamf indice2d nx 1  0 gphit indice2d 0  0   gphif indice2d 0  ny 1  vert1  vert2  gridtype    t   f           if keyword_set direc  then psi   moyenne psi direc nan         END      endcase      if keyword_set key_performance  THEN print   temps curl  systime 1 tempsun       vargrid    F     varname    vorticity     return  psi end"); 
    151151a[149] = new Array("./ToBeReviewed/CALCULS/depth2floatlevel.html", "depth2floatlevel.pro", "", "          NAME:depth2floatlevel     PURPOSE: assez comparable a depth2level mais ici le niveau calcule   est en float  Par ex le niveau 5 4 correspond a une profondeur egale   a gdep 5 4 gdep 6 gdep 5      CATEGORY: SANS BOUCLE     CALLING SEQUENCE:res depth2floatlevel depth2d       INPUTS: depth2d tableau 2d de profondeur  ou une structure repondant   aux criteres de litchamp      KEYWORD PARAMETERS:           NOMASK: pour ne pas masquer les points terres     OUTPUTS: un tableau 2d de float contenant les valeurs des niveaux      COMMON BLOCKS:common pro     SIDE EFFECTS:accepte les vcaleurs a  values f_nan et masque les   points terres a valmask      RESTRICTIONS:     EXAMPLE:        IDL  a jpk 1 1 jpi jpj findgen jpi jpj       IDL  plt  1e6 a floatlevel2depth depth2floatlevel a nocontour       champ nul a 1e 6 pres     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         15 06 2000         FUNCTION depth2floatlevel  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            pour key_performance  common      depthin   litchamp tab       levelup   depth2level depthin   UPPER   nomask     depthup   level2depth levelup   nomask       levellow   depth2level depthin   lower   nomask     depthlow   level2depth levellow   nomask    calcule de la distance depthlow depthup et gestion du cas ou cette   distance est nulle ou egale a  values f_nan    divi   depthlow depthup    nan   where finite divi  EQ 0     if nan 0  NE  1 then divi nan    0    nan   where divi EQ 0     if nan 0  NE  1 then divi nan     values f_nan   calcule du resultat    res   levelup depthin depthup divi   on masque les points terre a valmask    if NOT keyword_set nomask  then begin       grille mask       if n_elements valmask  EQ 0 then valmask   1e20       terre   where temporary mask    0  EQ 0        if terre 0  NE  1 then res terre    valmask    endif      if keyword_set key_performance  THEN print   temps depth2floatlevel  systime 1 tempsun       return  res end"); 
     
    177177a[175] = new Array("./ToBeReviewed/COULEURS/newpalette.html", "newpalette.pro", "", "          NAME:newpalette     PURPOSE:permet de stocker la palette qui est a l ecran dans un   fichier du meme type que celui fournit par defaut dans IDL:    colors1 tbl      CATEGORY:pour garder ses jolies palettes perso      CALLING SEQUENCE:newpalette nom_de_palette     INPUTS:nom_de_palette: c est un string qui contient le nom de la   nouvelle palette que l on veut ecrire      KEYWORD PARAMETERS:      OVER: c est un entier qui designe le numero de la palette que l on   veut remplacer par la palette a l ecran         ceux de modifyct     rq: si le mot cle file n est pas specifie  on cherche un fichier   contenant les palettes du nom de palette tbl    Ce fichier peut etre dans n importe quel repertoire du  path   Par contre il doit etre en droit d ecriture     MODIFICATION HISTORY: Guillaume Roulet  gr lodyc jussieu fr                          30 3 1999 s masson  ajout de _extra  de le                         recherche du nom complet  de OVER et du blabla                         5 5 1999 s masson  va copie eventuelle du                         fichier contenant les palettes         pro newpalette nom  OVER   over  _extra   ex   le mot cle file est passe par l intermediere de EXTRA    definition du mon du fichier qui contient les palettes de couleur     compile_opt idl2  strictarrsubs      if n_elements ex  NE 0 then BEGIN        if  where tag_names ex  EQ  FILE 0  NE  1 then nompal ex FILE ELSE nompal palette tbl     ENDIF ELSE nompal    palette tbl     nomcourt   nompal   quelle est l adresse complete de nompal     nompal   find nompal     if nompal 0  NE  NOT FOUND  then begin       nompal   nompal 0    nompal nous appartient        spawn   whoami  login       appartient   strpos nompal  login 0        if appartient EQ  1 then begin          ouinon   report Le fichier  nompal  ne vous appartient pas  Voulez vous copier le fichier  nomcourt  dans le repertoire courant:  current     default_no   question           if ouinon then return ELSE BEGIN              spawn   cp  nompal   nomcourt   on copie             nompal   nomcourt             spawn    chmod u w  nompal   on se donne les droits d ecriture          ENDELSE       endif    ENDIF ELSE BEGIN               aucun fichier nompal a ete trouve       nompal   nomcourt           on recupe le nompal d origine       ouinon   report le fichier de palettes demande  nompal  n existe pas ds les repertoires  path  Voulez vous cree un fichier  nompal  dans le repertoire courant   default_no   question        if NOT ouinon then return       nomfichsource   filepath colors1 tbl  subdir resource   colors         spawn cp  nomfichsource   nompal   on copie       spawn    chmod u w  nompal   on se donne les droits d ecriture    ENDELSE      if n_elements ex  NE 0 then        if  where tag_names ex  EQ  FILE 0  NE  1 then ex FILE   nompal      tvlct r g b get    r congrid r 256     g congrid g 256     b congrid b 256     IF n_elements over  EQ 0 then over   255    modifyct over nom r g b file nompal  _extra   ex      return end"); 
    178178a[176] = new Array("./ToBeReviewed/COULEURS/palit.html", "palit.pro", "", "     Eclaircit la palette courante en jouant sur la luminosite              coef   regle l attenuation des couleurs            par defaut divise par 2 la luminosite      coef   0 1 pour la QMS papier de l IPSL convient tres bien   PRO palit  coef  red  green  blue     compile_opt idl2  strictarrsubs      IF n_elements coef  EQ 0 THEN coef   0 5    IF n_elements red  EQ 0 THEN tvlct  red  green  blue   get    color_convert  red  green  blue  h  l  s   rgb_hls    l   1 coef 1 l       Le noir doit rester bien noir      toutes mes palettes commencent par du noir et finissent par du blanc      l 0    0     tvlct  h  l  s   hls    return END"); 
    179 a[177] = new Array("./ToBeReviewed/COULEURS/xlct.html", "xlct.pro", "", "   Id: xlct pro 19 2006 05 02 09:40:19Z pinsard       Copyright  c  1991 1998  Research Systems  Inc   All rights reserved          Unauthorized reproduction prohibited   PRO XLCT_PSAVE Save Restore our plotting state     Swaps our state with the current state each time its called      compile_opt idl2  strictarrsubs    COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  updt_cb_data  tmp     xlct_psave  win:  d window  x:  x s  y:  y s   xtype:  x type                             ytype:  y type  clip:  p clip    wset  psave win  x type   psave xtype  y type   psave ytype  x s   psave x  y s   psave y  p clip   psave clip psave   tmp end  pro xlct_alert_caller     compile_opt idl2  strictarrsubs   COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  p_updt_cb_data      ErrorStatus   0     CATCH  ErrorStatus     if  ErrorStatus NE 0  then begin         CATCH   CANCEL         v   DIALOG_MESSAGE Unexpected error in XLCT:                             ERR_STRING        ERR_STRING                             ERROR          return     endif     if  STRLEN updt_callback  gt 0  then begin         if  PTR_VALID p_updt_cb_data  then begin             CALL_PROCEDURE  updt_callback  DATA p_updt_cb_data          endif else begin             CALL_PROCEDURE  updt_callback         endelse     endif end     Redraw the ramp image  PRO xlct_show     compile_opt idl2  strictarrsubs   COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  p_updt_cb_data      cur_win    D WINDOW     WSET  show_win     TV  BYTE FLOAT ncolors FINDGEN siz FLOAT siz 1              REPLICATE 1  w_height    BYTE cbot       WSET  cur_win        Let the caller of XLCT know that the color table was modified     xlct_alert_caller END  PRO xlct_draw_cps  i  c     compile_opt idl2  strictarrsubs   COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  tc   color if n_elements c  gt 0 then begin  tc   c  if c ne 0 then color   c  endif  if i 0  eq  1 then j   indgen n_elements cps  else j   i  plots  cps j  tfun j   noclip  color   tc plots  cps j  tfun j   noclip  psym 6  color   tc end  PRO xlct_transfer  UPDATE update     compile_opt idl2  strictarrsubs   COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  l   lonarr ncolors Subscripts m   n_elements cps  for i 0  m 2 do begin  n   cps i 1 cps i Interval  b    tfun i 1 tfun i float n   l cps i    findgen n    b    tfun i    cbot   endfor l ncolors 1    tfun m 1 Last point if use_values then begin   r_curr cbot     r   l r_orig    g_curr cbot     g   l g_orig    b_curr cbot     b   l b_orig  endif else begin   r_curr cbot     r   r_orig l    g_curr cbot     g   g_orig l    b_curr cbot     b   b_orig l  endelse  tvlct  r g b  cbot if  keyword_set  update   then     xlct_show end  PRO xlct_event  event     compile_opt idl2  strictarrsubs   COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  p_updt_cb_data   IF event id eq state draw THEN BEGIN  PROCESS DRAWABLE EVENTS    if event press ne 0 then begin Pressed button   dmin   1 0e8 Find closest control pnt  xlct_psave Remove old  p   convert_coord event x  event y   TO_DATA   DEVICE   xlct_psave Restore old  x   fix p 0   y   fix p 1   for i 0  n_elements cps 1 do begin  d    p 0 cps i 2    p 1 tfun i 2    dist   2  if d lt dmin then begin  dmin   d  pnt   i  endif  endfor  return  endif  if event release ne 0 then begin Released button   pnt    1                 xlct_transfer   update  return  endif  if pnt lt 0 then return Don t care here    xlct_psave Remove old           For visuals with static colormaps  erase plot before drawing new         if  COLORMAP_APPLICABLE redrawRequired  GT 0  and                redrawRequired GT 0  then begin            ERASE  color 0         endif  p   convert_coord event x  event y   TO_DATA   DEVICE Coord of mouse  n   ncolors  1 Into range   m   n_elements cps 1  x   fix p 0    0   cps pnt 1    1   0  0  0  0 0     else s    findgen nc     s nc     int nc    0 0    gamma    nc  if chop ne 0 then begin      too_high   where s ge nc  n       if n gt 0 then s too_high    0L      endif  if use_values then begin      s   s  1     cps   cps keep     tfun   tfun keep     goto  interp_cps    ENDIF  ENDCASE      ADDCP : BEGIN  xlct_psave  xlct_draw_cps   1  0  igap   0 Find largest gap  for i 0  n_elements cps 2 do    if  cps i 1    cps i  gt  cps igap 1 cps igap  then    igap   i  cps     cps 0:igap   cps igap cps igap 1 2  cps igap 1:   tfun     tfun 0:igap   tfun igap tfun igap 1 2  tfun igap 1:        interp_cps:  xlct_draw_cps   1   Redraw new  xlct_transfer   update  xlct_psave Restore old points  if n_elements reset_all  then goto  reset_all  ENDCASE ENDCASE  END       NAME:         XLCT   PURPOSE:         comme xloadct mais plus cour a ecrire et appelle par defaut la         palette palette tbl qui peut etre situee dans n importe quel         repertoire de  path      CATEGORY:         Widgets   CALLING SEQUENCE:         XLCT   INPUTS:         None    KEYWORDS:  FILE: If this keyword is set  the file by the given name is used  instead of the file colors1 tbl in the IDL directory   This  allows multiple IDL users to have their own color table file          GROUP   The widget ID of the widget that calls Xlct   When                  this ID is specified  a death of the caller results in a                  death of Xlct  NCOLORS   number of colors to use   Use color indices from BOTTOM  to the smaller of  D TABLE_SIZE 1 and NCOLORS 1   Default    D TABLE_SIZE   all available colors   BOTTOM   first color index to use  Use color indices from BOTTOM to  BOTTOM NCOLORS 1   Default   0          SILENT   Normally  no informational message is printed when                 a color map is loaded  If this keyword is present and                 zero  this message is printed   USE_CURRENT: If set  use the current color tables  regardless of  the contents of the COMMON block COLORS          MODAL:  If set  then XLCT runs in  modal  mode  meaning that                 all other widgets are blocked until the user quits XLCT                  A group leader must be specified  via the GROUP keyword                  for the MODAL keyword to have any effect    The default                 is to not run in modal mode   BLOCK:  Set this keyword to have XMANAGER block when this  application is registered   By default the Xmanager                 keyword NO_BLOCK is set to 1 to provide access to the                 command line if active command  line processing is available                  Note that setting BLOCK for this application will cause  all widget applications to block  not only this  application   For more information see the NO_BLOCK keyword  to XMANAGER          UPDATECALLBACK: Set this keyword to a string containing the name of                 a user supplied procedure that will be called when the color                 table is updated by XLCT   The procedure may optionally                 accept a keyword called DATA  which will be automatically                 set to the value specified by the optional UPDATECBDATA                 keyword          UPDATECBDATA: Set this keyword to a value of any type  It will be                 passed via the DATA keyword to the user supplied procedure                 specified via the UPDATECALLBACK keyword  if any  If the                 UPDATECBDATA keyword is not set the value accepted by the                 DATA keyword to the procedure specified by UPDATECALLBACK                 will be undefined      OUTPUTS:         None    COMMON BLOCKS:         None    SIDE EFFECTS:         One of the predefined color maps may be loaded    RESTRICTIONS:         This routine uses the LOADCT user library procedure to         do the actual work    MODIFICATION HISTORY:         5 5 1999 copie de xloadct par Sebastien Masson  smlod ipsl jussieu fr     PRO XLct  SILENT silent_f  GROUP group  FILE file              USE_CURRENT use_current  NCOLORS   nc  BOTTOM bottom              MODAL modal  BLOCK block  UPDATECALLBACK updt_cb_name              UPDATECBDATA updt_cb_data     compile_opt idl2  strictarrsubs       COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr    COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt        top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider        gamma  color  use_values  ncolors  cbot  siz  w_height  show_win        updt_callback  p_updt_cb_data      IF XRegistered xlct  NE 0  THEN return     IF N_ELEMENTS block  EQ 0 THEN block 0    IF N_ELEMENTS updt_cb_name  EQ 0 THEN updt_callback       ELSE updt_callback updt_cb_name    IF N_ELEMENTS updt_cb_data  GT 0 THEN p_updt_cb_data PTR_NEW updt_cb_data       ELSE p_updt_cb_data PTR_NEW      values_button   lonarr 2      IF KEYWORD_SET SILENT_f  THEN silent   SILENT_F ELSE silent   1     changements effectues par S Masson      IF N_ELEMENTS file  GT 0 THEN filename   file ELSE BEGIN        filename   find palette tbl        filename   filename 0        if filename EQ  NOT FOUND  then filename filepath colors1 tbl subdir resource   colors     ENDELSE     file   filename      siz   256 Basic width of tool    names   0    LOADCT  GET_NAMES   names  FILE   file  Get table names    w_height   50                 Height of ramp    cur_win    D WINDOW    lock   0    chop   0    vbot   0    vtop   100    gamma   1 0    use_values 0     Bases:    0   slider base   stretch bottom  stretch top  gamma     1   transfer function drawable   buttons    2   color table list    3   options base   sliders  top  stretch      state     bases: lonarr 4  draw: 0L  name_list: 0L      DJC   Added modal keyword    Moved  group_leader  keyword from XMANAGER to WIDGET_BASE    Ignore modal keyword if a group leader is not supplied     if  N_ELEMENTS group  GT 0L  then       base   WIDGET_BASE TITLE Xlct   COLUMN  GROUP_LEADER group                           MODAL KEYWORD_SET modal       else       base   WIDGET_BASE TITLE Xlct   COLUMN      Setting the managed attribute indicates our intention to put this app   under the control of XMANAGER  and prevents our draw widgets from   becoming candidates for becoming the default window on WSET   1  XMANAGER   sets this  but doing it here prevents our own WSETs at startup from   having that problem     WIDGET_CONTROL   MANAGED  base      show   WIDGET_DRAW base  YSIZE w_height  XSIZE siz   FRAME  RETAIN   2     junk   WIDGET_BASE base   ROW     done   WIDGET_BUTTON junk  VALUE  Done   UVALUE    DONE     junk1   WIDGET_BUTTON junk  VALUE  Help   UVALUE    HELP      junk   CW_BGROUP base   ROW   EXCLUSIVE   NO_REL                         Tables   Options   Function                        UVALUE NEWBASE  SET_VALUE 0      junk   widget_base base     for i 0 1 do state bases i    WIDGET_BASE junk   COLUMN      sbase WIDGET_BASE state bases 0   COLUMN     bot   WIDGET_SLIDER sbase  TITLE    Stretch Bottom  MINIMUM   0                           MAXIMUM   100  VALUE   0   DRAG  UVALUE    BOTTOM  xsize siz     top   WIDGET_SLIDER sbase  TITLE    Stretch Top  MINIMUM   0                           MAXIMUM   100  VALUE   100   DRAG  UVALUE    TOP  xsize siz     g_lbl   WIDGET_LABEL sbase  VALUE   STRING 1 0     g_slider   WIDGET_slider sbase  TITLE    Gamma Correction                                MINIMUM   0  MAXIMUM   100  VALUE   50  UVALUE    GAMMA                                 SUPPRESS_VALUE   DRAG  xsize siz      junk   WIDGET_BASE sbase     for i 2 3 do state bases i    WIDGET_BASE junk   COLUMN     DEVICE  GET_SCREEN   junk    if junk 1  le 768 then junk   8 else junk   16    state name_list   WIDGET_LIST state bases 2  VALUE   names  ysize   junk     Drawable for transfer function     junk   WIDGET_BASE state bases 1   COLUMN   FRAME     junk1   WIDGET_BUTTON junk  VALUE    Reset Transfer Function                             UVALUE TFUNR     junk1   WIDGET_BUTTON junk  VALUE Add Control Point  UVALUE ADDCP     junk1   WIDGET_BUTTON junk  VALUE Remove Control Point  UVALUE REMCP      state draw   WIDGET_DRAW state bases 1  xsize   siz  ysize   siz                                 BUTTON_EVENTS   MOTION_EVENTS       opt_id   state bases 3     junk   CW_BGROUP opt_id   ROW  LABEL_LEFT Sliders:   EXCLUSIVE   NO_REL                         Independent   Gang  UVALUE GANG  SET_VALUE lock     junk   CW_BGROUP opt_id   ROW  LABEL_LEFT    Top:    EXCLUSIVE   NO_REL                         Clip   Chop  SET_VALUE chop  UVALUE CHOP     junk   CW_BGROUP opt_id   ROW  LABEL_LEFT Stretch:    EXCLUSIVE   NO_REL                         Indices   Intensity  UVALUE VALUES                        SET_VALUE use_values     junk   WIDGET_BUTTON opt_id  VALUE Reverse Table                            UVALUE REVERSE   NO_REL     junk   WIDGET_BUTTON opt_id  VALUE REPLACE Original Table                            UVALUE    OVERWRITE   NO_REL     junk   WIDGET_BUTTON opt_id  VALUE RESTORE Original Table                            UVALUE RESTORE   NO_REL      WIDGET_CONTROL  state bases 1  MAP 0  Tfun is not visible    WIDGET_CONTROL  state bases 3  MAP 0  options are not visible     WIDGET_CONTROL  base   REALIZE    WIDGET_CONTROL  state draw  GET_VALUE tmp     if n_elements bottom  gt 0 then cbot   bottom else cbot   0    ncolors    d table_size   cbot    if n_elements nc  gt 0 then ncolors   ncolors   nc    if ncolors le 0 then message Number of colors is 0 or negative      psave     xlct_psave  win:  d window  x:  x s  y:  y s   xtype:  x type                 ytype:  y type  clip:  p clip    Our initial state    wset  tmp Initial graph    xlct_psave                    Save original scaling   window    plot   0  ncolors 1   0  ncolors 1  xstyle 3  ystyle 3        xmargin    1 1  ymargin 1 1  ticklen    0 03   NODATA    xlct_psave                    Restore original scaling   window                                   If no common  use current colors    IF KEYWORD_SET use_current  or N_ELEMENTS r_orig  LE 0 THEN BEGIN       TVLCT  r_orig  g_orig  b_orig   GET       r_curr   r_orig       b_curr   b_orig       g_curr   g_orig    ENDIF     r0   r_curr                   Save original colors    g0   g_curr    b0   b_curr    color   ncolors   cbot  1    cps    0  ncolors 1     tfun   cps    pnt    1     WIDGET_CONTROL  show  GET_VALUE show_win    WSET  show_win    DJC   fixed color bar display bug    TVSCL  BYTSCL INDGEN siz    REPLICATE 1  w_height  top   ncolors 1     TV  BYTE FLOAT ncolors FINDGEN siz FLOAT siz 1                  REPLICATE 1  w_height    BYTE cbot      WSET  cur_win    DJC   moved GROUP_LEADER keyword to WIDGET_BASE     XManager   xlct  base  NO_BLOCK NOT FLOAT block        MODAL KEYWORD_SET modal   END"); 
    180 a[178] = new Array("./ToBeReviewed/COULEURS/xpal.html", "xpal.pro", "", "   Id: xpal pro 19 2006 05 02 09:40:19Z pinsard       Copyright  c  1992 1998  Research Systems  Inc   All rights reserved          Unauthorized reproduction prohibited      NAME:         XPAL     PURPOSE:         comme xpalette mais plus court a ecrire et possede en plus         une touche save qui  grace a la routine newpalette  permet de         sauver la routine que l on vient de faire  Rq qd on appuie         sur la touche predefined appelle xlct plutot que xloadct      CATEGORY:         Color tables  widgets      CALLING SEQUENCE:         XPAL     INPUTS:         No explicit inputs   The current color table is used as a starting         point      KEYWORD PARAMETERS:  BLOCK:  Set this keyword to have XMANAGER block when this  application is registered   By default the Xmanager                 keyword NO_BLOCK is set to 1 to provide access to the                 command line if active command  line processing is available                  Note that setting BLOCK for this application will cause  all widget applications to block  not only this  application   For more information see the NO_BLOCK keyword  to XMANAGER          UPDATECALLBACK: Set this keyword to a string containing the name of                 a user supplied procedure that will be called when the color                 table is updated by XLOADCT   The procedure may optionally                 accept a keyword called DATA  which will be automatically                 set to the value specified by the optional UPDATECBDATA                 keyword          UPDATECBDATA: Set this keyword to a value of any type  It will be                 passed via the DATA keyword to the user supplied procedure                 specified via the UPDATECALLBACK keyword  if any  If the                 UPDATECBDATA keyword is not set the value accepted by the                 DATA keyword to the procedure specified by UPDATECALLBACK                 will be undefined      OUTPUTS:         None      COMMON BLOCKS:         COLORS: Contains the current RGB color tables          XP_COM: Private to this module      SIDE EFFECTS:         XPAL uses two colors from the current color table as         drawing foreground and background colors  These are used         for the RGB plots on the left  and the current index marker on         the right  This means that if the user set these two colors         to the same value  the XPAL display could become unreadable          like writing on black paper with black ink  XPAL minimizes         this possibility by noting changes to the color map and always         using the brightest available color for the foreground color         and the darkest for the background  Thus  the only way         to make XPAL s display unreadable is to set the entire color         map to a single color  which is highly unlikely  The only side         effect of this policy is that you may notice XPAL redrawing         the entire display after you ve modified the current color          This simply means that the change has made XPAL pick new         drawing colors            The new color tables are saved in the COLORS common and loaded         to the display      PROCEDURE:         The XPAL widget has the following controls:           Left:   Three plots showing the current Red  Green  and Blue vectors            Center: A status region containing:                 1  The total number of colors                  2  The current color  XPAL allows changing                    one color at a time  This color is known as                    the  current color  and is indicated in the                    color spectrum display with a special marker                  3  The current mark index  The mark is used to                    remember a color index  It is established by                    pressing the  Set Mark Button  while the current                    color index is the desired mark index                  4  The current color  The special marker used in                    color spectrum display prevents the user from seeing                    the color of the current index  but it is visible                    here                    A panel of control buttons  which do the following when                 pressed:                   Done:   Exits XPAL              Predefined:   Starts XLOADCT to allow selection of one of the                         predefined color tables                    Help:   Supplies help information similar to this header                    Redraw: Completely redraws the display using the current                         state of the color map                  Set Mark: Set the value of the mark index to the                         current index               Switch Mark: Exchange the mark and the current index              Copy Current: Every color lying between the current                         index and the mark index  inclusive  is given                         the current color               Interpolate: The colors lying between the current                         index and the mark index are interpolated linearly                         to lie between the colors of two endpoints                    save: permet de sauver la palette qui est                         actuellement a l ecran  Qd on appuie sur ce                         bouton  un widget apparait qui demande:                          1  le nom a donner a la palette que l on veut sauver                          2  le numero de la palette que l on veut                          eventuellement ecrase par la nouvelle                          palette Si aucun numero n est specifie la                          nouvelle palette estajoutee aux anciennes                           3  le nom du fichier qui contient les                          palettes  Rq: suivre eventuellement les                          indications fournis au prompteur                              Three sliders  R  G  and B  that allow the user to modify the         current color            Right:  A display which shows the current color map as a series of                 squares  Color index 0 is at the upper left  The color index                 increases monotonically by rows going left to right and top                 to bottom   The current color index is indicated by a special                 marker symbol  There are 4 ways to change the current color:                         1  Press any mouse button while the mouse                            pointer is over the color map display                          2  Use the  By Index  slider to move to                            the desired color index                          3  Use the  Row  Slider to move the marker                            vertically                          4  Use the  Column  Slider to move the marker                            horizontally      MODIFICATION HISTORY:            addaptation de xpalette pour ajouter un bouton save par            Gima Nicolas  nglod ipsl jussieu fr  et par Masson            Sebastien  smlod ipsl jussieu fr     function XP_NEW_COLORS   Choose the best foreground and background colors for the current   color maps and set  P appropriately  Returns 1 if the colors changed    0 otherwise      compile_opt idl2  strictarrsubs     common xp_com  xpw  state    res   0   junk   CT_LUMINANCE dark dark_col  bright bright_col     if  bright_col ne  p color  then begin      p color   bright_col     res   1   endif    if  dark_col ne  p background  then begin      p background   dark_col     res   1   endif    return  res end  pro XP_ALERT_CALLER     compile_opt idl2  strictarrsubs      common xp_com  xpw  state    ErrorStatus   0   CATCH  ErrorStatus   if  ErrorStatus NE 0  then begin     CATCH   CANCEL     v   DIALOG_MESSAGE Unexpected error in XPAL:                             ERR_STRING        ERR_STRING                             ERROR      return   endif   if  STRLEN state updt_callback  gt 0  then begin     if  PTR_VALID state p_updt_cb_data  then begin       CALL_PROCEDURE  state updt_callback  DATA state p_updt_cb_data      endif else begin       CALL_PROCEDURE  state updt_callback     endelse   endif end  pro XP_XLCTCALLBACK     For visuals with static colormaps  update the graphics     after a change by XLOADCT      compile_opt idl2  strictarrsubs     if  COLORMAP_APPLICABLE redrawRequired  GT 0  and            redrawRequired GT 0  then begin     XP_REDRAW   endif  end  pro XP_REDRAW     compile_opt idl2  strictarrsubs      common xp_com  xpw  state    junk   XP_NEW_COLORS    WIDGET_CONTROL  xpw colorsel  set_value 1   XP_REPLOT   p color   F           Update the plots of RGB     Let the caller of XPAL know that the color table was modified   XP_ALERT_CALLER end    pro XP_REPLOT  color_index  type   Re draw the RGB plots  Type has the following possible values            D : Draw the data part of all three plots            F : draw all three plots            R : Draw the data part of the Red plot            G : Draw the data part of the Green plot            B : Draw the data part of the Blue plot     compile_opt idl2  strictarrsubs      common xp_com  xpw  state   common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr   common pscale  r_x_s  r_y_s  g_x_s  g_y_s  b_x_s  b_y_s      Update the plots of RGB   save_win    D WINDOW   wset  state plot_win   save_p_region    p region   save_x_margin    x margin   save_y_margin    y margin   save_x_s    x s   save_y_s    y s   save_x_type    x type    save_y_type    y type      y margin   2  2     x margin   6  2     if  type eq  F  then begin      p region    0 6667  1  1      plot xstyle 2  ystyle 3  yrange 0  260  r_curr  title Red      r_x_s    x s     r_y_s    y s       p region    0 333  1   6667      plot noerase  xstyle 2 ystyle 3  yrange 0  260  g_curr  title Green      g_x_s    x s     g_y_s    y s       p region    0 0  1   333      plot noerase  xstyle 2 ystyle 3  yrange 0  260  b_curr  title Blue       b_x_s    x s     b_y_s    y s   endif else begin     if  type eq  D  or  type eq  R  then begin        p region    0 6667  1  1         x s   r_x_s        y s   r_y_s       oplot  r_curr  color color_index     endif     if  type eq  D  or  type eq  G  then begin        p region    0 333  1   6667         x s   g_x_s        y s   g_y_s       oplot  g_curr  color color_index     endif     if  type eq  D  or  type eq  B  then begin        p region    0 0  1   333         x s   b_x_s        y s   b_y_s       oplot  b_curr  color color_index     endif   endelse    empty   WSET  save_win    p region   save_p_region    x margin   save_x_margin    y margin   save_y_margin    x s   save_x_s    y s   save_y_s    x type   save_x_type    y type   save_y_type  end     pro XP_CHANGE_COLOR  type  value   Change current color  Type has the following possible values             R : Change the R part of the current color            G :              B :       compile_opt idl2  strictarrsubs     common xp_com  xpw  state   common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr     cur_idx   state cur_idx    XP_REPLOT   p background  type    if  type eq  R  then r_curr cur_idx    value    if  type eq  G  then g_curr cur_idx    value    if  type eq  B  then b_curr cur_idx    value     tvlct  r_curr cur_idx  g_curr cur_idx  b_curr cur_idx  cur_idx    if  XP_NEW_COLORS  then begin       Highlight the current position using the marker     WIDGET_CONTROL  xpw colorsel  set_value 1    Re initialize     XP_REPLOT   p color   F    endif else begin     XP_REPLOT   p color  type   endelse      For visuals with static colormaps  update the graphics     of the current color    if  COLORMAP_APPLICABLE redrawRequired  GT 0  and            redrawRequired GT 0  then begin       Mark new square     tmp    D WINDOW     wset  state cur_color_win     erase  color state cur_idx     wset  tmp   endif      Let the caller of XPAL know that the color table was modified   xp_alert_caller  end        pro XP_BUTTON_EVENT  event     compile_opt idl2  strictarrsubs       common xp_com  xpw  state    common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr                                    NOTE: The value of these tags depend on the order of the buttons                                       in the base     case  event value  of                                    DONE       0: begin          empty          r_orig   r_curr   g_orig   g_curr   b_orig   b_curr  new orig color tbl          WIDGET_CONTROL   DESTROY  event top           p   state old_p       end                                    PREDEFINED       1: xlct   silent  group xpw base  UPDATECALLBACK XP_XLCTCALLBACK                                     HELP       2: XDisplayFile  FILEPATH xpal txt  subdir help   widget           TITLE    Xpal Help  GROUP   event top  WIDTH   55  HEIGHT   16                                    REDRAW       3: XP_REDRAW                                    SET MARK       4: begin          state mark_idx   state cur_idx          WIDGET_CONTROL  xpw mark_label              set_value strcompress state mark_idx   REMOVE        end                                    SWITCH MARK       5 : if  state mark_idx ne state cur_idx  then begin          tmp   state mark_idx          state mark_idx   state cur_idx          state cur_idx   tmp          WIDGET_CONTROL  xpw colorsel  set_value tmp          WIDGET_CONTROL  xpw idx_label              set_value strcompress state cur_idx   REMOVE           WIDGET_CONTROL  xpw mark_label              set_value strcompress state mark_idx   REMOVE        endif                                    COPY CURRENT       6 : begin          do_copy:          cur_idx   state cur_idx          if  state mark_idx le cur_idx  then begin             s   state mark_idx             e   cur_idx          endif else begin             s   cur_idx             e   state mark_idx          endelse          n   e s 1          XP_REPLOT   p background   D           if  event value eq 6  then begin             r_curr s:e    r_curr cur_idx              g_curr s:e    g_curr cur_idx              b_curr s:e    b_curr cur_idx           endif else begin         Interpolate             scale   findgen n float n 1              r_curr s:e    r_curr s     fix r_curr e    fix r_curr s    scale             g_curr s:e    g_curr s     fix g_curr e    fix g_curr s    scale             b_curr s:e    b_curr s     fix b_curr e    fix b_curr s    scale          endelse          tvlct  r_curr s:e  g_curr s:e  b_curr s:e  s          if  XP_NEW_COLORS  then begin             WIDGET_CONTROL  xpw colorsel  SET_VALUE 1             XP_REPLOT   p color   F           endif else begin             XP_REPLOT   p color   D           endelse                                   Let the caller of XPAL know that the color table was modified          xp_alert_caller       end        7: goto  do_copy       8: BEGIN           COMMON basecommon   bas212  bas222   bas232          base   WIDGET_BASE COLUMN   FRAME           bas1   WIDGET_LABEL base  value    Save           bas2   WIDGET_BASE base   COLUMN           bas21   WIDGET_BASE bas2   COLUMN           bas211   WIDGET_LABEL bas21  value    Palette Name :            bas212   WIDGET_TEXT bas21  value    Noname   editable           bas22   WIDGET_BASE bas2   COLUMN           bas221   WIDGET_LABEL bas22  value     Overwrite palette number :            bas222   WIDGET_TEXT bas22  value      editable           bas23   WIDGET_BASE bas2   COLUMN           bas231   WIDGET_LABEL bas23  value    file name :            bas232   WIDGET_TEXT bas23  value    palette tbl   editable           bas3   WIDGET_BASE base   ROW           ok   WIDGET_BUTTON bas3  value    OK                               ALIGN_LEFT   FRAME  UVALUE    ok           cancel   WIDGET_BUTTON bas3  value    CANCEL                                   ALIGN_RIGHT   FRAME  UVALUE    cancel           WIDGET_CONTROL  base   REALIZE           WIDGET_CONTROL  base  SET_UVALUE   drawID          XMANAGER    xp_button_event   base          END       else:    endcase  end   PRO xp_button_event_event  ev     compile_opt idl2  strictarrsubs   COMMON basecommon   bas212  bas222   bas232   WIDGET_CONTROL  ev id   GET_UVALUE   uval   IF TAG_NAMES ev    STRUCTURE_NAME  EQ  WIDGET_BUTTON    THEN BEGIN     CASE uval OF       ok  :BEGIN          WIDGET_CONTROL  bas212  GET_VALUE   palname         WIDGET_CONTROL  bas222  GET_VALUE   over         WIDGET_CONTROL  bas232  GET_VALUE   fichname         if over 0  EQ   then over   255 ELSE over   long over           newpalette palname 0  OVER   over 0  file   fichname 0           WIDGET_CONTROL   ev top    DESTROY         END       cancel : WIDGET_CONTROL   ev top    DESTROY     ENDCASE   ENDIF  END      pro XP_EVENT  event     compile_opt idl2  strictarrsubs       common xp_com  xpw  state    common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr     case  event id  of        xpw button_base: XP_BUTTON_EVENT  event        xpw rgb_base: begin          cur_idx   state cur_idx          if  event r ne r_curr cur_idx  then XP_CHANGE_COLOR   R  event r          if  event g ne g_curr cur_idx  then XP_CHANGE_COLOR   G  event g          if  event b ne b_curr cur_idx  then XP_CHANGE_COLOR   B  event b       end        xpw colorsel: begin          cur_idx   state cur_idx          new_pos   event value ne cur_idx                                   Update the RBG sliders          if  event value ne cur_idx  then begin             state cur_idx    cur_idx   event value              WIDGET_CONTROL  xpw idx_label                  set_value strcompress cur_idx   REMOVE_ALL                                    Mark new square             tmp    D WINDOW             wset  state cur_color_win             erase  color cur_idx             wset  tmp              WIDGET_CONTROL  xpw rgb_base                 set_value r_curr cur_idx  g_curr cur_idx  b_curr cur_idx           endif       end        else:    endcase  end        pro XPAL  group group  BLOCK block  UPDATECALLBACK updt_cb_name            UPDATECBDATA updt_cb_data     compile_opt idl2  strictarrsubs       common xp_com  xpw  state   common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr    IF N_ELEMENTS updt_cb_name  EQ 0 THEN updt_callback                                     ELSE updt_callback updt_cb_name   IF N_ELEMENTS updt_cb_data  GT 0 THEN p_updt_cb_data PTR_NEW updt_cb_data                                     ELSE p_updt_cb_data PTR_NEW     xpw     xp_widgets  base:0L     colorsel:0L  mark_label:0L  idx_label:0L  button_base:0L  rgb_base:0L     state    old_p: p                          Original value of  P     mark_idx:0                        Current mark index     cur_idx:0                         Current index     cur_color_win:0                   Current Color draw window index     plot_win:0                        RGB plot draw window index     updt_callback: updt_callback      user defined callback  optional      p_updt_cb_data:p_updt_cb_data     data for callback  optional     if  XREGISTERED XPAL  then return        Only one copy at a time    IF N_ELEMENTS block  EQ 0 THEN block 0    on_error 2               Return to caller if an error occurs    nc    d table_size              of colors avail   if nc eq 0 then message   Device has static color tables   Can t modify    if  nc eq 2  then message   Unable to work with monochrome system     state old_p    p               Save  p    p noclip   1                  No clipping    p color   nc  1               Foreground color    p font   0                    Hdw font   save_win    d window   Previous window    IF N_ELEMENTS r_orig  LE 0 THEN BEGIN If no common  use current colors  TVLCT  r_orig  g_orig  b_orig   GET  r_curr   r_orig  b_curr   b_orig  g_curr   g_orig  ENDIF      Create widgets   xpw base WIDGET_BASE title Xpal   ROW  space 30      This is a little tricky  Setting the managed attribute indicates     our intention to put this app under the control of XMANAGER  and     prevents our draw widgets from becoming candidates for becoming     the default window on WSET   1  XMANAGER sets this  but doing it here     prevents our own WSETs at startup from having that problem    WIDGET_CONTROL   MANAGED  xpw base    version   WIDGET_INFO VERSION    if  version style Motif  then junk 510 else junk   580   plot_frame   WIDGET_DRAW xpw base  xsize 200  ysize junk     c1   WIDGET_BASE xpw base   COLUMN  space 20      status   WIDGET_BASE c1   COLUMN   FRAME        ncw   WIDGET_LABEL WIDGET_BASE status   DYNAMIC_RESIZE        xpw idx_label   CW_FIELD status  title Current Index:   value 0            xsize 20   STRING        xpw mark_label   CW_FIELD status  title Mark Index:      value 0     xsize 20   STRING        c1_1   widget_base status   ROW   junk   WIDGET_LABEL c1_1  value Current Color:      cur_color   WIDGET_DRAW c1_1  xsize   125  ysize 50   frame      names      Done   Predefined   Help   Redraw   Set Mark     Switch Mark   Copy Current   Interpolate   save      xpw button_base   CW_BGROUP c1  names  COLUMN 3   FRAME      xpw rgb_base   CW_RGBSLIDER c1   FRAME   DRAG       junk   WIDGET_BASE xpw base           Responds to YOFFSET     if  version style Motif  then junk2 30 else junk2   50     xpw colorsel   CW_COLORSEL junk  yoffset junk2      state cur_idx   0   state mark_idx   0      Position RGB slider appropriately   WIDGET_CONTROL  xpw rgb_base  SET_VALUE r_curr 0  g_curr 0  b_curr 0    WIDGET_CONTROL   REALIZE  xpw base    WIDGET_CONTROL  ncw     set_value Number Of Colors:     strcompress d n_colors   REMOVE_ALL    WIDGET_CONTROL  get_value tmp  cur_color   state cur_color_win   tmp   WIDGET_CONTROL  get_value tmp  plot_frame   state plot_win   tmp       Update the plots of RGB   junk   XP_NEW_COLORS    XP_REPLOT   p color   F     WSET  save_win    XMANAGER   Xpal  xpw base  event_handler XP_EVENT  group group     NO_BLOCK NOT FLOAT block  end "); 
     179a[177] = new Array("./ToBeReviewed/COULEURS/xlct.html", "xlct.pro", "", "   Id: xlct pro 114 2006 06 19 14:14:56Z smasson       Copyright  c  1991 1998  Research Systems  Inc   All rights reserved          Unauthorized reproduction prohibited   PRO XLCT_PSAVE Save Restore our plotting state     Swaps our state with the current state each time its called      compile_opt idl2  strictarrsubs    COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  updt_cb_data  tmp     xlct_psave  win:  d window  x:  x s  y:  y s   xtype:  x type                             ytype:  y type  clip:  p clip    wset  psave win  x type   psave xtype  y type   psave ytype  x s   psave x  y s   psave y  p clip   psave clip psave   tmp end  pro xlct_alert_caller     compile_opt idl2  strictarrsubs   COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  p_updt_cb_data      ErrorStatus   0     CATCH  ErrorStatus     if  ErrorStatus NE 0  then begin         CATCH   CANCEL         v   DIALOG_MESSAGE Unexpected error in XLCT:                             ERR_STRING        ERR_STRING                             ERROR          return     endif     if  STRLEN updt_callback  gt 0  then begin         if  PTR_VALID p_updt_cb_data  then begin             CALL_PROCEDURE  updt_callback  DATA p_updt_cb_data          endif else begin             CALL_PROCEDURE  updt_callback         endelse     endif end     Redraw the ramp image  PRO xlct_show     compile_opt idl2  strictarrsubs   COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  p_updt_cb_data      cur_win    D WINDOW     WSET  show_win     TV  BYTE FLOAT ncolors FINDGEN siz FLOAT siz 1              REPLICATE 1  w_height    BYTE cbot       WSET  cur_win        Let the caller of XLCT know that the color table was modified     xlct_alert_caller END  PRO xlct_draw_cps  i  c     compile_opt idl2  strictarrsubs   COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  tc   color if n_elements c  gt 0 then begin  tc   c  if c ne 0 then color   c  endif  if i 0  eq  1 then j   indgen n_elements cps  else j   i  plots  cps j  tfun j   noclip  color   tc plots  cps j  tfun j   noclip  psym 6  color   tc end  PRO xlct_transfer  UPDATE update     compile_opt idl2  strictarrsubs   COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  l   lonarr ncolors Subscripts m   n_elements cps  for i 0  m 2 do begin  n   cps i 1 cps i Interval  b    tfun i 1 tfun i float n   l cps i    findgen n    b    tfun i    cbot   endfor l ncolors 1    tfun m 1 Last point if use_values then begin   r_curr cbot     r   l r_orig    g_curr cbot     g   l g_orig    b_curr cbot     b   l b_orig  endif else begin   r_curr cbot     r   r_orig l    g_curr cbot     g   g_orig l    b_curr cbot     b   b_orig l  endelse  tvlct  r g b  cbot if  keyword_set  update   then     xlct_show end  PRO xlct_event  event     compile_opt idl2  strictarrsubs   COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt     top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider     gamma  color  use_values  ncolors  cbot  siz  w_height  show_win            updt_callback  p_updt_cb_data   IF event id eq state draw THEN BEGIN  PROCESS DRAWABLE EVENTS    if event press ne 0 then begin Pressed button   dmin   1 0e8 Find closest control pnt  xlct_psave Remove old  p   convert_coord event x  event y   TO_DATA   DEVICE   xlct_psave Restore old  x   fix p 0   y   fix p 1   for i 0  n_elements cps 1 do begin  d    p 0 cps i 2    p 1 tfun i 2    dist   2  if d lt dmin then begin  dmin   d  pnt   i  endif  endfor  return  endif  if event release ne 0 then begin Released button   pnt    1                 xlct_transfer   update  return  endif  if pnt lt 0 then return Don t care here    xlct_psave Remove old           For visuals with static colormaps  erase plot before drawing new         if  COLORMAP_APPLICABLE redrawRequired  GT 0  and                redrawRequired GT 0  then begin            ERASE  color 0         endif  p   convert_coord event x  event y   TO_DATA   DEVICE Coord of mouse  n   ncolors  1 Into range   m   n_elements cps 1  x   fix p 0    0   cps pnt 1    1   0  0  0  0 0     else s    findgen nc     s nc     int nc    0 0    gamma    nc  if chop ne 0 then begin      too_high   where s ge nc  n       if n gt 0 then s too_high    0L      endif  if use_values then begin      s   s  1     cps   cps keep     tfun   tfun keep     goto  interp_cps    ENDIF  ENDCASE      ADDCP : BEGIN  xlct_psave  xlct_draw_cps   1  0  igap   0 Find largest gap  for i 0  n_elements cps 2 do    if  cps i 1    cps i  gt  cps igap 1 cps igap  then    igap   i  cps     cps 0:igap   cps igap cps igap 1 2  cps igap 1:   tfun     tfun 0:igap   tfun igap tfun igap 1 2  tfun igap 1:        interp_cps:  xlct_draw_cps   1   Redraw new  xlct_transfer   update  xlct_psave Restore old points  if n_elements reset_all  then goto  reset_all  ENDCASE ENDCASE  END       NAME:         XLCT   PURPOSE:         comme xloadct mais plus cour a ecrire et appelle par defaut la         palette palette tbl qui peut etre situee dans n importe quel         repertoire de  path      CATEGORY:         Widgets   CALLING SEQUENCE:         XLCT   INPUTS:         None    KEYWORDS:  FILE: If this keyword is set  the file by the given name is used  instead of the file colors1 tbl in the IDL directory   This  allows multiple IDL users to have their own color table file          GROUP   The widget ID of the widget that calls Xlct   When                  this ID is specified  a death of the caller results in a                  death of Xlct  NCOLORS   number of colors to use   Use color indices from BOTTOM  to the smaller of  D TABLE_SIZE 1 and NCOLORS 1   Default    D TABLE_SIZE   all available colors   BOTTOM   first color index to use  Use color indices from BOTTOM to  BOTTOM NCOLORS 1   Default   0          SILENT   Normally  no informational message is printed when                 a color map is loaded  If this keyword is present and                 zero  this message is printed   USE_CURRENT: If set  use the current color tables  regardless of  the contents of the COMMON block COLORS          MODAL:  If set  then XLCT runs in  modal  mode  meaning that                 all other widgets are blocked until the user quits XLCT                  A group leader must be specified  via the GROUP keyword                  for the MODAL keyword to have any effect    The default                 is to not run in modal mode   BLOCK:  Set this keyword to have XMANAGER block when this  application is registered   By default the Xmanager                 keyword NO_BLOCK is set to 1 to provide access to the                 command line if active command  line processing is available                  Note that setting BLOCK for this application will cause  all widget applications to block  not only this  application   For more information see the NO_BLOCK keyword  to XMANAGER          UPDATECALLBACK: Set this keyword to a string containing the name of                 a user supplied procedure that will be called when the color                 table is updated by XLCT   The procedure may optionally                 accept a keyword called DATA  which will be automatically                 set to the value specified by the optional UPDATECBDATA                 keyword          UPDATECBDATA: Set this keyword to a value of any type  It will be                 passed via the DATA keyword to the user supplied procedure                 specified via the UPDATECALLBACK keyword  if any  If the                 UPDATECBDATA keyword is not set the value accepted by the                 DATA keyword to the procedure specified by UPDATECALLBACK                 will be undefined      OUTPUTS:         None    COMMON BLOCKS:         None    SIDE EFFECTS:         One of the predefined color maps may be loaded    RESTRICTIONS:         This routine uses the LOADCT user library procedure to         do the actual work    MODIFICATION HISTORY:         5 5 1999 copie de xloadct par Sebastien Masson  smlod ipsl jussieu fr     PRO XLct  SILENT silent_f  GROUP group  FILE file              USE_CURRENT use_current  NCOLORS   nc  BOTTOM bottom              MODAL modal  BLOCK block  UPDATECALLBACK updt_cb_name              UPDATECBDATA updt_cb_data     compile_opt idl2  strictarrsubs       COMMON colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr    COMMON xlct_com  r0  g0  b0  tfun  state  filename  cps  psave  pnt        top  bot  silent  chop  lock  g_lbl  vbot  vtop  g_slider        gamma  color  use_values  ncolors  cbot  siz  w_height  show_win        updt_callback  p_updt_cb_data      IF XRegistered xlct  NE 0  THEN return     IF N_ELEMENTS block  EQ 0 THEN block 0    IF N_ELEMENTS updt_cb_name  EQ 0 THEN updt_callback       ELSE updt_callback updt_cb_name    IF N_ELEMENTS updt_cb_data  GT 0 THEN p_updt_cb_data PTR_NEW updt_cb_data       ELSE p_updt_cb_data PTR_NEW      values_button   lonarr 2      IF KEYWORD_SET SILENT_f  THEN silent   SILENT_F ELSE silent   1     changements effectues par S Masson      IF N_ELEMENTS file  GT 0 THEN filename   file ELSE BEGIN        filename   find palette tbl        filename   filename 0        if filename EQ  NOT FOUND  then filename filepath colors1 tbl subdir resource   colors     ENDELSE     file   filename      siz   256 Basic width of tool    names   0    LOADCT  GET_NAMES   names  FILE   file  Get table names    w_height   50                 Height of ramp    cur_win    D WINDOW    lock   0    chop   0    vbot   0    vtop   100    gamma   1 0    use_values 0     Bases:    0   slider base   stretch bottom  stretch top  gamma     1   transfer function drawable   buttons    2   color table list    3   options base   sliders  top  stretch      state     bases: lonarr 4  draw: 0L  name_list: 0L      DJC   Added modal keyword    Moved  group_leader  keyword from XMANAGER to WIDGET_BASE    Ignore modal keyword if a group leader is not supplied     if  N_ELEMENTS group  GT 0L  then       base   WIDGET_BASE TITLE Xlct   COLUMN  GROUP_LEADER group                           MODAL KEYWORD_SET modal       else       base   WIDGET_BASE TITLE Xlct   COLUMN      Setting the managed attribute indicates our intention to put this app   under the control of XMANAGER  and prevents our draw widgets from   becoming candidates for becoming the default window on WSET   1  XMANAGER   sets this  but doing it here prevents our own WSETs at startup from   having that problem     WIDGET_CONTROL   MANAGED  base      show   WIDGET_DRAW base  YSIZE w_height  XSIZE siz   FRAME  RETAIN   2     junk   WIDGET_BASE base   ROW     done   WIDGET_BUTTON junk  VALUE  Done   UVALUE    DONE     junk1   WIDGET_BUTTON junk  VALUE  Help   UVALUE    HELP      junk   CW_BGROUP base   ROW   EXCLUSIVE   NO_REL                         Tables   Options   Function                        UVALUE NEWBASE  SET_VALUE 0      junk   widget_base base     for i 0 1 do state bases i    WIDGET_BASE junk   COLUMN      sbase WIDGET_BASE state bases 0   COLUMN     bot   WIDGET_SLIDER sbase  TITLE    Stretch Bottom  MINIMUM   0                           MAXIMUM   100  VALUE   0   DRAG  UVALUE    BOTTOM  xsize siz     top   WIDGET_SLIDER sbase  TITLE    Stretch Top  MINIMUM   0                           MAXIMUM   100  VALUE   100   DRAG  UVALUE    TOP  xsize siz     g_lbl   WIDGET_LABEL sbase  VALUE   STRING 1 0     g_slider   WIDGET_slider sbase  TITLE    Gamma Correction                                MINIMUM   0  MAXIMUM   100  VALUE   50  UVALUE    GAMMA                                 SUPPRESS_VALUE   DRAG  xsize siz      junk   WIDGET_BASE sbase     for i 2 3 do state bases i    WIDGET_BASE junk   COLUMN     DEVICE  GET_SCREEN   junk    if junk 1  le 768 then junk   8 else junk   16    state name_list   WIDGET_LIST state bases 2  VALUE   names  ysize   junk     Drawable for transfer function     junk   WIDGET_BASE state bases 1   COLUMN   FRAME     junk1   WIDGET_BUTTON junk  VALUE    Reset Transfer Function                             UVALUE TFUNR     junk1   WIDGET_BUTTON junk  VALUE Add Control Point  UVALUE ADDCP     junk1   WIDGET_BUTTON junk  VALUE Remove Control Point  UVALUE REMCP      state draw   WIDGET_DRAW state bases 1  xsize   siz  ysize   siz                                 BUTTON_EVENTS   MOTION_EVENTS       opt_id   state bases 3     junk   CW_BGROUP opt_id   ROW  LABEL_LEFT Sliders:   EXCLUSIVE   NO_REL                         Independent   Gang  UVALUE GANG  SET_VALUE lock     junk   CW_BGROUP opt_id   ROW  LABEL_LEFT    Top:    EXCLUSIVE   NO_REL                         Clip   Chop  SET_VALUE chop  UVALUE CHOP     junk   CW_BGROUP opt_id   ROW  LABEL_LEFT Stretch:    EXCLUSIVE   NO_REL                         Indices   Intensity  UVALUE VALUES                        SET_VALUE use_values     junk   WIDGET_BUTTON opt_id  VALUE Reverse Table                            UVALUE REVERSE   NO_REL     junk   WIDGET_BUTTON opt_id  VALUE REPLACE Original Table                            UVALUE    OVERWRITE   NO_REL     junk   WIDGET_BUTTON opt_id  VALUE RESTORE Original Table                            UVALUE RESTORE   NO_REL      WIDGET_CONTROL  state bases 1  MAP 0  Tfun is not visible    WIDGET_CONTROL  state bases 3  MAP 0  options are not visible     WIDGET_CONTROL  base   REALIZE    WIDGET_CONTROL  state draw  GET_VALUE tmp     if n_elements bottom  gt 0 then cbot   bottom else cbot   0    ncolors    d table_size   cbot    if n_elements nc  gt 0 then ncolors   ncolors   nc    if ncolors le 0 then message Number of colors is 0 or negative      psave     xlct_psave  win:  d window  x:  x s  y:  y s   xtype:  x type                 ytype:  y type  clip:  p clip    Our initial state    wset  tmp Initial graph    xlct_psave                    Save original scaling   window    plot   0  ncolors 1   0  ncolors 1  xstyle 3  ystyle 3        xmargin    1 1  ymargin 1 1  ticklen    0 03   NODATA    xlct_psave                    Restore original scaling   window                                   If no common  use current colors    IF KEYWORD_SET use_current  or N_ELEMENTS r_orig  LE 0 THEN BEGIN       TVLCT  r_orig  g_orig  b_orig   GET       r_curr   r_orig       b_curr   b_orig       g_curr   g_orig    ENDIF     r0   r_curr                   Save original colors    g0   g_curr    b0   b_curr    color   ncolors   cbot  1    cps    0  ncolors 1     tfun   cps    pnt    1     WIDGET_CONTROL  show  GET_VALUE show_win    WSET  show_win    DJC   fixed color bar display bug    TVSCL  BYTSCL INDGEN siz    REPLICATE 1  w_height  top   ncolors 1     TV  BYTE FLOAT ncolors FINDGEN siz FLOAT siz 1                  REPLICATE 1  w_height    BYTE cbot      WSET  cur_win    DJC   moved GROUP_LEADER keyword to WIDGET_BASE     XManager   xlct  base  NO_BLOCK NOT FLOAT block        MODAL KEYWORD_SET modal   END"); 
     180a[178] = new Array("./ToBeReviewed/COULEURS/xpal.html", "xpal.pro", "", "   Id: xpal pro 114 2006 06 19 14:14:56Z smasson       Copyright  c  1992 1998  Research Systems  Inc   All rights reserved          Unauthorized reproduction prohibited      NAME:         XPAL     PURPOSE:         comme xpalette mais plus court a ecrire et possede en plus         une touche save qui  grace a la routine newpalette  permet de         sauver la routine que l on vient de faire  Rq qd on appuie         sur la touche predefined appelle xlct plutot que xloadct      CATEGORY:         Color tables  widgets      CALLING SEQUENCE:         XPAL     INPUTS:         No explicit inputs   The current color table is used as a starting         point      KEYWORD PARAMETERS:  BLOCK:  Set this keyword to have XMANAGER block when this  application is registered   By default the Xmanager                 keyword NO_BLOCK is set to 1 to provide access to the                 command line if active command  line processing is available                  Note that setting BLOCK for this application will cause  all widget applications to block  not only this  application   For more information see the NO_BLOCK keyword  to XMANAGER          UPDATECALLBACK: Set this keyword to a string containing the name of                 a user supplied procedure that will be called when the color                 table is updated by XLOADCT   The procedure may optionally                 accept a keyword called DATA  which will be automatically                 set to the value specified by the optional UPDATECBDATA                 keyword          UPDATECBDATA: Set this keyword to a value of any type  It will be                 passed via the DATA keyword to the user supplied procedure                 specified via the UPDATECALLBACK keyword  if any  If the                 UPDATECBDATA keyword is not set the value accepted by the                 DATA keyword to the procedure specified by UPDATECALLBACK                 will be undefined      OUTPUTS:         None      COMMON BLOCKS:         COLORS: Contains the current RGB color tables          XP_COM: Private to this module      SIDE EFFECTS:         XPAL uses two colors from the current color table as         drawing foreground and background colors  These are used         for the RGB plots on the left  and the current index marker on         the right  This means that if the user set these two colors         to the same value  the XPAL display could become unreadable          like writing on black paper with black ink  XPAL minimizes         this possibility by noting changes to the color map and always         using the brightest available color for the foreground color         and the darkest for the background  Thus  the only way         to make XPAL s display unreadable is to set the entire color         map to a single color  which is highly unlikely  The only side         effect of this policy is that you may notice XPAL redrawing         the entire display after you ve modified the current color          This simply means that the change has made XPAL pick new         drawing colors            The new color tables are saved in the COLORS common and loaded         to the display      PROCEDURE:         The XPAL widget has the following controls:           Left:   Three plots showing the current Red  Green  and Blue vectors            Center: A status region containing:                 1  The total number of colors                  2  The current color  XPAL allows changing                    one color at a time  This color is known as                    the  current color  and is indicated in the                    color spectrum display with a special marker                  3  The current mark index  The mark is used to                    remember a color index  It is established by                    pressing the  Set Mark Button  while the current                    color index is the desired mark index                  4  The current color  The special marker used in                    color spectrum display prevents the user from seeing                    the color of the current index  but it is visible                    here                    A panel of control buttons  which do the following when                 pressed:                   Done:   Exits XPAL              Predefined:   Starts XLOADCT to allow selection of one of the                         predefined color tables                    Help:   Supplies help information similar to this header                    Redraw: Completely redraws the display using the current                         state of the color map                  Set Mark: Set the value of the mark index to the                         current index               Switch Mark: Exchange the mark and the current index              Copy Current: Every color lying between the current                         index and the mark index  inclusive  is given                         the current color               Interpolate: The colors lying between the current                         index and the mark index are interpolated linearly                         to lie between the colors of two endpoints                    save: permet de sauver la palette qui est                         actuellement a l ecran  Qd on appuie sur ce                         bouton  un widget apparait qui demande:                          1  le nom a donner a la palette que l on veut sauver                          2  le numero de la palette que l on veut                          eventuellement ecrase par la nouvelle                          palette Si aucun numero n est specifie la                          nouvelle palette estajoutee aux anciennes                           3  le nom du fichier qui contient les                          palettes  Rq: suivre eventuellement les                          indications fournis au prompteur                              Three sliders  R  G  and B  that allow the user to modify the         current color            Right:  A display which shows the current color map as a series of                 squares  Color index 0 is at the upper left  The color index                 increases monotonically by rows going left to right and top                 to bottom   The current color index is indicated by a special                 marker symbol  There are 4 ways to change the current color:                         1  Press any mouse button while the mouse                            pointer is over the color map display                          2  Use the  By Index  slider to move to                            the desired color index                          3  Use the  Row  Slider to move the marker                            vertically                          4  Use the  Column  Slider to move the marker                            horizontally      MODIFICATION HISTORY:            addaptation de xpalette pour ajouter un bouton save par            Gima Nicolas  nglod ipsl jussieu fr  et par Masson            Sebastien  smlod ipsl jussieu fr     function XP_NEW_COLORS   Choose the best foreground and background colors for the current   color maps and set  P appropriately  Returns 1 if the colors changed    0 otherwise      compile_opt idl2  strictarrsubs     common xp_com  xpw  state    res   0   junk   CT_LUMINANCE dark dark_col  bright bright_col     if  bright_col ne  p color  then begin      p color   bright_col     res   1   endif    if  dark_col ne  p background  then begin      p background   dark_col     res   1   endif    return  res end  pro XP_ALERT_CALLER     compile_opt idl2  strictarrsubs      common xp_com  xpw  state    ErrorStatus   0   CATCH  ErrorStatus   if  ErrorStatus NE 0  then begin     CATCH   CANCEL     v   DIALOG_MESSAGE Unexpected error in XPAL:                             ERR_STRING        ERR_STRING                             ERROR      return   endif   if  STRLEN state updt_callback  gt 0  then begin     if  PTR_VALID state p_updt_cb_data  then begin       CALL_PROCEDURE  state updt_callback  DATA state p_updt_cb_data      endif else begin       CALL_PROCEDURE  state updt_callback     endelse   endif end  pro XP_XLCTCALLBACK     For visuals with static colormaps  update the graphics     after a change by XLOADCT      compile_opt idl2  strictarrsubs     if  COLORMAP_APPLICABLE redrawRequired  GT 0  and            redrawRequired GT 0  then begin     XP_REDRAW   endif  end  pro XP_REDRAW     compile_opt idl2  strictarrsubs      common xp_com  xpw  state    junk   XP_NEW_COLORS    WIDGET_CONTROL  xpw colorsel  set_value 1   XP_REPLOT   p color   F           Update the plots of RGB     Let the caller of XPAL know that the color table was modified   XP_ALERT_CALLER end    pro XP_REPLOT  color_index  type   Re draw the RGB plots  Type has the following possible values            D : Draw the data part of all three plots            F : draw all three plots            R : Draw the data part of the Red plot            G : Draw the data part of the Green plot            B : Draw the data part of the Blue plot     compile_opt idl2  strictarrsubs      common xp_com  xpw  state   common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr   common pscale  r_x_s  r_y_s  g_x_s  g_y_s  b_x_s  b_y_s      Update the plots of RGB   save_win    D WINDOW   wset  state plot_win   save_p_region    p region   save_x_margin    x margin   save_y_margin    y margin   save_x_s    x s   save_y_s    y s   save_x_type    x type    save_y_type    y type      y margin   2  2     x margin   6  2     if  type eq  F  then begin      p region    0 6667  1  1      plot xstyle 2  ystyle 3  yrange 0  260  r_curr  title Red      r_x_s    x s     r_y_s    y s       p region    0 333  1   6667      plot noerase  xstyle 2 ystyle 3  yrange 0  260  g_curr  title Green      g_x_s    x s     g_y_s    y s       p region    0 0  1   333      plot noerase  xstyle 2 ystyle 3  yrange 0  260  b_curr  title Blue       b_x_s    x s     b_y_s    y s   endif else begin     if  type eq  D  or  type eq  R  then begin        p region    0 6667  1  1         x s   r_x_s        y s   r_y_s       oplot  r_curr  color color_index     endif     if  type eq  D  or  type eq  G  then begin        p region    0 333  1   6667         x s   g_x_s        y s   g_y_s       oplot  g_curr  color color_index     endif     if  type eq  D  or  type eq  B  then begin        p region    0 0  1   333         x s   b_x_s        y s   b_y_s       oplot  b_curr  color color_index     endif   endelse    empty   WSET  save_win    p region   save_p_region    x margin   save_x_margin    y margin   save_y_margin    x s   save_x_s    y s   save_y_s    x type   save_x_type    y type   save_y_type  end     pro XP_CHANGE_COLOR  type  value   Change current color  Type has the following possible values             R : Change the R part of the current color            G :              B :       compile_opt idl2  strictarrsubs     common xp_com  xpw  state   common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr     cur_idx   state cur_idx    XP_REPLOT   p background  type    if  type eq  R  then r_curr cur_idx    value    if  type eq  G  then g_curr cur_idx    value    if  type eq  B  then b_curr cur_idx    value     tvlct  r_curr cur_idx  g_curr cur_idx  b_curr cur_idx  cur_idx    if  XP_NEW_COLORS  then begin       Highlight the current position using the marker     WIDGET_CONTROL  xpw colorsel  set_value 1    Re initialize     XP_REPLOT   p color   F    endif else begin     XP_REPLOT   p color  type   endelse      For visuals with static colormaps  update the graphics     of the current color    if  COLORMAP_APPLICABLE redrawRequired  GT 0  and            redrawRequired GT 0  then begin       Mark new square     tmp    D WINDOW     wset  state cur_color_win     erase  color state cur_idx     wset  tmp   endif      Let the caller of XPAL know that the color table was modified   xp_alert_caller  end        pro XP_BUTTON_EVENT  event     compile_opt idl2  strictarrsubs       common xp_com  xpw  state    common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr                                    NOTE: The value of these tags depend on the order of the buttons                                       in the base     case  event value  of                                    DONE       0: begin          empty          r_orig   r_curr   g_orig   g_curr   b_orig   b_curr  new orig color tbl          WIDGET_CONTROL   DESTROY  event top           p   state old_p       end                                    PREDEFINED       1: xlct   silent  group xpw base  UPDATECALLBACK XP_XLCTCALLBACK                                     HELP       2: XDisplayFile  FILEPATH xpal txt  subdir help   widget           TITLE    Xpal Help  GROUP   event top  WIDTH   55  HEIGHT   16                                    REDRAW       3: XP_REDRAW                                    SET MARK       4: begin          state mark_idx   state cur_idx          WIDGET_CONTROL  xpw mark_label              set_value strcompress state mark_idx   REMOVE        end                                    SWITCH MARK       5 : if  state mark_idx ne state cur_idx  then begin          tmp   state mark_idx          state mark_idx   state cur_idx          state cur_idx   tmp          WIDGET_CONTROL  xpw colorsel  set_value tmp          WIDGET_CONTROL  xpw idx_label              set_value strcompress state cur_idx   REMOVE           WIDGET_CONTROL  xpw mark_label              set_value strcompress state mark_idx   REMOVE        endif                                    COPY CURRENT       6 : begin          do_copy:          cur_idx   state cur_idx          if  state mark_idx le cur_idx  then begin             s   state mark_idx             e   cur_idx          endif else begin             s   cur_idx             e   state mark_idx          endelse          n   e s 1          XP_REPLOT   p background   D           if  event value eq 6  then begin             r_curr s:e    r_curr cur_idx              g_curr s:e    g_curr cur_idx              b_curr s:e    b_curr cur_idx           endif else begin         Interpolate             scale   findgen n float n 1              r_curr s:e    r_curr s     fix r_curr e    fix r_curr s    scale             g_curr s:e    g_curr s     fix g_curr e    fix g_curr s    scale             b_curr s:e    b_curr s     fix b_curr e    fix b_curr s    scale          endelse          tvlct  r_curr s:e  g_curr s:e  b_curr s:e  s          if  XP_NEW_COLORS  then begin             WIDGET_CONTROL  xpw colorsel  SET_VALUE 1             XP_REPLOT   p color   F           endif else begin             XP_REPLOT   p color   D           endelse                                   Let the caller of XPAL know that the color table was modified          xp_alert_caller       end        7: goto  do_copy       8: BEGIN           COMMON basecommon   bas212  bas222   bas232          base   WIDGET_BASE COLUMN   FRAME           bas1   WIDGET_LABEL base  value    Save           bas2   WIDGET_BASE base   COLUMN           bas21   WIDGET_BASE bas2   COLUMN           bas211   WIDGET_LABEL bas21  value    Palette Name :            bas212   WIDGET_TEXT bas21  value    Noname   editable           bas22   WIDGET_BASE bas2   COLUMN           bas221   WIDGET_LABEL bas22  value     Overwrite palette number :            bas222   WIDGET_TEXT bas22  value      editable           bas23   WIDGET_BASE bas2   COLUMN           bas231   WIDGET_LABEL bas23  value    file name :            bas232   WIDGET_TEXT bas23  value    palette tbl   editable           bas3   WIDGET_BASE base   ROW           ok   WIDGET_BUTTON bas3  value    OK                               ALIGN_LEFT   FRAME  UVALUE    ok           cancel   WIDGET_BUTTON bas3  value    CANCEL                                   ALIGN_RIGHT   FRAME  UVALUE    cancel           WIDGET_CONTROL  base   REALIZE           WIDGET_CONTROL  base  SET_UVALUE   drawID          XMANAGER    xp_button_event   base          END       else:    endcase  end   PRO xp_button_event_event  ev     compile_opt idl2  strictarrsubs   COMMON basecommon   bas212  bas222   bas232   WIDGET_CONTROL  ev id   GET_UVALUE   uval   IF TAG_NAMES ev    STRUCTURE_NAME  EQ  WIDGET_BUTTON    THEN BEGIN     CASE uval OF       ok  :BEGIN          WIDGET_CONTROL  bas212  GET_VALUE   palname         WIDGET_CONTROL  bas222  GET_VALUE   over         WIDGET_CONTROL  bas232  GET_VALUE   fichname         if over 0  EQ   then over   255 ELSE over   long over           newpalette palname 0  OVER   over 0  file   fichname 0           WIDGET_CONTROL   ev top    DESTROY         END       cancel : WIDGET_CONTROL   ev top    DESTROY     ENDCASE   ENDIF  END      pro XP_EVENT  event     compile_opt idl2  strictarrsubs       common xp_com  xpw  state    common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr     case  event id  of        xpw button_base: XP_BUTTON_EVENT  event        xpw rgb_base: begin          cur_idx   state cur_idx          if  event r ne r_curr cur_idx  then XP_CHANGE_COLOR   R  event r          if  event g ne g_curr cur_idx  then XP_CHANGE_COLOR   G  event g          if  event b ne b_curr cur_idx  then XP_CHANGE_COLOR   B  event b       end        xpw colorsel: begin          cur_idx   state cur_idx          new_pos   event value ne cur_idx                                   Update the RBG sliders          if  event value ne cur_idx  then begin             state cur_idx    cur_idx   event value              WIDGET_CONTROL  xpw idx_label                  set_value strcompress cur_idx   REMOVE_ALL                                    Mark new square             tmp    D WINDOW             wset  state cur_color_win             erase  color cur_idx             wset  tmp              WIDGET_CONTROL  xpw rgb_base                 set_value r_curr cur_idx  g_curr cur_idx  b_curr cur_idx           endif       end        else:    endcase  end        pro XPAL  group group  BLOCK block  UPDATECALLBACK updt_cb_name            UPDATECBDATA updt_cb_data     compile_opt idl2  strictarrsubs       common xp_com  xpw  state   common colors  r_orig  g_orig  b_orig  r_curr  g_curr  b_curr    IF N_ELEMENTS updt_cb_name  EQ 0 THEN updt_callback                                     ELSE updt_callback updt_cb_name   IF N_ELEMENTS updt_cb_data  GT 0 THEN p_updt_cb_data PTR_NEW updt_cb_data                                     ELSE p_updt_cb_data PTR_NEW     xpw     xp_widgets  base:0L     colorsel:0L  mark_label:0L  idx_label:0L  button_base:0L  rgb_base:0L     state    old_p: p                          Original value of  P     mark_idx:0                        Current mark index     cur_idx:0                         Current index     cur_color_win:0                   Current Color draw window index     plot_win:0                        RGB plot draw window index     updt_callback: updt_callback      user defined callback  optional      p_updt_cb_data:p_updt_cb_data     data for callback  optional     if  XREGISTERED XPAL  then return        Only one copy at a time    IF N_ELEMENTS block  EQ 0 THEN block 0    on_error 2               Return to caller if an error occurs    nc    d table_size              of colors avail   if nc eq 0 then message   Device has static color tables   Can t modify    if  nc eq 2  then message   Unable to work with monochrome system     state old_p    p               Save  p    p noclip   1                  No clipping    p color   nc  1               Foreground color    p font   0                    Hdw font   save_win    d window   Previous window    IF N_ELEMENTS r_orig  LE 0 THEN BEGIN If no common  use current colors  TVLCT  r_orig  g_orig  b_orig   GET  r_curr   r_orig  b_curr   b_orig  g_curr   g_orig  ENDIF      Create widgets   xpw base WIDGET_BASE title Xpal   ROW  space 30      This is a little tricky  Setting the managed attribute indicates     our intention to put this app under the control of XMANAGER  and     prevents our draw widgets from becoming candidates for becoming     the default window on WSET   1  XMANAGER sets this  but doing it here     prevents our own WSETs at startup from having that problem    WIDGET_CONTROL   MANAGED  xpw base    version   WIDGET_INFO VERSION    if  version style Motif  then junk 510 else junk   580   plot_frame   WIDGET_DRAW xpw base  xsize 200  ysize junk     c1   WIDGET_BASE xpw base   COLUMN  space 20      status   WIDGET_BASE c1   COLUMN   FRAME        ncw   WIDGET_LABEL WIDGET_BASE status   DYNAMIC_RESIZE        xpw idx_label   CW_FIELD status  title Current Index:   value 0            xsize 20   STRING        xpw mark_label   CW_FIELD status  title Mark Index:      value 0     xsize 20   STRING        c1_1   widget_base status   ROW   junk   WIDGET_LABEL c1_1  value Current Color:      cur_color   WIDGET_DRAW c1_1  xsize   125  ysize 50   frame      names      Done   Predefined   Help   Redraw   Set Mark     Switch Mark   Copy Current   Interpolate   save      xpw button_base   CW_BGROUP c1  names  COLUMN 3   FRAME      xpw rgb_base   CW_RGBSLIDER c1   FRAME   DRAG       junk   WIDGET_BASE xpw base           Responds to YOFFSET     if  version style Motif  then junk2 30 else junk2   50     xpw colorsel   CW_COLORSEL junk  yoffset junk2      state cur_idx   0   state mark_idx   0      Position RGB slider appropriately   WIDGET_CONTROL  xpw rgb_base  SET_VALUE r_curr 0  g_curr 0  b_curr 0    WIDGET_CONTROL   REALIZE  xpw base    WIDGET_CONTROL  ncw     set_value Number Of Colors:     strcompress d n_colors   REMOVE_ALL    WIDGET_CONTROL  get_value tmp  cur_color   state cur_color_win   tmp   WIDGET_CONTROL  get_value tmp  plot_frame   state plot_win   tmp       Update the plots of RGB   junk   XP_NEW_COLORS    XP_REPLOT   p color   F     WSET  save_win    XMANAGER   Xpal  xpw base  event_handler XP_EVENT  group group     NO_BLOCK NOT FLOAT block  end "); 
    181181a[179] = new Array("./ToBeReviewed/GRILLE/changegrid.html", "changegrid.pro", "", "function changegrid  newgrid       compile_opt idl2  strictarrsubs    cm_4mesh        if cmpgrid newgrid  EQ 0 then return  0     update the common paramaters      ccmeshparameters   newgrid     ixminmesh   newgrid ixminmesh    ixmaxmesh   newgrid ixmaxmesh    iyminmesh   newgrid iyminmesh    iymaxmesh   newgrid iymaxmesh    izminmesh   newgrid izminmesh    izmaxmesh   newgrid izmaxmesh     read the new file      loadgrid  newgrid filename     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF      return  1 end"); 
    182182a[180] = new Array("./ToBeReviewed/GRILLE/cmpgrid.html", "cmpgrid.pro", "", "FUNCTION cmpgrid  newgrid       compile_opt idl2  strictarrsubs    common       newgrid must be a structure      if size newgrid   type  NE 8 then return  0     does ccmeshparameters exist        if n_elements ccmeshparameters  EQ 0 then return  1     we compare the structure which caracterise the grid whith   ccmeshparameters      case 1 of       ccmeshparameters jpiglo NE newgrid jpiglo:       ccmeshparameters jpjglo NE newgrid jpjglo:       ccmeshparameters jpkglo NE newgrid jpkglo:       ccmeshparameters jpi NE newgrid jpi:       ccmeshparameters jpj NE newgrid jpj:       ccmeshparameters jpk NE newgrid jpk:       total ccmeshparameters glaminfo   newgrid glaminfo  NE 0:       total ccmeshparameters gphiinfo   newgrid gphiinfo  NE 0:       ccmeshparameters ixminmesh NE newgrid ixminmesh:       ccmeshparameters ixmaxmesh NE newgrid ixmaxmesh:       ccmeshparameters iyminmesh NE newgrid iyminmesh:       ccmeshparameters iymaxmesh NE newgrid iymaxmesh:       ccmeshparameters izminmesh NE newgrid izminmesh:       ccmeshparameters izmaxmesh NE newgrid izmaxmesh:       ccmeshparameters key_shift NE newgrid key_shift:       ccmeshparameters key_periodic NE newgrid key_periodic:       array_equal ccmeshparameters key_stride  newgrid key_stride  EQ 0:       ccmeshparameters key_gridtype NE newgrid key_gridtype:       ccmeshparameters key_yreverse NE newgrid key_yreverse:       ccmeshparameters key_zreverse NE newgrid key_zreverse:       ccmeshparameters key_partialstep NE newgrid key_partialstep:       ccmeshparameters key_onearth NE newgrid key_onearth:       ELSE:return  0    endcase     return  1 end"); 
     
    205205a[203] = new Array("./ToBeReviewed/IMAGE/image_viewer.html", "image_viewer.pro", "", "    NAME:         IMAGE_VIEWER     PURPOSE:         The purpose of this program is to provide an interactive tool that can be used         to view JPEG  BMP  GIF  PNG  and TIFF picture files   Images are loaded into         memory  so the initial file access may take a while  but once each picture has         been opened they can all be viewed in a very rapid fashion      CATEGORY:         Visualization  Widgets     CALLING SEQUENCE:         image_viewer     INPUT PARAMETERS:         None      KEYWORD PARAMETERS:         None      OUTPUTS:         None      COMMON BLOCKS:         None      SIDE EFFECTS:         While this program is running in an IDL session it will change the current         working directory  enables disables color decomposition  and sets  QUIET 1           ORDER 0     P BACKGROUND 0   These settings are returned to their initial         settings before the program was initiated once it is terminated      RESTRICTIONS:         This program is supported in IDL version 5 5 and newer   In order to open         GIF files or TIFF files with LZW compression the copy of IDL being used must         be licensed with these features   IDL only supports BMP files in the standard         Windows format and does not support OS2 bitmaps      MODIFICATION HISTORY:         Written by: AEB  1 02        PRO IMAGE_VIEWER_OPEN_FILES event  THIS PROCEDURE IS CALLED WHEN A USER SELECTS  File   Open Picture Files  FROM THE MAIN MENU  error handling:     compile_opt idl2  strictarrsubs    ERROR_STATE CODE 0 CATCH error if error NE 0 then begin   HELP LAST_MESSAGE OUTPUT traceback   messageStr Error Caught : traceback    dummy DIALOG_MESSAGE messageStr ERROR     if status report dialog is still active  destroy it:   if SIZE tlb TYPE  NE 0 then WIDGET_CONTROL tlb DESTROY   RETURN endif  obtain state structure for top level base from its UVALUE: WIDGET_CONTROL event top GET_UVALUE pState  prompt user to select files with native file selection dialog: if  pState gifFlag EQ 1 then filter JPG jpg JPEG jpeg JPE jpe     JFIF jfif GIF gif BMP bmp TIF tif TIFF tiff     PNG png  else     filter JPG jpg JPEG jpeg JPE jpe JFIF jfif BMP bmp     TIF tif TIFF tiff PNG png  files DIALOG_PICKFILE TITLE Select picture files to open MULTIPLE_FILES                        FILTER filter GET_PATH path   if user hit  Cancel  then return to previous program level: if  files 0  EQ   then RETURN  change current working directory to location of selected files: CD path nFiles N_ELEMENTS files   pState nFiles nFiles  pState increment 100 nFiles files files SORT files   create status report dialog: xCenter pState screenSize 0 2 yCenter pState screenSize 1 2 tlb2 WIDGET_BASE TITLE Status Report COLUMN ALIGN_CENTER TLB_FRAME_ATTR 19 MODAL                   GROUP_LEADER pState tlb    spacer WIDGET_LABEL tlb2 VALUE      label1 WIDGET_LABEL tlb2 VALUE LOADING SELECTED IMAGE FILES INTO MEMORY    spacer WIDGET_LABEL tlb2 VALUE      label2 WIDGET_LABEL tlb2 VALUE  PLEASE WAIT     spacer WIDGET_LABEL tlb2 VALUE      statusBase WIDGET_BASE tlb2 ROW FRAME BASE_ALIGN_CENTER ALIGN_CENTER EVENT_PRO image_viewer_timer      cancelBut WIDGET_BUTTON statusBase VALUE Cancel EVENT_PRO image_viewer_cancel      progressLabel WIDGET_LABEL statusBase Value  Progress :  0       statusSlider WIDGET_SLIDER statusBase SENSITIVE 0 TITLE   XSIZE 200      percentLabel WIDGET_LABEL statusBase VALUE  100   geom WIDGET_INFO tlb2 GEOMETRY  xHalfSize geom Scr_XSize 2 yHalfSize geom Scr_YSize 2 WIDGET_CONTROL tlb2 XOFFSET xCenter xHalfSize YOFFSET yCenter yHalfSize WIDGET_CONTROL tlb2 REALIZE  pState statusBase statusBase  pState statusSlider statusSlider WIDGET_CONTROL tlb2 SET_UVALUE pState  reset settings of GUI: WIDGET_CONTROL pState fileText SET_VALUE  WIDGET_CONTROL pState imageDraw GET_VALUE drawID WSET drawID TVLCT 0 0 0 0 ERASE  re create thumbnails base with appropriate size for number of images selected: nRows   CEIL  nFiles   3 0  WIDGET_CONTROL pState thumbBase DESTROY  pState thumbBase WIDGET_BASE pState controlsBase COLUMN ALIGN_TOP FRAME XSIZE 260                                  YSIZE nRows 89 SCROLL X_SCROLL_SIZE 260 Y_SCROLL_SIZE 650   initialize pointer array to reference image data: numImages N_ELEMENTS pState images  if numImages NE 0 then PTR_FREE pState images  pState images PTRARR nFiles ALLOCATE_HEAP   pState files files  loop through each file:  pState timer 1B WIDGET_CONTROL statusBase TIMER 0 01 END       PRO IMAGE_VIEWER_OPEN_FOLDER event  THIS PROCEDURE IS CALLED WHEN A USER SELECTS  File   Open All In Folder  FROM THE MAIN MENU  error handling:     compile_opt idl2  strictarrsubs    ERROR_STATE CODE 0 CATCH error if error NE 0 then begin   HELP LAST_MESSAGE OUTPUT traceback   messageStr Error Caught : traceback    dummy DIALOG_MESSAGE messageStr ERROR     if status report dialog is still active  destroy it:   if SIZE tlb TYPE  NE 0 then WIDGET_CONTROL tlb DESTROY   RETURN endif  obtain state structure for top level base from its UVALUE: WIDGET_CONTROL event top GET_UVALUE pState  prompt user to select files with native file selection dialog: folder DIALOG_PICKFILE TITLE Select folder that contains picture files DIRECTORY   if user hit  Cancel  then return to previous program level: if folder EQ   then RETURN  change current working directory to location of selected files: CD folder if  pState gifFlag EQ 1 then filter JPG JPEG JPE JFIF GIF BMP     TIF TIFF PNG  else     filter JPG JPEG JPE JFIF BMP TIF TIFF PNG  files FILE_SEARCH filter COUNT nFiles FOLD_CASE FULLY_QUALIFY_PATH NOSORT  if nFiles EQ 0 then begin   dummy DIALOG_MESSAGE No valid picture files were found in the selected folder  INFO    RETURN endif  pState nFiles nFiles  pState increment 100 nFiles files files SORT files   create status report dialog: xCenter pState screenSize 0 2 yCenter pState screenSize 1 2 tlb2 WIDGET_BASE TITLE Status Report COLUMN ALIGN_CENTER TLB_FRAME_ATTR 19 MODAL                   GROUP_LEADER pState tlb    spacer WIDGET_LABEL tlb2 VALUE      label1 WIDGET_LABEL tlb2 VALUE LOADING SELECTED IMAGE FILES INTO MEMORY    spacer WIDGET_LABEL tlb2 VALUE      label2 WIDGET_LABEL tlb2 VALUE  PLEASE WAIT     spacer WIDGET_LABEL tlb2 VALUE      statusBase WIDGET_BASE tlb2 ROW FRAME BASE_ALIGN_CENTER ALIGN_CENTER EVENT_PRO image_viewer_timer      cancelBut WIDGET_BUTTON statusBase VALUE Cancel EVENT_PRO image_viewer_cancel      progressLabel WIDGET_LABEL statusBase Value  Progress :  0       statusSlider WIDGET_SLIDER statusBase SENSITIVE 0 TITLE   XSIZE 200      percentLabel WIDGET_LABEL statusBase VALUE  100   geom WIDGET_INFO tlb2 GEOMETRY  xHalfSize geom Scr_XSize 2 yHalfSize geom Scr_YSize 2 WIDGET_CONTROL tlb2 XOFFSET xCenter xHalfSize YOFFSET yCenter yHalfSize WIDGET_CONTROL tlb2 REALIZE  pState statusBase statusBase  pState statusSlider statusSlider WIDGET_CONTROL tlb2 SET_UVALUE pState  reset settings of GUI: WIDGET_CONTROL pState fileText SET_VALUE  WIDGET_CONTROL pState imageDraw GET_VALUE drawID WSET drawID TVLCT 0 0 0 0 ERASE  re create thumbnails base with appropriate size for number of images selected: nRows   CEIL  nFiles   3 0  WIDGET_CONTROL pState thumbBase DESTROY  pState thumbBase WIDGET_BASE pState controlsBase COLUMN ALIGN_TOP FRAME XSIZE 260                                  YSIZE nRows 89 SCROLL X_SCROLL_SIZE 260 Y_SCROLL_SIZE 650   initialize pointer array to reference image data: numImages N_ELEMENTS pState images  if numImages NE 0 then PTR_FREE pState images  pState images PTRARR nFiles ALLOCATE_HEAP   pState files files  loop through each file:  pState timer 1B WIDGET_CONTROL statusBase TIMER 0 01 END       PRO IMAGE_VIEWER_CANCEL event  obtain state structure for top level base from its UVALUE:     compile_opt idl2  strictarrsubs   WIDGET_CONTROL event top GET_UVALUE pState  shut off timer:  pState timer 0B END       PRO IMAGE_VIEWER_TIMER event  obtain state structure for top level base from its UVALUE:     compile_opt idl2  strictarrsubs   WIDGET_CONTROL event top GET_UVALUE pState if  pState timer EQ 1 then begin  continue processing files:   if  pState currFile LE  pState nFiles 1 then begin     i pState currFile     extension STRUPCASE STRMID pState files i STRPOS pState files i REVERSE_SEARCH 1      if extension EQ  JPG  or extension EQ  JPEG  or extension EQ  JPE  or extension EQ  JFIF  then begin       result QUERY_JPEG pState files i info        if result NE 1 then begin         dummy DIALOG_MESSAGE Selected file: pState files i                                 does not appear to be a valid JPEG file  ERROR          if  i MOD 3  EQ 0 then  pState rowBase WIDGET_BASE pState thumbBase ROW ALIGN_LEFT          if  pState currFile EQ  pState nFiles 1 then begin            last file   terminate timer:            pState timer 0B            pState currFile 0L           WIDGET_CONTROL event top DESTROY         endif else begin            increment file number and update progress slider:            pState currFile pState currFile 1           progressValue   ROUND i 1 pState increment   Exit  FROM THE MAIN MENU  terminate the program by destroying the top level base  widgetID always stored in event top :     compile_opt idl2  strictarrsubs   WIDGET_CONTROL event top DESTROY END       PRO IMAGE_VIEWER_HELP event  THIS PROCEDURE IS CALLED WHEN A USER SELECTS  Help   Help on IMAGE_VIEWER   FROM THE MAIN MENU  display a simple message:     compile_opt idl2  strictarrsubs   messageStr IMAGE_VIEWER written by AEB  2002               The purpose of this program is to provide an interactive tool that can be used               to view JPEG  BMP  GIF  PNG  and TIFF picture files   In order to provide rapid               viewing capabilities the images are loaded into memory  which can cause the               initial file access to take a bit of time while the pictures are opened and               thumbnails are created  dummy DIALOG_MESSAGE messageStr info  END       PRO IMAGE_VIEWER_THUMBS event  THIS PROCEDURE IS CALLED WHEN A USER CLICKS ON ONE OF THE THUMBNAIL PICTURES  error handling:     compile_opt idl2  strictarrsubs    ERROR_STATE CODE 0 CATCH error if error NE 0 then begin   HELP LAST_MESSAGE OUTPUT traceback   messageStr Error Caught : traceback    dummy DIALOG_MESSAGE messageStr ERROR    RETURN endif if event press EQ 1 then begin   WIDGET_CONTROL HOURGLASS    obtain state structure for top level base from its UVALUE:   WIDGET_CONTROL event top GET_UVALUE pState   WIDGET_CONTROL pState imageDraw GET_VALUE drawID   WSET drawID   TVLCT 0 0 0 0   ERASE    obtain current image data:   WIDGET_CONTROL event id GET_UVALUE fileID   imageStruct pState images fileID 1    xOffset ROUND 710 imageStruct xSize 2    yOffset ROUND 650 imageStruct ySize 2    if  pState colorMode EQ  PSEUDO  then begin     TVLCT imageStruct red imageStruct green imageStruct blue     TV TEMPORARY imageStruct image xOffset yOffset   endif else begin  pState colorMode EQ  TRUE :     if imageStruct imageColorMode EQ  PSEUDO  then begin       DEVICE DECOMPOSED 0       TVLCT imageStruct red imageStruct green imageStruct blue       TV TEMPORARY imageStruct image xOffset yOffset     endif else begin  imageStruct imageColorMode EQ  TRUE :       DEVICE DECOMPOSED 1       TV TEMPORARY imageStruct image xOffset yOffset TRUE 1     endelse   endelse   WIDGET_CONTROL pState fileText SET_VALUE pState files fileID 1  endif END       PRO IMAGE_VIEWER_CLEANUP widgetID  THIS PROCEDURE IS CALLED WHEN THE PROGRAM IS TERMINATED AND XMANAGER REGISTERS A CLEANUP:  obtain state structure for top level base from its uvalue:     compile_opt idl2  strictarrsubs   WIDGET_CONTROL widgetID GET_UVALUE pState  test for validity of state structure pointer: if PTR_VALID pState  then begin    reset original settings:    QUIET pState quietInit    ORDER pState orderInit    P BACKGROUND pState backInit   CD pState currentDir   DEVICE DECOMPOSED pState dc   TVLCT pState r pState g pState b    cleanup heap memory:   PTR_FREE TEMPORARY pState files    numImages N_ELEMENTS pState images    if numImages NE 0 then PTR_FREE pState images   PTR_FREE TEMPORARY pState images    PTR_FREE TEMPORARY pState  endif END       PRO IMAGE_VIEWER_EVENT event  THIS PROCEDURE IS CALLED WHEN A USER RESIZES THE TOP LEVEL BASE  error handling:     compile_opt idl2  strictarrsubs    ERROR_STATE CODE 0 CATCH error if error NE 0 then begin   HELP LAST_MESSAGE OUTPUT traceback   messageStr Error Caught : traceback    dummy DIALOG_MESSAGE messageStr ERROR    RETURN endif  obtain state structure for top level base from its UVALUE: WIDGET_CONTROL event top GET_UVALUE pState  reset widget size: WIDGET_CONTROL event top XSIZE pState tlbWidth YSIZE pState tlbHeight XOFFSET 0 YOFFSET 0 END       PRO IMAGE_VIEWER  error handling:     compile_opt idl2  strictarrsubs    ERROR_STATE CODE 0 CATCH error if error NE 0 then begin   HELP LAST_MESSAGE OUTPUT traceback   messageStr Error Caught : traceback    dummy DIALOG_MESSAGE messageStr ERROR     QUIET quietInit    ORDER orderInit    P BACKGROUND backInit   CD currentDir   RETURN endif  ignore beta and development build versions of IDL because string to float conversion will fail: betaTest STRPOS STRLOWCASE VERSION RELEASE beta  buildTest STRPOS STRLOWCASE VERSION RELEASE build   check to make sure the version of IDL running is 5 5 or newer: if betaTest EQ  1 and buildTest EQ  1 then begin   if FLOAT VERSION RELEASE  LT 5 5 then begin     dummy dialog_message IMAGE_VIEWER is only supported in IDL version 5 5 or newer ERROR      RETURN   endif endif  check to make sure there is adequate real estate: DEVICE GET_SCREEN_SIZE screenSize if  LONG screenSize 0 screenSize 1  LT 786432 then begin   messageStr IMAGE_VIEWER requires the computer monitor  Display  to be                 configured in  1024 x 768  mode or better    dummy DIALOG_MESSAGE messageStr    RETURN endif  check in auxiliary license: result LMGR idl_tifflzw VERSION 1 0  result LMGR idl_gif VERSION 1 0  gifFlag 1B if result NE 1 then begin   messageStr The ability to read GIF  and TIFF LZW compressed  images requires                 an auxiliary license in order to conform with the patent rights of the                 Unisys Corporation   IMAGE_VIEWER was unable to find the required                 license in this installation   Consequently  the ability to read GIF files                 will be disabled    dummy DIALOG_MESSAGE messageStr    gifFlag 0B endif  warn users of color flashing if monitor in PseudoColor mode: if  D N_COLORS LE 256 then begin   messageStr The computer monitor  Display  is currently configured in 8 bit  256 Colors                 PseudoColor mode   Due to the dynamic  read write  nature of the colormap                 system for this visual  when a colortable is loaded for an image it affects                 all visible graphics windows  including the thumbnails of other images   This                 can lead to a phenomenon known as  color flashing                 If possible  it is recommended that you exit this program  reconfigure your                 monitor in 24 bit  TrueColor  mode or better  and restart IMAGE_VIEWER    dummy DIALOG_MESSAGE messageStr  endif  obtain the current working directory: CD CURRENT currentDir if STRUPCASE VERSION OS_FAMILY  EQ  WINDOWS  then begin   executeStr cd  USERPROFILE My Documents My Pictures    cd    SPAWN executeStr pathInit HIDE   pathInit pathInit 0    result FILE_TEST pathInit READ    if result EQ 1 then begin     CD pathInit   endif else begin     result FILE_TEST C: My Documents My Pictures READ      if result EQ 1 then begin       CD C: My Documents My Pictures      endif else begin       result FILE_TEST C: READ        if result EQ 1 then CD C:      endelse   endelse endif  suppress informational messaging: quietInit QUIET  QUIET 1  make sure color decomposition is disabled: DEVICE GET_DECOMPOSED dc if  D N_COLORS GT 256 then colorMode TRUE  else colorMode PSEUDO   obtain the current color table: TVLCT r g b GET LOADCT 0 SILENT  force  ORDER 0: orderInit ORDER  ORDER 0  force  P BACKGROUND 0: backInit P BACKGROUND  P BACKGROUND 0  create GUI: tlb WIDGET_BASE TITLE Image Viewer ROW MBAR menuBar TLB_SIZE_EVENTS XOFFSET 0 YOFFSET 0    fileMenu WIDGET_BUTTON menuBar VALUE File MENU      fileBttn1 WIDGET_BUTTON fileMenu VALUE Open Picture Files EVENT_PRO image_viewer_open_files      fileBttn2 WIDGET_BUTTON fileMenu VALUE Open All In Folder EVENT_PRO image_viewer_open_folder      fileBttn3 WIDGET_BUTTON fileMenu VALUE Exit EVENT_PRO image_viewer_exit    helpMenu WIDGET_BUTTON menuBar VALUE Help MENU      helpBttn1 WIDGET_BUTTON helpMenu VALUE Help on IMAGE_VIEWER EVENT_PRO image_viewer_help    controlsBase WIDGET_BASE tlb COLUMN FRAME ALIGN_TOP      labelBase WIDGET_BASE controlsBase COLUMN SCR_XSIZE 280        thumbLabel WIDGET_LABEL labelBase ALIGN_CENTER VALUE CLICK ON THUMBNAIL TO VIEW IMAGE      thumbBase WIDGET_BASE controlsBase COLUMN ALIGN_TOP FRAME XSIZE 260 YSIZE 700                             SCROLL X_SCROLL_SIZE 260 Y_SCROLL_SIZE 650    imageBase WIDGET_BASE tlb COLUMN FRAME ALIGN_TOP      fileBase WIDGET_BASE imageBase ROW ALIGN_CENTER        fileLabel WIDGET_LABEL fileBase VALUE Current Image File           fileText WIDGET_TEXT fileBase XSIZE 75 YSIZE 1      imageDraw WIDGET_DRAW imageBase XSIZE 710 YSIZE 650 RETAIN 2   display the GUI on the computer monitor: WIDGET_CONTROL tlb REALIZE  obtain the top level base geometry: tlbGeom WIDGET_INFO tlb GEOMETRY  tlbWidth tlbGeom xsize tlbHeight tlbGeom ysize if tlbWidth EQ 0 or tlbHeight EQ 0 then begin   WIDGET_CONTROL tlb TLB_GET_SIZE tlbSize   tlbWidth tlbSize 0    tlbHeight tlbSize 1  endif  create state structure to store information needed by the other event handling procedures: pState PTR_NEW files:PTR_NEW ALLOCATE_HEAP                  images:PTR_NEW ALLOCATE_HEAP                  screenSize:screenSize quietInit:quietInit orderInit:orderInit tlb:tlb statusBase:0L                  controlsBase:controlsBase thumbBase:thumbBase fileText:fileText timer:0B nFiles:0L                  currentDir:currentDir imageDraw:imageDraw dc:dc r:r g:g b:b gifFlag:gifFlag statusSlider:0L                  backInit:backInit colorMode:colorMode tlbWidth:tlbWidth tlbHeight:tlbHeight currFile:0L                  rowBase:0L increment:0 0   store this state structure in the uvalue of the top level base  so it can be obtained by other program units: WIDGET_CONTROL tlb SET_UVALUE pState  register the GUI with the XMANAGER event handler routine: XMANAGER image_viewer tlb CLEANUP image_viewer_cleanup  END  "); 
    206206a[204] = new Array("./ToBeReviewed/IMAGE/imdisp.html", "imdisp.pro", "", "  FUNCTION IMDISP_GETPOS  ASPECT  POSITION POSITION  MARGIN MARGIN     compile_opt idl2  strictarrsubs      Compute a position vector given an aspect ratio  called by IMDISP_IMSIZE     Check arguments if  n_params  ne 1  then message   Usage: RESULT   IMDISP_GETPOS ASPECT  if  n_elements aspect  eq 0  then message   ASPECT is undefined     Check keywords if  n_elements position  eq 0  then position    0 0  0 0  1 0  1 0  if  n_elements margin  eq 0  then margin   0 1    Get range limited aspect ratio and margin input values aspect_val    float aspect 0    0 01   0 0   0L y0   round position 1     d y_vsize    0L    Compute size of image  device units  xsize   round position 2    position 0     d x_vsize    2L ysize   round position 3    position 1     d y_vsize    2L    Recompute the image position based on actual image size position   fltarr 4  position 0    x0   float d x_vsize  position 1    y0   float d y_vsize  position 2     x0   xsize    float d x_vsize  position 3     y0   ysize    float d y_vsize   END   PRO IMDISP  IMAGE  RANGE RANGE  BOTTOM BOTTOM  NCOLORS NCOLORS      MARGIN MARGIN  INTERP INTERP  DITHER DITHER  ASPECT ASPECT      POSITION POSITION  OUT_POS OUT_POS  NOSCALE NOSCALE  NORESIZE NORESIZE      ORDER ORDER  USEPOS USEPOS  CHANNEL CHANNEL      BACKGROUND BACKGROUND  ERASE ERASE      AXIS AXIS  NEGATIVE NEGATIVE  _EXTRA EXTRA_KEYWORDS     compile_opt idl2  strictarrsubs        NAME:      IMDISP     PURPOSE:      Display an image on the current graphics device       IMDISP is an advanced replacement for TV and TVSCL           Supports WIN  MAC  X  CGM  PCL  PRINTER  PS  and Z graphics devices         Image is automatically byte scaled  can be disabled         Custom byte scaling of Pseudo color images via the RANGE keyword         Pseudo  indexed  color and True color images are handled automatically         8 bit and 24 bit graphics devices  are handled automatically         Decomposed color settings are handled automatically         Image is automatically sized to fit the display  can be disabled         The  P MULTI system variable is honored for multiple image display         Image can be positioned via the POSITION keyword         Color table splitting via the BOTTOM and NCOLORS keywords         Image aspect ratio customization via the ASPECT keyword         Resized images can be resampled  default  or interpolated         Top down image display via the ORDER keyword  ORDER is ignored         Selectable display channel  R G B  via the CHANNEL keyword         Background can be set to a specified color via the BACKGROUND keyword         Screen can be erased prior to image display via the ERASE keyword         Plot axes can be drawn on the image via the AXIS keyword         Photographic negative images can be displayed via the NEGATIVE keyword      CATEGORY:      Image display     CALLING SEQUENCE:      IMDISP  IMAGE     INPUTS:      IMAGE       Array containing image data                   Pseudo  indexed  color images must have 2 dimensions                   True color images must have 3 dimensions  in either                   3  NX  NY   NX  3  NY  or  NX  NY  3  form      OPTIONAL INPUTS:      None      KEYWORD PARAMETERS:      RANGE       For Pseudo Color images only  a vector with two elements                  specifying the minimum and maximum values of the image                  array to be considered when the image is byte scaled                   default is minimum and maximum array values                   This keyword is ignored for True Color images                   or if the NOSCALE keyword is set         BOTTOM      Bottom value in the color table to be used                  for the byte scaled image                   default is 0                   This keyword is ignored if the NOSCALE keyword is set         NCOLORS     Number of colors in the color table to be used                  for the byte scaled image                   default is  D TABLE_SIZE   BOTTOM                   This keyword is ignored if the NOSCALE keyword is set         MARGIN      A scalar value specifying the margin to be maintained                  around the image in normal coordinates                   default is 0 1  or 0 025 if  P MULTI is set to display                  multiple images         INTERP      If set  the resized image will be interpolated using                  bilinear interpolation                   default is nearest neighbor sampling         DITHER      If set  true color images will be dithered when displayed                  on an 8 bit graphics device                   default is no dithering         ASPECT      A scalar value specifying the aspect ratio  height width                   for the displayed image                   default is to maintain native aspect ratio         POSITION    On input  a 4 element vector specifying the position                  of the displayed image in the form  X0 Y0 X1 Y1  in                  in normal coordinates                   default is  0 0 0 0 1 0 1 0                   See the examples below to display an image where only the                  offset and size are known  e g  MAP_IMAGE output         OUT_POS     On output  a 4 element vector specifying the position                  actually used to display the image         NOSCALE     If set  the image will not be byte scaled                   default is to byte scale the image         NORESIZE    If set  the image will not be resized                    default is to resize the image to fit the display         ORDER       If set  the image is displayed from the top down                   default is to display the image from the bottom up                   Note that the system variable  ORDER is always ignored         USEPOS      If set  the image will be sized to exactly fit a supplied                  POSITION vector  over riding ASPECT and MARGIN                   default is to honor ASPECT and MARGIN when a POSITION                  vector is supplied         CHANNEL     Display channel  Red  Green  or Blue  to be written                   0   All channels  the default                   1   Red channel                  2   Green channel                  3   Blue channel                  This keyword is only recognized by graphics devices which                  support 24 bit decomposed color  WIN  MAC  X  It is ignored                  by all other graphics devices  However True color  RGB                   images can be displayed on any device supported by IMDISP         BACKGROUND  If set to a positive integer  the background will be filled                  with the color defined by BACKGROUND         ERASE       If set  the screen contents will be erased  Note that if                   P MULTI is set to display multiple images  the screen is                  always erased when the first image is displayed         AXIS        If set  plot axes will be drawn on the image  The default                  x and y axis ranges are determined by the size of the image                   When the AXIS keyword is set  IMDISP accepts any keywords                  supported by PLOT  e g  TITLE  COLOR  CHARSIZE etc         NEGATIVE    If set  a photographic negative of the image is displayed                   The values of BOTTOM and NCOLORS are honored  This keyword                  allows True color images scanned from color negatives to be                  displayed  It also allows Pseudo color images to be displayed                  as negatives without reversing the color table  This keyword                  is ignored if the NOSCALE keyword is set      OUTPUTS:      None      OPTIONAL OUTPUTS:      None     COMMON BLOCKS:      None     SIDE EFFECTS:      The image is displayed on the current graphics device      RESTRICTIONS:      Requires IDL 5 0 or higher  square bracket array syntax      EXAMPLE:     Load test data    openr  lun  filepath ctscan dat  subdir examples data   get_lun  ctscan   bytarr 256  256   readu  lun  ctscan  free_lun  lun  openr  lun  filepath hurric dat  subdir examples data   get_lun  hurric   bytarr 440  330   readu  lun  hurric  free_lun  lun  read_jpeg  filepath rose jpg  subdir examples data  rose  help  ctscan  hurric  rose     Display single images    p multi   0  loadct  0  imdisp  hurric   erase  wait  3 0  imdisp  rose   interp   erase  wait  3 0     Display multiple images without color table splitting    works on 24 bit displays only  top 2 images are garbled on 8 bit displays     p multi    0  1  3  0  0   loadct  0  imdisp  ctscan  margin 0 02  loadct  13  imdisp  hurric  margin 0 02  imdisp  rose  margin 0 02  wait  3 0     Display multiple images with color table splitting    works on 8 bit or 24 bit displays     p multi    0  1  3  0  0   loadct  0  ncolors 64  bottom 0  imdisp  ctscan  margin 0 02  ncolors 64  bottom 0  loadct  13  ncolors 64  bottom 64  imdisp  hurric  margin 0 02  ncolors 64  bottom 64  imdisp  rose  margin 0 02  ncolors 64  bottom 128  wait  3 0     Display an image at a specific position  over riding aspect and margin    p multi   0  loadct  0  imdisp  hurric  position 0 0  0 0  1 0  0 5   usepos   erase  wait  3 0     Display an image with axis overlay    p multi   0  loadct  0  imdisp  rose   axis   erase  wait  3 0     Display an image with contour plot overlay    p multi   0  loadct  0  imdisp  hurric  out_pos out_pos   erase  contour  smooth hurric  10   edge   noerase  position out_pos       xstyle 1  ystyle 1  levels findgen 5 40 0   follow  wait  3 0     Display a small image with correct resizing    p multi   0  loadct  0  data    dist 8 1:7  1:7   imdisp  data   erase  wait  3 0  imdisp  data   interp  wait  3 0     Display a true color image without and with interpolation    p multi   0  imdisp  rose   erase  wait  3 0  imdisp  rose   interp  wait  3 0     Display a true color image as a photographic negative    imdisp  rose   negative   erase  wait  3 0     Display a true color image on PostScript output    note that color table is handled automatically     current_device    d name  set_plot   PS   device   color  bits_per_pixel 8  filename imdisp_true ps   imdisp  rose   axis  title PostScript True Color Output   device   close  set_plot  current_device     Display a pseudo color image on PostScript output    current_device    d name  set_plot   PS   device   color  bits_per_pixel 8  filename imdisp_pseudo ps   loadct  0  imdisp  hurric   axis  title PostScript Pseudo Color Output   device   close  set_plot  current_device     Display an image where only the offset and size are known     Read world elevation data  file   filepath worldelv dat  subdir examples data   openr  lun  file   get_lun  data   bytarr 360  360   readu  lun  data  free_lun  lun   Reorganize array so it spans 180W to 180E  world   data  world 0:179      data 180:     world 180:      data 0:179      Create remapped image  map_set   orthographic   isotropic   noborder  remap   map_image world  x0  y0  xsize  ysize  compress 1    Convert offset and size to position vector  pos   fltarr 4   pos 0    x0   float d x_vsize   pos 1    y0   float d y_vsize   pos 2     x0   xsize    float d x_vsize   pos 3     y0   ysize    float d y_vsize    Display the image  loadct  0  imdisp  remap  pos pos   usepos  map_continents  map_grid     MODIFICATION HISTORY:   Liam Gumley ssec wisc edu   http: cimss ssec wisc edu gumley    Id: imdisp pro v 1 47 2002 06 05 16:31:07 gumley Exp       Copyright  C  1999  2000 Liam E  Gumley     This program is free software  you can redistribute it and or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation  either version 2   of the License  or  at your option  any later version      This program is distributed in the hope that it will be useful    but WITHOUT ANY WARRANTY  without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE   See the   GNU General Public License for more details      You should have received a copy of the GNU General Public License   along with this program  if not  write to the Free Software   Foundation  Inc  59 Temple Place   Suite 330  Boston  MA  02111 1307  USA     rcs_id    Id: imdisp pro v 1 47 2002 06 05 16:31:07 gumley Exp        CHECK INPUT      Check arguments if  n_params  ne 1  then message   Usage: IMDISP  IMAGE  if  n_elements image  eq 0  then message   Argument IMAGE is undefined  if  max p multi  eq 0  then begin   if  n_elements margin  eq 0  then begin     if  n_elements position  eq 4  then margin   0 0 else margin   0 1   endif endif else begin   if  n_elements margin  eq 0  then margin   0 025 endelse if  n_elements order  eq 0  then order   0 if  n_elements channel  eq 0  then channel   0    Check position vector if  n_elements position  gt 0  then begin   if  n_elements position  ne 4  then       message   POSITION must be a 4 element vector of the form  X0  Y0  X1  Y1    if  position 0  lt 0 0  then message   POSITION 0  must be GE 0 0    if  position 1  lt 0 0  then message   POSITION 1  must be GE 0 0    if  position 2  gt 1 0  then message   POSITION 2  must be LE 1 0    if  position 3  gt 1 0  then message   POSITION 3  must be LE 1 0    if  position 0  ge position 2  then       message   POSITION 0  must be LT POSITION 2    if  position 1  ge position 3  then       message   POSITION 1  must be LT POSITION 3  endif    Check the image dimensions result   size image  ndims   result 0  if  ndims lt 2  or  ndims gt 3  then     message   IMAGE must be a Pseudo Color  2D  or True Color  3D  image array  dims   result 1:ndims     Check that 3D image array is in valid true color format true   0 if  ndims eq 3  then begin   index   where dims eq 3L  count    if  count eq 0  then       message   True Color dimensions must be  3 NX NY   NX 3 NY  or  NX NY 3    true   1   truedim   index 0  endif    Check scaling range for pseudo color images if  true eq 0  then begin   if  n_elements range  eq 0  then begin     min_value   min image  max max_value      range    min_value  max_value    endif   if  n_elements range  ne 2  then       message   RANGE keyword must be a 2 element vector  endif else begin   if  n_elements range  gt 0  then       message   RANGE keyword is not used for True Color images   continue endelse    Check for supported graphics devices names    WIN   MAC   X   CGM   PCL   PRINTER   PS   Z  result   where d name eq names  count  if  count eq 0  then message   Graphics device is not supported     Get color table information if  d flags and 256  ne 0  and  d window lt 0  then begin   window   free   pixmap   wdelete   d window endif if  n_elements bottom  eq 0  then bottom   0 if  n_elements ncolors  eq 0  then ncolors    d table_size   bottom    Get IDL version number version   float version release     Check for IDL 5 2 or higher if printer device is selected if  version lt 5 2  and  d name eq  PRINTER  then     message   IDL 5 2 or higher is required for PRINTER device support       GET RED  GREEN  AND BLUE COMPONENTS OF TRUE COLOR IMAGE    if  true eq 1  then begin     case truedim of       0 : begin             red   image 0                  grn   image 1                  blu   image 2            end       1 : begin             red   image  0                grn   image  1                blu   image  2          end       2 : begin             red   image    0              grn   image    1              blu   image    2        end   endcase   red   reform red   overwrite    grn   reform grn   overwrite    blu   reform blu   overwrite  endif      COMPUTE POSITION FOR IMAGE      Save first element of  p multi multi_first    p multi 0     Establish image position if not defined if  n_elements position  eq 0  then begin   if  max p multi  eq 0  then begin     position    0 0  0 0  1 0  1 0    endif else begin     plot   0   nodata  xstyle 4  ystyle 4  xmargin 0  0  ymargin 0  0      position    x window 0   y window 0   x window 1   y window 1    endelse endif    Erase and fill the background if required if  multi_first eq 0  then begin   if keyword_set erase  then erase   if  n_elements background  gt 0  then begin     polyfill   0 01   1 01   1 01   0 01   0 01           0 01   0 01   1 01   1 01   0 01   normal  color background 0    endif endif    Compute image aspect ratio if not defined if  n_elements aspect  eq 0  then begin   case true of     0 : result   size image      1 : result   size red    endcase   dims   result 1:2    aspect   float dims 1    float dims 0  endif    Save image xrange and yrange for axis overlays xrange    0  dims 0  yrange    0  dims 1  if  order eq 1  then yrange   reverse yrange     Set the aspect ratio and margin to fill the position window if requested if keyword_set usepos  then begin   xpos_size   float d x_vsize     position 2    position 0    ypos_size   float d y_vsize     position 3    position 1    aspect_value   ypos_size   xpos_size   margin_value   0 0 endif else begin   aspect_value   aspect   margin_value   margin endelse    Compute size of displayed image and save output position pos   position case true of   0 : imdisp_imsize  image  x0  y0  xsize  ysize  position pos            aspect aspect_value  margin margin_value   1 : imdisp_imsize    red  x0  y0  xsize  ysize  position pos            aspect aspect_value  margin margin_value endcase out_pos   pos      BYTE SCALE THE IMAGE IF REQUIRED      Choose whether to scale the image or not if  keyword_set noscale  eq 0  then begin      Scale the image   case true of     0 : scaled   imdisp_imscale image  bottom bottom  ncolors ncolors              range range  negative keyword_set negative      1 : begin           scaled_dims    size red 1:2            scaled   bytarr scaled_dims 0  scaled_dims 1  3            scaled 0  0  0    imdisp_imscale red  bottom 0  ncolors 256                negative keyword_set negative            scaled 0  0  1    imdisp_imscale grn  bottom 0  ncolors 256                negative keyword_set negative            scaled 0  0  2    imdisp_imscale blu  bottom 0  ncolors 256                negative keyword_set negative          end   endcase  endif else begin      Don t scale the image   case true of     0 : scaled   image     1 : begin           scaled_dims    size red 1:2            scaled   replicate red 0  scaled_dims 0  scaled_dims 1  3            scaled 0  0  0    red           scaled 0  0  1    grn           scaled 0  0  2    blu         end   endcase  endelse      DISPLAY IMAGE ON PRINTER DEVICE    if  d name eq  PRINTER  then begin      Display the image   case true of     0 : begin           device   index_color           tv  scaled  x0  y0  xsize xsize  ysize ysize  order order         end     1 : begin           device   true_color           tv  scaled  x0  y0  xsize xsize  ysize ysize  order order  true 3         end   endcase      Draw axes if required   if keyword_set axis  then       plot   0   nodata   noerase  position out_pos          xrange xrange  xstyle 1  yrange yrange  ystyle 1          _extra extra_keywords      Return to caller   return  endif      DISPLAY IMAGE ON GRAPHICS DEVICES WHICH HAVE SCALEABLE PIXELS    if  d flags and 1  ne 0  then begin      Display the image   case true of     0 : tv  scaled  x0  y0  xsize xsize  ysize ysize  order order     1 : begin           tvlct  r  g  b   get           loadct  0   silent           tv  scaled  x0  y0  xsize xsize  ysize ysize  order order  true 3           tvlct  r  g  b         end   endcase      Draw axes if required   if keyword_set axis  then       plot   0   nodata   noerase  position out_pos          xrange xrange  xstyle 1  yrange yrange  ystyle 1          _extra extra_keywords      Return to caller   return  endif      RESIZE THE IMAGE      Resize the image if  keyword_set noresize  eq 0  then begin   if  true eq 0  then begin     resized   imdisp_imregrid scaled  xsize  ysize  interp keyword_set interp    endif else begin     resized   replicate scaled 0  xsize  ysize  3      resized 0  0  0    imdisp_imregrid reform scaled    0  xsize  ysize          interp keyword_set interp      resized 0  0  1    imdisp_imregrid reform scaled    1  xsize  ysize          interp keyword_set interp      resized 0  0  2    imdisp_imregrid reform scaled    2  xsize  ysize          interp keyword_set interp    endelse endif else begin   resized   temporary scaled    x0   0   y0   0 endelse      GET BIT DEPTH FOR THIS DISPLAY      If this device supports windows  make sure a window has been opened if  d flags and 256  ne 0 then begin   if  d window lt 0  then begin     window   free   pixmap     wdelete   d window   endif endif    Set default display depth depth   8    Get actual bit depth on supported displays if  d name eq  WIN  or  d name eq  MAC  or  d name eq  X  then begin   if  version ge 5 1  then begin     device  get_visual_depth depth   endif else begin     if  d n_colors gt 256  then depth   24   endelse endif      SELECT DECOMPOSED COLOR MODE  ON OR OFF  FOR 24 BIT DISPLAYS    if  d name eq  WIN  or  d name eq  MAC  or  d name eq  X  then begin   if  depth gt 8  then begin     if  version ge 5 2  then device  get_decomposed entry_decomposed else         entry_decomposed   0     if  true eq 1  or  channel gt 0  then device  decomposed 1 else         device  decomposed 0   endif endif      DISPLAY THE IMAGE      If the display is 8 bit and the image is true color    convert image from true color to indexed color if  depth le 8  and  true eq 1  then begin   resized   color_quan temporary resized  3  r  g  b        colors ncolors  dither keyword_set dither    byte bottom    tvlct  r  g  b  bottom   true   0 endif    Set channel value for supported devices if  d name eq  WIN  or  d name eq  MAC  or  d name eq  X  then begin   channel_value   channel endif else begin   channel_value   0 endelse    Display the image case true of   0 : tv  resized  x0  y0  order order  channel channel_value   1 : tv  resized  x0  y0  order order  true 3 endcase      RESTORE THE DECOMPOSED COLOR MODE FOR 24 BIT DISPLAYS    if  d name eq  WIN  or  d name eq  MAC  or  d name eq  X  and      depth gt 8  then begin   device  decomposed entry_decomposed   if  d name eq  MAC  then tv   0   1   1 endif      DRAW AXES IF REQUIRED    if keyword_set axis  then     plot   0   nodata   noerase  position out_pos        xrange xrange  xstyle 1  yrange yrange  ystyle 1        _extra extra_keywords  END"); 
    207 a[205] = new Array("./ToBeReviewed/IMAGE/saveimage.html", "saveimage.pro", "", "PRO SAVEIMAGE  FILE  BMP BMP  PNG PNG  PICT PICT  JPEG JPEG  TIFF TIFF      QUALITY QUALITY  DITHER DITHER  CUBE CUBE  QUIET QUIET  MULTIPLE   multiple     compile_opt idl2  strictarrsubs        NAME:      SAVEIMAGE     PURPOSE:      Save the current graphics window to an output file  GIF by default         The output formats supported are:      GIF   8 bit with color table       BMP   8 bit with color table       PNG   8 bit with color table       PICT  8 bit with color table       JPEG 24 bit true color       TIFF 24 bit true color         Any conversions necessary to convert 8 bit or 24 bit images onscreen to      8 bit or 24 bit output files are done automatically      CATEGORY:      Input Output      CALLING SEQUENCE:      SAVEIMAGE  FILE     INPUTS:      FILE     Name of the output file  GIF format by default      OPTIONAL INPUTS:      None      KEYWORD PARAMETERS:      BMP      Set this keyword to create BMP format  8 bit with color table       PNG      Set this keyword to create PNG format  8 bit with color table       PICT     Set this keyword to create PICT format  8 bit with color table       JPEG     Set this keyword to create JPEG format  24 bit true color       TIFF     Set this keyword to create TIFF format  24 bit true color       QUALITY  If set to a named variable  specifies the quality for               JPEG output  default 75  Ranges from 0  terrible  to               100  excellent  Smaller quality values yield higher               compression ratios and smaller output files       DITHER   If set  dither the output image when creating 8 bit output               which is read from a 24 bit display  default is no dithering       CUBE     If set  use the color cube method to quantize colors when               creating 8 bit output which is read from a 24 bit display                default is to use the statistical method  This may improve               the accuracy of colors in the output image  especially white       QUIET    Set this keyword to suppress the information message                default is to print an information message       MULTIPLE to write multiple gif image     OUTPUTS:      None      OPTIONAL OUTPUTS:      None     COMMON BLOCKS:      None     SIDE EFFECTS:      The output file is overwritten if it exists      RESTRICTIONS:      Requires IDL 5 0 or higher  square bracket array syntax      EXAMPLE:    openr  lun  filepath hurric dat  subdir examples data   get_lun  image   bytarr 440  330   readu  lun  image  free_lun  lun  loadct  13  tvscl  image  saveimage   hurric gif      MODIFICATION HISTORY:   Liam Gumley ssec wisc edu   http: cimss ssec wisc edu gumley    Id: saveimage pro 69 2006 05 11 10:35:53Z smasson       Copyright  C  1999 Liam E  Gumley     This program is free software  you can redistribute it and or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation  either version 2   of the License  or  at your option  any later version      This program is distributed in the hope that it will be useful    but WITHOUT ANY WARRANTY  without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE   See the   GNU General Public License for more details      You should have received a copy of the GNU General Public License   along with this program  if not  write to the Free Software   Foundation  Inc  59 Temple Place   Suite 330  Boston  MA  02111 1307  USA     rcs_id    Id: saveimage pro 69 2006 05 11 10:35:53Z smasson        CHECK INPUT      Check arguments if  n_params  ne 1  then message   Usage: SAVEIMAGE  FILE  if  n_elements file  eq 0  then message   Argument FILE is undefined  if  n_elements file  gt 1  then message   Argument FILE must be a scalar string     Check keywords output    GIF  if keyword_set bmp   then output    BMP  if keyword_Set png   then output    PNG  if keyword_set pict  then output    PICT  if keyword_set jpeg  then output    JPEG  if keyword_set tiff  then output    TIFF  if  n_elements quality  eq 0  then quality   75    Check for TVRD capable device if  d flags and 128  eq 0 then message   Unsupported graphics device     Check for open window if  d flags and 256  ne 0 then begin   if  d window lt 0  then message   No graphics windows are open  endif    Get display depth depth   8 if  d n_colors gt 256  then depth   24      GET CONTENTS OF GRAPHICS WINDOW      Handle window devices  other than the Z buffer  if  d flags and 256  ne 0 then begin      Copy the contents of the current display to a pixmap   current_window    d window   xsize    d x_size   ysize    d y_size   window   free   pixmap  xsize xsize  ysize ysize  retain 2   device  copy 0  0  xsize  ysize  0  0  current_window       Set decomposed color mode for 24 bit displays   version   float version release    if  depth gt 8  then begin     if  version gt 5 1  then device  get_decomposed entry_decomposed     device  decomposed 1   endif  endif    Read the pixmap contents into an array if  depth gt 8  then begin   image   tvrd order 0  true 1  endif else begin   image   tvrd order 0  endelse    Handle window devices  other than the Z buffer  if  d flags and 256  ne 0 then begin      Restore decomposed color mode for 24 bit displays   if  depth gt 8  then begin     if  version gt 5 1  then begin       device  decomposed entry_decomposed     endif else begin       device  decomposed 0       if  keyword_set quiet  eq 0  then           print   Decomposed color was turned off      endelse   endif      Delete the pixmap   wdelete   d window   wset  current_window  endif    Get the current color table tvlct  r  g  b   get    If an 8 bit image was read  reduce the number of colors if  depth le 8  then begin   reduce_colors  image  index   r   r index    g   g index    b   b index  endif      WRITE OUTPUT FILE    case 1 of      Save the image in 8 bit output format    output eq  GIF   or  output eq  BMP  or      output eq  PICT  or  output eq  PNG  : begin      if  depth gt 8  then begin          Convert 24 bit image to 8 bit       case keyword_set cube  of         0 : image   color_quan image  1  r  g  b  colors 256                  dither keyword_set dither          1 : image   color_quan image  1  r  g  b  cube 6        endcase          Sort the color table from darkest to brightest       table_sum   total long r   long g   long b  2        table_index   sort table_sum        image_index   sort table_index        r   r table_index        g   g table_index        b   b table_index        oldimage   image       image    image_index temporary oldimage       endif        Save the image     case output of        GIF   : write_gif   file  image  r  g  b  MULTIPLE   multiple        BMP   : write_bmp   file  image  r  g  b        PNG   : write_png   file  image  r  g  b        PICT  : write_pict  file  image  r  g  b     endcase    end      Save the image in 24 bit output format    output eq  JPEG  or  output eq  TIFF  : begin        Convert 8 bit image to 24 bit     if  depth le 8  then begin       info   size image        nx   info 1        ny   info 2        true   bytarr 3  nx  ny        true 0        r image        true 1        g image        true 2        b image        image   temporary true      endif        If TIFF format output  reverse image top to bottom     if  output eq  TIFF  then image   reverse temporary image  3         Write the image     case output of        JPEG  : write_jpeg  file  image  true 1  quality quality        TIFF  : write_tiff  file  image  1     endcase    end  endcase    Print information for the user if  keyword_set quiet  eq 0  then     print  file  output  format Created  a  in  a  format   END"); 
    208 a[206] = new Array("./ToBeReviewed/IMAGE/showimage.html", "showimage.pro", "", "PRO SHOWIMAGE  FILE  DITHER DITHER  CURRENT CURRENT     compile_opt idl2  strictarrsubs        NAME:      SHOWIMAGE     PURPOSE:      Show the contents of a graphics file in the current window         The input formats supported are:      GIF   8 bit with color table       BMP   8 bit with color table or 24 bit true color       PICT  8 bit with color table       TIFF  8 bit with color table or 24 bit true color       JPEG 24 bit true color         Any conversions necessary to translate 8 bit or 24 bit files      to 8 bit or 24 bit images on screen are done automatically      CATEGORY:      Input Output      CALLING SEQUENCE:      SHOWIMAGE  FILE     INPUTS:      FILE     Name of the output file  format is identified automatically      OPTIONAL INPUTS:      None      KEYWORD PARAMETERS:      DITHER   Set this keyword to dither the input image when displaying               24 bit images on an 8 bit display  default is no dithering       CURRENT  Set this keyword to display the image in the current window                default is to create a new window sized to fit the image      OUTPUTS:      None      OPTIONAL OUTPUTS:      None     COMMON BLOCKS:      None     SIDE EFFECTS:      The color table is modified      RESTRICTIONS:      Requires IDL 5 2 or higher  image QUERY functions      EXAMPLE:    showimage  filepath rose jpg  subdir examples data      MODIFICATION HISTORY:   Liam Gumley ssec wisc edu   http: cimss ssec wisc edu gumley    Id: showimage pro 69 2006 05 11 10:35:53Z smasson       Copyright  C  1999 Liam E  Gumley     This program is free software  you can redistribute it and or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation  either version 2   of the License  or  at your option  any later version      This program is distributed in the hope that it will be useful    but WITHOUT ANY WARRANTY  without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE   See the   GNU General Public License for more details      You should have received a copy of the GNU General Public License   along with this program  if not  write to the Free Software   Foundation  Inc  59 Temple Place   Suite 330  Boston  MA  02111 1307  USA     rcs_id    Id: showimage pro 69 2006 05 11 10:35:53Z smasson        CHECK INPUT      Check IDL version  if float version release  lt 5 2 then begin   message   IDL 5 2 or higher is required   continue   return endif    Check input arguments  case 1 of   n_params  ne 1           : error    Usage: SHOWIMAGE  FILE    n_elements file  eq 0     : error    Argument FILE is undefined    n_elements file  gt 1     : error    Argument FILE must be a scalar string     findfile file 0  eq   : error    Argument FILE was not found    else                      : error     endcase  if error ne   then begin   message  error   continue   return endif      CHECK THE GRAPHICS DEVICE      Check for device supporting windows and tvrd   if  d flags and 256  eq 0  or  d flags and 128  eq 0  then begin   error   string d name  format Graphics device  a  is not supported    message  error   continue   return endif    Make sure a window has been opened in this session and get visual depth  if  d window lt 0 then begin   window   free   pixmap  xsize 20  ysize 20   wdelete   d window endif device  get_visual_depth depth    If 8 bit display is low on colors  print a message  if  depth eq 8  and  d table_size  lt 64 then message       Display has less than 64 colors  image quality may degrade   continue      IDENTIFY FILE AND READ IMAGE      Identify the file format  result   query_gif file  info  if result eq 0 then result   query_bmp file  info  if result eq 0 then result   query_pict file  info  if result eq 0 then result   query_tiff file  info  if result eq 0 then result   query_jpeg file  info  if result eq 0 then begin   message   File format not recognized   continue   return endif    Fix the channel information for GIF images  if info type eq  GIF  then info channels   1    Read the image  case info type of     GIF  : read_gif  file  image  r  g  b     BMP  : begin     if info channels eq 1 then begin       image   read_bmp file  r  g  b      endif else begin       image   read_bmp file        image   reverse temporary image  1      endelse   end     PICT  : read_pict  file  image  r  g  b     TIFF  : begin     if info channels eq 1 then begin       image   read_tiff file  r  g  b  order order        image   reverse temporary image  2      endif else begin       image   read_tiff file  order order        image   reverse temporary image  3      endelse   end     JPEG  : read_jpeg  file  image  endcase    If an 8 bit image was read  reduce the number of colors  if info channels eq 1 then begin   reduce_colors  image  index   r   r index    g   g index    b   b index  endif    Get image size  dims   size image   dimensions  if n_elements dims  eq 2 then begin   nx   dims 0    ny   dims 1  endif else begin   nx   dims 1    ny   dims 2  endelse      CREATE A WINDOW      Create a draw widget sized to fit the image  if not keyword_set current  then begin      Set default window size    scroll   0   xsize   nx   ysize   ny   draw_xsize   nx   draw_ysize   ny      Adjust the window size if the image is too large    device  get_screen_size screen   screen_xsize   screen 0    screen_ysize   screen 1    if  nx gt screen_xsize  then begin     xsize   0 9   screen_xsize     scroll   1   endif   if  ny gt screen_ysize  then begin     ysize   0 9   screen_ysize     scroll   1   endif      Create the draw widget    base   widget_base title file    draw   widget_draw base  scroll scroll    widget_control  draw  xsize xsize  ysize ysize        draw_xsize draw_xsize  draw_ysize draw_ysize  endif      HANDLE IDL 8 BIT MODE    if depth eq 8 then begin      If the color table of an 8 bit image is larger than     the current display table  convert the image to 24 bit    if  info channels eq 1  and  n_elements r  gt  d table_size  then begin        Convert to 24 bit      dims   size image   dimensions      nx   dims 0      ny   dims 1      true   bytarr 3  nx  ny      true 0        r image      true 1        g image      true 2        b image      image   temporary true         Reset the number of channels      info channels   3    endif      If image is 24 bit  convert to 8 bit    if info channels eq 3 then begin        Convert 24 bit image to 8 bit      image   color_quan image  1  r  g  b  colors d table_size          dither keyword_set dither         Sort the color table from darkest to brightest      table_sum   total long r   long g   long b  2      table_index   sort table_sum      image_index   sort table_index      r   r table_index      g   g table_index      b   b table_index      oldimage   image     image    image_index temporary oldimage         Reset the number of channels      info channels   1    endif  endif      DISPLAY THE IMAGE      Realize the draw widget  if not keyword_set current  then widget_control  base   realize    Save current decomposed mode and display order  device  get_decomposed current_decomposed current_order    order    Set image to display from bottom up   order   0    Display the image  if info channels eq 1 then begin    device  decomposed 0   tvlct  r  g  b   tv  image  endif else begin    device  decomposed 1   tv  image  true 1  endelse    Restore decomposed mode and display order  device  decomposed current_decomposed  order   current_order  END"); 
     207a[205] = new Array("./ToBeReviewed/IMAGE/saveimage.html", "saveimage.pro", "", "PRO SAVEIMAGE  FILE  BMP BMP  PNG PNG  PICT PICT  JPEG JPEG  TIFF TIFF      QUALITY QUALITY  DITHER DITHER  CUBE CUBE  QUIET QUIET  MULTIPLE   multiple     compile_opt idl2  strictarrsubs        NAME:      SAVEIMAGE     PURPOSE:      Save the current graphics window to an output file  GIF by default         The output formats supported are:      GIF   8 bit with color table       BMP   8 bit with color table       PNG   8 bit with color table       PICT  8 bit with color table       JPEG 24 bit true color       TIFF 24 bit true color         Any conversions necessary to convert 8 bit or 24 bit images onscreen to      8 bit or 24 bit output files are done automatically      CATEGORY:      Input Output      CALLING SEQUENCE:      SAVEIMAGE  FILE     INPUTS:      FILE     Name of the output file  GIF format by default      OPTIONAL INPUTS:      None      KEYWORD PARAMETERS:      BMP      Set this keyword to create BMP format  8 bit with color table       PNG      Set this keyword to create PNG format  8 bit with color table       PICT     Set this keyword to create PICT format  8 bit with color table       JPEG     Set this keyword to create JPEG format  24 bit true color       TIFF     Set this keyword to create TIFF format  24 bit true color       QUALITY  If set to a named variable  specifies the quality for               JPEG output  default 75  Ranges from 0  terrible  to               100  excellent  Smaller quality values yield higher               compression ratios and smaller output files       DITHER   If set  dither the output image when creating 8 bit output               which is read from a 24 bit display  default is no dithering       CUBE     If set  use the color cube method to quantize colors when               creating 8 bit output which is read from a 24 bit display                default is to use the statistical method  This may improve               the accuracy of colors in the output image  especially white       QUIET    Set this keyword to suppress the information message                default is to print an information message       MULTIPLE to write multiple gif image     OUTPUTS:      None      OPTIONAL OUTPUTS:      None     COMMON BLOCKS:      None     SIDE EFFECTS:      The output file is overwritten if it exists      RESTRICTIONS:      Requires IDL 5 0 or higher  square bracket array syntax      EXAMPLE:    openr  lun  filepath hurric dat  subdir examples data   get_lun  image   bytarr 440  330   readu  lun  image  free_lun  lun  loadct  13  tvscl  image  saveimage   hurric gif      MODIFICATION HISTORY:   Liam Gumley ssec wisc edu   http: cimss ssec wisc edu gumley    Id: saveimage pro 114 2006 06 19 14:14:56Z smasson       Copyright  C  1999 Liam E  Gumley     This program is free software  you can redistribute it and or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation  either version 2   of the License  or  at your option  any later version      This program is distributed in the hope that it will be useful    but WITHOUT ANY WARRANTY  without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE   See the   GNU General Public License for more details      You should have received a copy of the GNU General Public License   along with this program  if not  write to the Free Software   Foundation  Inc  59 Temple Place   Suite 330  Boston  MA  02111 1307  USA     rcs_id    Id: saveimage pro 114 2006 06 19 14:14:56Z smasson        CHECK INPUT      Check arguments if  n_params  ne 1  then message   Usage: SAVEIMAGE  FILE  if  n_elements file  eq 0  then message   Argument FILE is undefined  if  n_elements file  gt 1  then message   Argument FILE must be a scalar string     Check keywords output    GIF  if keyword_set bmp   then output    BMP  if keyword_Set png   then output    PNG  if keyword_set pict  then output    PICT  if keyword_set jpeg  then output    JPEG  if keyword_set tiff  then output    TIFF  if  n_elements quality  eq 0  then quality   75    Check for TVRD capable device if  d flags and 128  eq 0 then message   Unsupported graphics device     Check for open window if  d flags and 256  ne 0 then begin   if  d window lt 0  then message   No graphics windows are open  endif    Get display depth depth   8 if  d n_colors gt 256  then depth   24      GET CONTENTS OF GRAPHICS WINDOW      Handle window devices  other than the Z buffer  if  d flags and 256  ne 0 then begin      Copy the contents of the current display to a pixmap   current_window    d window   xsize    d x_size   ysize    d y_size   window   free   pixmap  xsize xsize  ysize ysize  retain 2   device  copy 0  0  xsize  ysize  0  0  current_window       Set decomposed color mode for 24 bit displays   version   float version release    if  depth gt 8  then begin     if  version gt 5 1  then device  get_decomposed entry_decomposed     device  decomposed 1   endif  endif    Read the pixmap contents into an array if  depth gt 8  then begin   image   tvrd order 0  true 1  endif else begin   image   tvrd order 0  endelse    Handle window devices  other than the Z buffer  if  d flags and 256  ne 0 then begin      Restore decomposed color mode for 24 bit displays   if  depth gt 8  then begin     if  version gt 5 1  then begin       device  decomposed entry_decomposed     endif else begin       device  decomposed 0       if  keyword_set quiet  eq 0  then           print   Decomposed color was turned off      endelse   endif      Delete the pixmap   wdelete   d window   wset  current_window  endif    Get the current color table tvlct  r  g  b   get    If an 8 bit image was read  reduce the number of colors if  depth le 8  then begin   reduce_colors  image  index   r   r index    g   g index    b   b index  endif      WRITE OUTPUT FILE    case 1 of      Save the image in 8 bit output format    output eq  GIF   or  output eq  BMP  or      output eq  PICT  or  output eq  PNG  : begin      if  depth gt 8  then begin          Convert 24 bit image to 8 bit       case keyword_set cube  of         0 : image   color_quan image  1  r  g  b  colors 256                  dither keyword_set dither          1 : image   color_quan image  1  r  g  b  cube 6        endcase          Sort the color table from darkest to brightest       table_sum   total long r   long g   long b  2        table_index   sort table_sum        image_index   sort table_index        r   r table_index        g   g table_index        b   b table_index        oldimage   image       image    image_index temporary oldimage       endif        Save the image     case output of        GIF   : write_gif   file  image  r  g  b  MULTIPLE   multiple        BMP   : write_bmp   file  image  r  g  b        PNG   : write_png   file  image  r  g  b        PICT  : write_pict  file  image  r  g  b     endcase    end      Save the image in 24 bit output format    output eq  JPEG  or  output eq  TIFF  : begin        Convert 8 bit image to 24 bit     if  depth le 8  then begin       info   size image        nx   info 1        ny   info 2        true   bytarr 3  nx  ny        true 0        r image        true 1        g image        true 2        b image        image   temporary true      endif        If TIFF format output  reverse image top to bottom     if  output eq  TIFF  then image   reverse temporary image  3         Write the image     case output of        JPEG  : write_jpeg  file  image  true 1  quality quality        TIFF  : write_tiff  file  image  1     endcase    end  endcase    Print information for the user if  keyword_set quiet  eq 0  then     print  file  output  format Created  a  in  a  format   END"); 
     208a[206] = new Array("./ToBeReviewed/IMAGE/showimage.html", "showimage.pro", "", "PRO SHOWIMAGE  FILE  DITHER DITHER  CURRENT CURRENT     compile_opt idl2  strictarrsubs        NAME:      SHOWIMAGE     PURPOSE:      Show the contents of a graphics file in the current window         The input formats supported are:      GIF   8 bit with color table       BMP   8 bit with color table or 24 bit true color       PICT  8 bit with color table       TIFF  8 bit with color table or 24 bit true color       JPEG 24 bit true color         Any conversions necessary to translate 8 bit or 24 bit files      to 8 bit or 24 bit images on screen are done automatically      CATEGORY:      Input Output      CALLING SEQUENCE:      SHOWIMAGE  FILE     INPUTS:      FILE     Name of the output file  format is identified automatically      OPTIONAL INPUTS:      None      KEYWORD PARAMETERS:      DITHER   Set this keyword to dither the input image when displaying               24 bit images on an 8 bit display  default is no dithering       CURRENT  Set this keyword to display the image in the current window                default is to create a new window sized to fit the image      OUTPUTS:      None      OPTIONAL OUTPUTS:      None     COMMON BLOCKS:      None     SIDE EFFECTS:      The color table is modified      RESTRICTIONS:      Requires IDL 5 2 or higher  image QUERY functions      EXAMPLE:    showimage  filepath rose jpg  subdir examples data      MODIFICATION HISTORY:   Liam Gumley ssec wisc edu   http: cimss ssec wisc edu gumley    Id: showimage pro 114 2006 06 19 14:14:56Z smasson       Copyright  C  1999 Liam E  Gumley     This program is free software  you can redistribute it and or   modify it under the terms of the GNU General Public License   as published by the Free Software Foundation  either version 2   of the License  or  at your option  any later version      This program is distributed in the hope that it will be useful    but WITHOUT ANY WARRANTY  without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE   See the   GNU General Public License for more details      You should have received a copy of the GNU General Public License   along with this program  if not  write to the Free Software   Foundation  Inc  59 Temple Place   Suite 330  Boston  MA  02111 1307  USA     rcs_id    Id: showimage pro 114 2006 06 19 14:14:56Z smasson        CHECK INPUT      Check IDL version  if float version release  lt 5 2 then begin   message   IDL 5 2 or higher is required   continue   return endif    Check input arguments  case 1 of   n_params  ne 1           : error    Usage: SHOWIMAGE  FILE    n_elements file  eq 0     : error    Argument FILE is undefined    n_elements file  gt 1     : error    Argument FILE must be a scalar string     findfile file 0  eq   : error    Argument FILE was not found    else                      : error     endcase  if error ne   then begin   message  error   continue   return endif      CHECK THE GRAPHICS DEVICE      Check for device supporting windows and tvrd   if  d flags and 256  eq 0  or  d flags and 128  eq 0  then begin   error   string d name  format Graphics device  a  is not supported    message  error   continue   return endif    Make sure a window has been opened in this session and get visual depth  if  d window lt 0 then begin   window   free   pixmap  xsize 20  ysize 20   wdelete   d window endif device  get_visual_depth depth    If 8 bit display is low on colors  print a message  if  depth eq 8  and  d table_size  lt 64 then message       Display has less than 64 colors  image quality may degrade   continue      IDENTIFY FILE AND READ IMAGE      Identify the file format  result   query_gif file  info  if result eq 0 then result   query_bmp file  info  if result eq 0 then result   query_pict file  info  if result eq 0 then result   query_tiff file  info  if result eq 0 then result   query_jpeg file  info  if result eq 0 then begin   message   File format not recognized   continue   return endif    Fix the channel information for GIF images  if info type eq  GIF  then info channels   1    Read the image  case info type of     GIF  : read_gif  file  image  r  g  b     BMP  : begin     if info channels eq 1 then begin       image   read_bmp file  r  g  b      endif else begin       image   read_bmp file        image   reverse temporary image  1      endelse   end     PICT  : read_pict  file  image  r  g  b     TIFF  : begin     if info channels eq 1 then begin       image   read_tiff file  r  g  b  order order        image   reverse temporary image  2      endif else begin       image   read_tiff file  order order        image   reverse temporary image  3      endelse   end     JPEG  : read_jpeg  file  image  endcase    If an 8 bit image was read  reduce the number of colors  if info channels eq 1 then begin   reduce_colors  image  index   r   r index    g   g index    b   b index  endif    Get image size  dims   size image   dimensions  if n_elements dims  eq 2 then begin   nx   dims 0    ny   dims 1  endif else begin   nx   dims 1    ny   dims 2  endelse      CREATE A WINDOW      Create a draw widget sized to fit the image  if not keyword_set current  then begin      Set default window size    scroll   0   xsize   nx   ysize   ny   draw_xsize   nx   draw_ysize   ny      Adjust the window size if the image is too large    device  get_screen_size screen   screen_xsize   screen 0    screen_ysize   screen 1    if  nx gt screen_xsize  then begin     xsize   0 9   screen_xsize     scroll   1   endif   if  ny gt screen_ysize  then begin     ysize   0 9   screen_ysize     scroll   1   endif      Create the draw widget    base   widget_base title file    draw   widget_draw base  scroll scroll    widget_control  draw  xsize xsize  ysize ysize        draw_xsize draw_xsize  draw_ysize draw_ysize  endif      HANDLE IDL 8 BIT MODE    if depth eq 8 then begin      If the color table of an 8 bit image is larger than     the current display table  convert the image to 24 bit    if  info channels eq 1  and  n_elements r  gt  d table_size  then begin        Convert to 24 bit      dims   size image   dimensions      nx   dims 0      ny   dims 1      true   bytarr 3  nx  ny      true 0        r image      true 1        g image      true 2        b image      image   temporary true         Reset the number of channels      info channels   3    endif      If image is 24 bit  convert to 8 bit    if info channels eq 3 then begin        Convert 24 bit image to 8 bit      image   color_quan image  1  r  g  b  colors d table_size          dither keyword_set dither         Sort the color table from darkest to brightest      table_sum   total long r   long g   long b  2      table_index   sort table_sum      image_index   sort table_index      r   r table_index      g   g table_index      b   b table_index      oldimage   image     image    image_index temporary oldimage         Reset the number of channels      info channels   1    endif  endif      DISPLAY THE IMAGE      Realize the draw widget  if not keyword_set current  then widget_control  base   realize    Save current decomposed mode and display order  device  get_decomposed current_decomposed current_order    order    Set image to display from bottom up   order   0    Display the image  if info channels eq 1 then begin    device  decomposed 0   tvlct  r  g  b   tv  image  endif else begin    device  decomposed 1   tv  image  true 1  endelse    Restore decomposed mode and display order  device  decomposed current_decomposed  order   current_order  END"); 
    209209a[207] = new Array("./ToBeReviewed/INIT/initncdf.html", "initncdf.pro", "", "          NAME:initncdf     PURPOSE:initfile for Netcdf file  define all the grid parameters     CATEGORY:     CALLING SEQUENCE:initncdf  ncfilename      INPUTS:ncfilename: a string giving the name of the NetCdf file     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 defined according to GLAMBOUNDARY             INVMASK: to inverse the mask: mask   1 mask           IODIRECTORY a string giving the name of iodirectory  see         isafile pro for all possibilities  default value is common          variable iodir           MASKNAME: a string giving the name of the variable in the file          that contains the land sea mask           MISSING_VALUE: to define  or redifine if the attribute is         already existing  the missing values used with USEASMASK         keyword            start1: index the axis from 1 instead of 0 when using          xyindex and or zindex           USEASMASK: a string giving the name of the variable in the file          that will be used to build the land sea mask  In this case the         mask is based on the first record  if record dimension         exists  The mask is build according to :           1 the keyword missing_value if existing           2 the attribute  missing_value  if existing           3 NaN values if existing            XYZ AXISNAME  a string giving the name of the variable in the file          that contains the  xyz axis           for X axis  default name must be  x   longitude   nav_lon  or  lon          for Y axis  default name must be  y   latitude   nav_lat  or  lat          for Z axis  default name must be  z   level   lev   depth             XYZ MINMESH: to define the common variables i xyz minmesh         used to define the grid only in a zoomed part of the original         grid  Defaut values are 0L            XYZ MAXMESH: to define the common variables i xyz maxmesh         used to define the grid only in a zoomed part of the original         grid  Defaut values are jp ijk glo 1            xyindex: to define the x y axis with index instead of using         the values contained in X YAXISNAME           x yaxis   keyword_set start1    findgen jpi jpj           this forces key_onearth   0            zindex: to define the z axis with index instead of using         the values contained in ZAXISNAME           zaxis   keyword_set start1    findgen jpk       OUTPUTS:none  except the grid parameters of the common pro     COMMON BLOCKS:common pro     SIDE EFFECTS:change the grid parameters of the common pro     RESTRICTIONS:   the file must contain an x and an y axis   1 ou 2 dimentional array      EXAMPLE: IDL  initncdf toto nc glam 180 180      MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         8 May 2002         PRO initncdf  ncfilein  XAXISNAME   xaxisname  YAXISNAME   yaxisname                   ZAXISNAME   zaxisname  MASKNAME   maskname                   INVMASK   invmask  USEASMASK   useasmask                   MISSING_VALUE   missing_value  START1   start1                   XYINDEX   xyindex  ZINDEX   zindex                   _EXTRA   ex       compile_opt idl2  strictarrsubs    common     check the name of the file   ncfile   isafile FILENAME   ncfilein  IODIRECTORY   iodir  _extra   ex    if size ncfile   type  NE 7 then BEGIN     print   initncdf cancelled      return   endif   if the file is stored on tape   if  version os_family EQ  unix  then spawn   file  ncfile     dev null       open the file   cdfid   ncdf_open ncfile    what is inside the file   inside   ncdf_inquire cdfid      name of the variables   namevar   strarr inside nvars    for varid   0  inside nvars 1 do begin     invar   ncdf_varinq cdfid  varid      namevar varid    strlowcase invar name    ENDFOR     find the xaxis   if keyword_set xaxisname  then xaxisname   strlowcase xaxisname  ELSE xaxisname    x    xvarid   where namevar EQ xaxisname OR namevar EQ  longitude                     OR namevar EQ  nav_lon  OR namevar EQ  lon    xvarid   xvarid 0    if xvarid EQ  1 then begin     print   the xaxis was not found  check the use of XAXISNAME keyword      stop   endif   get the size of xaxis   xinq   ncdf_varinq cdfid  xvarid    ncdf_diminq  cdfid  xinq dim 0  blabla  jpifromx   should we read or compute the xaxis    IF NOT keyword_set xyindex  THEN BEGIN   read the xaxis     ncdf_varget  cdfid  xvarid  xaxis   make sure of the shape of xaxis     IF xinq ndims GE 2 THEN BEGIN       ncdf_diminq  cdfid  xinq dim 1  blabla  jpjfromx       xaxis   reform xaxis  jpifromx  jpjfromx   over      ENDIF   ENDIF ELSE xaxis   keyword_set start1    findgen jpifromx      find the yaxis   if keyword_set yaxisname  then yaxisname   strlowcase yaxisname  ELSE yaxisname    y    yvarid   where namevar EQ yaxisname OR namevar EQ  latitude  OR namevar EQ  nav_lat  OR namevar EQ  lat    yvarid   yvarid 0    if yvarid EQ  1 then begin     print   the yaxis was not found  check the use of YAXISNAME keyword      stop   endif   get the size of yaxis and check it is ok with the values found for x   yinq   ncdf_varinq cdfid  yvarid    IF xinq ndims GE 2 THEN BEGIN     ncdf_diminq  cdfid  yinq dim 0  blabla  jpifromy     ncdf_diminq  cdfid  yinq dim 1  blabla  jpjfromy     IF jpifromy NE jpifromx THEN BEGIN        print   xaxis and y axis do not have the same x dimension      ENDIF   ENDIF ELSE ncdf_diminq  cdfid  yinq dim 0  blabla  jpjfromy   IF n_elements jpjfromx  NE 0 THEN BEGIN     IF jpjfromy NE jpjfromx THEN BEGIN        print   xaxis and y axis do not have the same y dimension      ENDIF       ENDIF   should we read or compute the xaxis    IF NOT keyword_set xyindex  THEN BEGIN   read the yaxis     ncdf_varget  cdfid  yvarid  yaxis   make sure of the shape of xaxis     IF xinq ndims GE 2 THEN yaxis   reform yaxis  jpifromy  jpjfromy   over    ENDIF ELSE yaxis   keyword_set start1    findgen jpjfromy      find the zaxis   if keyword_set zaxisname  then zaxisname   strlowcase zaxisname  ELSE zaxisname    z    zvarid   where namevar EQ  nav_lev  or namevar EQ zaxisname OR namevar EQ  level  OR namevar EQ  lev  OR strmid namevar  0  5  EQ  depth    zvarid   zvarid 0    if zvarid EQ  1 AND inside ndims GT 3 then begin     print   initncdf: the zaxis was not found  check the the use of ZAXISNAME keyword if you whant to find one        stop   endif   read the zaxis   if zvarid NE  1 THEN ncdf_varget  cdfid  zvarid  zaxis   IF keyword_set zindex  THEN       zaxis   keyword_set start1    findgen n_elements zaxis      mask   CASE 1 OF     keyword_set maskname :BEGIN       mskid    where namevar EQ strlowcase maskname 0        if mskid NE  1 THEN BEGIN          mskinq   ncdf_varinq cdfid  mskid    is the mask variable containing the record dimension          withrcd    where mskinq dim EQ inside recdim 0          IF withrcd NE  1 THEN BEGIN   in order to read only the first record             we need to get the size of each dimension           count   replicate 1L  mskinq ndims            FOR d   0  mskinq ndims  1 DO BEGIN             IF d NE withrcd THEN BEGIN               ncdf_diminq  cdfid  mskinq dim d  name  size               count d    size             ENDIF           ENDFOR   read the variable for the first record                     ncdf_varget  cdfid  mskid  tmask  count   count         ENDIF ELSE ncdf_varget  cdfid  mskid  tmask   check if we need to applay add_offset and scale factor                  FOR a   0  mskinq natts 1 DO BEGIN           attname   ncdf_attname cdfid  mskid  a                 CASE strlowcase attname  OF              add_offset :ncdf_attget  cdfid  mskid  attname  add_offset              scale_factor :ncdf_attget  cdfid  mskid  attname  scale_factor             ELSE:           ENDCASE         ENDFOR         IF n_elements scale_factor  NE 0 THEN tmask   tmask scale_factor         IF n_elements add_offset  NE 0 THEN tmask   tmask add_offset         if keyword_set invmask  then tmask   1 tmask         tmask   byte round tmask        ENDIF ELSE tmask    1            END       keyword_set useasmask :BEGIN       mskid    where namevar EQ strlowcase useasmask 0        if mskid NE  1 THEN BEGIN          mskinq   ncdf_varinq cdfid  mskid    is the mask variable containing the record dimension          withrcd    where mskinq dim EQ inside recdim 0          IF withrcd NE  1 THEN BEGIN   in order to read only the first record             we need to get the size of each dimension           count   replicate 1L  mskinq ndims            FOR d   0  mskinq ndims  1 DO BEGIN             IF d NE withrcd THEN BEGIN               ncdf_diminq  cdfid  mskinq dim d  name  size               count d    size             ENDIF           ENDFOR   read the variable for the first record                  ncdf_varget  cdfid  mskid  tmask  count   count         ENDIF ELSE ncdf_varget  cdfid  mskid  tmask   check if we need to applay add_offset and scale factor                FOR a   0  mskinq natts 1 DO BEGIN           attname   ncdf_attname cdfid  mskid  a                 CASE strlowcase attname  OF              add_offset :ncdf_attget  cdfid  mskid  attname  add_offset              scale_factor :ncdf_attget  cdfid  mskid  attname  scale_factor              missing_value :IF n_elements missing_value  EQ 0 THEN                 ncdf_attget  cdfid  mskid  attname  missing_value             ELSE:           ENDCASE         ENDFOR         IF n_elements scale_factor  NE 0 THEN tmask   tmask scale_factor         IF n_elements add_offset  NE 0 THEN tmask   tmask add_offset         IF n_elements missing_value  NE 0 THEN BEGIN   we have to take care of the float accuracy           CASE 1 OF             missing_value GE 1 e6:tmask   tmask LT  missing_value 10              missing_value LE  1 e6:tmask   tmask GT  missing_value 10              abs missing_value  LE 1 e 6:tmask   abs tmask  GT 1 e 6             ELSE:tmask   tmask NE missing_value           ENDCASE           if keyword_set invmask  then tmask   1 tmask         ENDIF ELSE BEGIN           tmask   finite tmask            IF min tmask  EQ 1 THEN BEGIN             print   missing or nan values not found              tmask    1                     ENDIF         ENDELSE       ENDIF ELSE tmask    1            END       ELSE:tmask     1   ENDCASE   ncdf_close  cdfid     compute the grid   if zvarid EQ  1 then BEGIN      computegrid  xaxis   xaxis  yaxis   yaxis           mask   tmask  onearth   1b   keyword_set xyindex  _EXTRA   ex    ENDIF ELSE BEGIN      computegrid  xaxis   xaxis  yaxis   yaxis  zaxis   zaxis           mask   tmask  onearth   1b   keyword_set xyindex  _EXTRA   ex   ENDELSE    IF n_elements time  EQ 0 THEN time   0   jpt   n_elements time        return end"); 
    210210a[208] = new Array("./ToBeReviewed/INIT/initncdfxxx.html", "initncdfxxx.pro", "", ""); 
     
    234234a[232] = new Array("./ToBeReviewed/LECTURE/read_ncdf_varget.html", "read_ncdf_varget.pro", "", ""); 
    235235a[233] = new Array("./ToBeReviewed/LECTURE/xncdf_lec.html", "xncdf_lec.pro", "", "  La lecture de ce programme se fait de bas en haut:     1  xncdf_lec       2  xncdf_lec_event           3  wid_var                wid_var_event   pro wid_var_event   event   NAME:wid_var_event     PURPOSE:procedure appele par xmanager qd on appuie sur un bouton du   2eme widget cree par wid_var      INPUTS: event  une structure caracterisant le type d evenement qui   arrive au widget numero1 2     COMMON BLOCKS:wididbase resultat infovariable indicewid motcle           compile_opt idl2  strictarrsubs      COMMON wididbase  base    COMMON resultat  res    COMMON infovariable  cdfid  listename  contient  nomdim  tailledim  varid  varcontient    COMMON indicewid_var  widbase1  widbase2111  widbase212  widbase213  selectatt    COMMON motcle  mcatt  mccount  mcoffset  mciodir  mcshift  mcstride  mcvar     quel est le type d evenement     widget_control  event id  get_uvalue uval    tailledimvar   tailledim varcontient dim     if n_elements uval  EQ 0 then return   case sur le type d evenement    case uval OF       1:BEGIN                     on change des valeurs dans le tableau   on controle que les valeurs mises dans le tableau ne sont pas   completement fausses          widget_control  widbase1  get_value   table   agument du bon type     si le type est mauvais on change automatiquement par des valeurs par   defaut          if event x GT  size table 1  then return          if event y GT  size table 2  then return          if size table event x  event y   type  GE 6             OR size table event x  event y   type  EQ 0 then BEGIN              if event x EQ 1 then                widget_control  widbase1  use_table_select    1  event y 1  event y                   set_value   tailledimvar event y                ELSE widget_control  widbase1                  use_table_select    event x  event y  event x  event y  set_value   0          endif   agument avec une valeur nom debile           table   fix table           case event x of             0:BEGIN               on a touche a l offset:                if table 0  event y  LT 0 then BEGIN                   table 0  event y    0                   widget_control  widbase1  use_table_select    0  event y  0  event y                         set_value   0                endif   si il depasse la dim du tableau on le met au max et le cont a 1                if table 0  event y  GT tailledimvar event y table 3  event y  then begin                   widget_control  widbase1  use_table_select    0  event y 1  event y                         set_value    tailledimvar event y table 3  event y  1                 ENDIF ELSE BEGIN   si avec le nouvel offset le count est trop grand  on le diminue juste   de ce qu il faut                    if table 1  event y  GT                       tailledimvar event y table 3  event y table 0  event y  then begin                      widget_control  widbase1  use_table_select    1  event y  1  event y                            set_value    tailledimvar event y table 3  event y table 0  event y                    endif                ENDELSE             END             1:BEGIN              on a touche au count                if table 1  event y  LT 1 then BEGIN                   table 1  event y    1                   widget_control  widbase1  use_table_select    1  event y  1  event y                         set_value   1                endif   si il est trop grand  on le diminue juste de ce qu il faut                 if table 1  event y  GT                    tailledimvar event y table 3  event y table 0  event y  then BEGIN                   widget_control  widbase1  use_table_select    1  event y  1  event y                         set_value    tailledimvar event y table 3  event y table 0  event y                 endif             END             2:BEGIN               on a touche au shift                widget_control  widbase1  use_table_select    2  event y  2  event y                      set_value   table 2  event y  MOD  tailledimvar event y table 3  event y              END             3:BEGIN               on touche au stride                if table 3  event y  LT 1 then BEGIN                   table 3  event y    1                   widget_control  widbase1  use_table_select    3  event y  3  event y                         set_value   1                endif                if table 3  event y  EQ 0 then     il ne doit pas etre nul                 widget_control  widbase1  use_table_select    3  event y  3  event y                      set_value   1   il ne doit pas etre trop grand                if table 3  event y  GT tailledimvar event y  then                   widget_control  widbase1  use_table_select    0  event y 3  event y                      set_value    0  1  0  tailledimvar event y                   ELSE BEGIN                   if table 1  event y  GT                       tailledimvar event y table 3  event y table 0  event y  then begin                      widget_control  widbase1  use_table_select    1  event y  1  event y                            set_value    tailledimvar event y table 3  event y table 0  event y                    endif                ENDELSE             END             ELSE:          endcase       END       2111:BEGIN                 on a touche aux boutons oui non   on actualise le vecteur selectatt a 0 ou 1 pour l attribut concerne    numero event id           selectatt where widbase2111 EQ event id    event select       end       31:BEGIN                   on a appuye sur  get           widget_control  widbase1  get_value   table          table   fix table           mcshift   where table 2    NE 0           mcoffset   table 0             mccount   table 1             mcstride   table 3             if mcshift 0  NE  1 then BEGIN   il y a des shifts   on lit l integralite des dimensions pour lesquelles il y a un shift             mcoffset mcshift    0             mccount mcshift    tailledimvar mcshift    on active pas stride qd il n y en a pas besoin car ca fait ecrire a   l ecran qqch de louche              if total mcstride  EQ n_elements mcstride  then                ncdf_varget  cdfid  varid  res  OFFSET   mcoffset  COUNT   mccount               ELSE                ncdf_varget  cdfid  varid  res  OFFSET   mcoffset  COUNT   mccount  STRIDE   mcstride   pour faire le shift             mcshift   table 2                mcoffset   table 0                mccount   table 1      on definit commende qui permet de faire un shift             commande    res shift res              for dim   0  varcontient ndims 1 do commande   commande string table 2 dim              commande   commande              rien   execute commande    on redefinit commnade qui permet de couper les dimensions qui n ont   pas ete encore coupees  c est celles que l on shift              commande    res res    initialisation de la commende             for dim   0  varcontient ndims 1 do BEGIN                 if mcshift dim  EQ 0 then commande   commande                   ELSE commande commande string mcoffset dim : string mccount dim mcoffset dim 1              ENDFOR             commande   strmid commande  0  strlen commande 1              rien   execute commande    cas sans shift  on lit directement le bon bout de tableau          ENDIF ELSE BEGIN             if total mcstride  EQ n_elements mcstride  then                ncdf_varget  cdfid  varid  res  OFFSET   mcoffset  COUNT   mccount               ELSE                ncdf_varget  cdfid  varid  res  OFFSET   mcoffset  COUNT   mccount  STRIDE   mcstride          ENDELSE   faut il constituer une structure avec les attributs qui on ete selectionnes          if total selectatt  NE 0 then BEGIN   il y a des attributs selectionnes             res   create_struct varcontient name  res    on cree la structure             selectatt   where selectatt EQ 1    on trouve les attributs selectiones              for attid   0   n_elements selectatt 1 do BEGIN   pour lesquels on prend                widget_control  widbase212 selectatt attid  get_value   attname   le nom                widget_control  widbase213 selectatt attid  get_value   attvalue   la valeur               res   create_struct res  attname 0  attvalue 0    on concatene la structe             endfor          endif          widget_control  event top   destroy  on ferme le 2eme widget          widget_control  base   destroy  on ferme le 1eme widget          ncdf_close cdfid       END       32:                        cas de l affichage d un held  avec xdisplayfile        33:widget_control  event top   destroy  on ferme le 2eme widget       ELSE:    endcase    return end     PRO wid_var  widid_pere         NAME: wid_var     PURPOSE: cette procedure gere le 2eme widget cree qd on appelle   xncdf_lec  ce widget concerne la lecture de la variable     INPUTS: widid_pere: un scalere contenant l identite du widget pere   qui a etait cree par xncdf_lec et qui a permis de selectionner la   variable a lire      OUTPUTS: indirectement res  le tableau ou la structure resultat      COMMON BLOCKS:resultat infovariable indicewid_var motcle             compile_opt idl2  strictarrsubs      COMMON resultat  res    COMMON infovariable  cdfid  listename  contient  nomdim  tailledim  varid  varcontient    COMMON indicewid_var  widbase1  widbase2111  widbase212  widbase213  selectatt    COMMON motcle  mcatt  mccount  mcoffset  mciodir  mcshift  mcstride  mcvar    res    1     ouverture de la fenetre de base sous forme de colonnes      widbase   widget_base column  title variable:  varcontient name   align_center  group_leader   widid_pere      ouverture de  sous fenetres de base       widbase1 tableau des offsets      rien   widget_label widbase  value         on saute une ligne   defintion des lables des lignes du tableau    rowlab   string tailledim varcontient dim     for i   0   n_elements rowlab 1 do rowlab i    strtrim rowlab i  1     rowlab   nomdim varcontient dim replicate :   n_elements varcontient dim rowlab   definition des valeurs initiales du tableau    valinit   lonarr 4  n_elements varcontient dim    colonne 0 : les offset    if keyword_set mcoffset  AND n_elements mcoffset  EQ varcontient ndims THEN       valinit 0 mcoffset ELSE valinit 0      0   colonne 1 : les counts    if keyword_set mccount  AND n_elements mccount  EQ varcontient ndims THEN        valinit 1 mccount ELSE valinit 1      tailledim varcontient dim    colonne 2 : les shifts    if keyword_set mcshift  AND n_elements mcshift  EQ varcontient ndims THEN       valinit 2 mcshift ELSE valinit 2      0   colonne 3 : les strides    if keyword_set mcstride  AND n_elements mcstride  EQ varcontient ndims THEN       valinit 3 mcstride ELSE valinit 3      1   test des valeurs initiales du tableau    valinit   fix valinit     valinit 3      1   valinit 3     valinit 0     valinit 1       tailledim varcontient dim valinit 3   valinit 0       valinit 2      valinit 2    MOD  tailledim varcontient dim valinit 3      test des shifts   declaration du tableau    widbase1   widget_table widbase  row_labels   rowlab  value   valinit   editable                                column_labels    Offset   Count   Shift   Stride  uvalue   1    un petit blabla    rien   widget_label widbase  value    ATTENTION: Faire des  return  pour que les valeurs   align_center     rien   widget_label widbase  value    du tableau ou des textes soient bien prises en compte   align_center      widbase2 choix des attributs      rien   widget_label widbase  value         on saute une ligne    widbase2   widget_base widbase   column    pour chaque attribut  on cree un widget  widbase21  qui contient en ligne un   bouton oui non  widbase211  et deux wigdet text  widbase212    widbase213 comportant le nom et la valeur de l attribut     widbase21   lonarr varcontient natts     widbase211   lonarr varcontient natts     widbase2111   lonarr varcontient natts    vecteur qui serviera a savoir quels boutons oui non sont   selectiones  cf  wid_var_event    selectatt   lonarr varcontient natts     selectatt    0    widbase212   lonarr varcontient natts     widbase213   lonarr varcontient natts     for attid   0  varcontient natts 1 do BEGIN  boucle sur le nombre d attributs       widbase21 attid    widget_base widbase2   row        name ncdf_attname cdfid varid attid        ncdf_attget cdfid varid name value       widbase211 attid    widget_base widbase21 attid   nonexclusive        widbase2111 attid     widget_button widbase211 attid  value       uvalue   2111        widbase212 attid    widget_text widbase21 attid  value   name   editable        widbase213 attid    widget_text widbase21 attid  value strtrim string value 1   editable     endfor     widbase3 boutons du bas      widbase3   widget_base widbase   row align_center     widbase31 widget_button widbase3 value GET  uvalue 31     widbase32 widget_button widbase3 value Help  uvalue 32     widbase33 widget_button widbase3 value DONE  uvalue 33     execution de la fentre de base et des sous fenetres      widget_control widbase realize      xmanager wid_var widbase    return end    PRO xncdf_lec_event  event         NAME:xncdf_lec_event     PURPOSE: procedure appele par xmanager qd on appuie sur un bouton du   1ere widget cree par xncdf_lec      INPUTS: event  une structure caracterisant le type d evenement qui   arrive au widget numero1     COMMON BLOCKS:resultat  infovariable  motcle             compile_opt idl2  strictarrsubs      COMMON resultat  res    COMMON infovariable  cdfid  listename  contient  nomdim  tailledim  varid  varcontient    COMMON motcle  mcatt  mccount  mcoffset  mciodir  mcshift  mcstride  mcvar   quel est le type d evenement     widget_control  event id  get_uvalue uval   case sur le type d evenement    case uval of       1:BEGIN                     on veut lire un autre fichier          widget_control  event id  get_value   nom   on recupere le nom          widget_control  event top   destroy  on ferme le widget          ncdf_close cdfid         on ferme le mauvais fichier qui a ete ouvert   on reapelle xncdf_lec          res   xncdf_lec nom 0  ATT   mcatt  COUNT   mccount  OFFSET   mcoffset  IODIR   mciodir                              SHIFT   mcshift   STRIDE   mcstride  VAR   mcvar            return       END       2:BEGIN                     une variable est selectionee          varid   event index      on recupere son numero ds le fichier Netcdf          varcontient   ncdf_varinq cdfid varid           wid_var  event top       on appelle le programme qui lance le 2eme widget  cf    haut       END       3:BEGIN                     bouton done          widget_control  event top   destroy   on tue le widget          ncdf_close cdfid         on ferme le fichier       END       ELSE:    endcase    return end           NAME: xncdf_lec     PURPOSE: lecture d un fichier Net Cdf avec des widgets        CATEGORY: lecture de fichiers avec widgets     CALLING SEQUENCE: res xncdf_lec nom_fichier       INPUTS:         OPTIONNEL  nom_fichier: c est un string qui donne le nom du         fichier a ouvrir Si nomfichier ne contient pas le caractere         separateur de repertoirte   sous unix par ex  Le fichier         sera cherche ds le repertoire courant     KEYWORD PARAMETERS:           IODIR: string contenant le repertoire ou aller chercher le         fichier a lire  Si nomfichier ne contient pas le caractere         separateur de repertoirte   sous unix par ex  Le fichier         cherche s appelera iodir nom_fichier            COUNT: An optional vector containing the counts to be used in         reading Value  COUNT is a 1 based vector with an element for         each dimension of the data to be written The default matches         the size of the variable so that all data is written out            GROUP: The widget ID of the widget that calls XNCDF_LEC  When         this ID is specified  a death of the caller results in a death         of XNCDF_LEC             OFFSET: An optional vector containing the starting position         for the read  The default start position is  0  0              SHIFT: un vecteur d entiers  specifiant pour chaque dimension         de combien il faut la shifter  Par defaut c est          0 0  cf  la fonction shift pour           d explications  ATTENTION  le shift est effectue sur le         tableau de taille maximum avant la reduction eventuelle         determinee par OFFSET et COUNT  Par contre il est effectue         apres l extraction eventuelle cree par le STRIDE            STRIDE: An optional vector containing the strides  or sampling         intervals  between accessed values of the netCDF variable  The         default stride vector is that for a contiguous read   1  1                OUTPUTS: 2 cas possibles:         1  aucun attributs n a ete selectionne  Dans ce cas res est         le tableau que l on voulait lire          2  Des attributs ont ete selectionnes  Dans ce cas res est une         structre dont le premier element portant le nom de la variable         est le tableau de valeurs et les autre auguments sont les         arguments selectiones     COMMON BLOCKS: wididbase  infovariable  resultat  motcle     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE: help  xncdf_lec      MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         24 8 1999         FUNCTION xncdf_lec  nom  ATT   att  COUNT   count  GROUP   group  OFFSET   offset  IODIR   iodir  SHIFT   shift   STRIDE   stride  VAR   var     compile_opt idl2  strictarrsubs      COMMON wididbase  base    COMMON infovariable  cdfid  listename  contient  nomdim  tailledim  varid  varcontient    COMMON resultat  res    COMMON motcle  mcatt  mccount  mcoffset  mciodir  mcshift  mcstride  mcvar     bidouille pour utiliser les mots cles  on passe par des variables   declarees ds un common       res    1    if keyword_set att  then mcatt   att ELSE mcatt   0    if keyword_set count  then mccount  count  ELSE mccount   0    if keyword_set offset  then mcoffset   offset ELSE mcoffset   0    if keyword_set shift  then mcshift   shift ELSE mcshift   0    if keyword_set stride  then mcstride   stride ELSE mcstride   0    if keyword_set var  then mcvar   var ELSE mcvar   0     choix du nom du fichier     Quel type de machine est utiliee    thisOS   strupcase strmid version os_family  0  3     CASE thisOS of        MAC :sep    :         WIN :sep           ELSE: sep        ENDCASE   si iodir n est pas definit on l initialise au repertoire courant    if NOT keyword_set iodir  then cd   current   iodir    mciodir   iodir   on complete iodir d un caractere separateur de repertoire si besoin   est     IF rstrpos iodir  sep  NE strlen iodir 1 THEN iodir   iodir sep     if n_elements nom  EQ 0 then BEGIN   si nom n est pas definit   on en trouve un grace au programme dialog_pickfile       nom   dialog_pickfile filter   iodir nc         if nom 0  EQ   then return    1   si on a rien trouve on sort  on complete nom par iodir si nom ne contient pas de caractere  separateur derepertoire    ENDIF ELSE if strpos nom  sep  EQ  1 then nom   iodir nom    test   findfile nom            le nom cherche correspond bien a un fichier     while test 0  EQ   OR n_elements test  GT 1 do BEGIN   on en cherche un tant qu il ne correspond a rien        test   test 0        nom   dialog_pickfile filter   iodir nc        if nom EQ   then return    1       test   findfile nom     endwhile     ouverture du fichier nom      cdfid ncdf_open nom     contient ncdf_inquire cdfid      que contient le fichier      ouverture de la fenetre de base sous forme de colonnes    if n_elements group  EQ 0 then base   widget_base column  title Fichier:  nom   align_left       ELSE base   widget_base column  title Fichier:  nom   align_left  GROUP_LEADER   group    ouverture de  sous fenetres de base       base 1 titre portant le nom du fichier      base1   widget_base base   column   align_center     rien   widget_label base1  value    Net Cdf filename   align_center    blabla    rien   widget_text base1  value   nom   align_center  uvalue 1   editable   nom du fichier que l on peut changer     rien   widget_label base1  value         on saute une ligne     base 2 informations generales sur le fichier      base2   widget_base base   column      informations sur les attributs globaux      if contient ngatts NE  1 then begin       rien   widget_label base2  value    Nombre de attributs globaux:   strtrim contient ngatts 1   align_left        for attiq 0 contient ngatts 1 do BEGIN   bouble sur le nombre d attributs globaux          name ncdf_attname cdfid attiq global   nom de l atribut          ncdf_attget cdfid name value global  valeur de l atribut          rien   widget_text base2  value   name :  strtrim string value 1  xsize   60   scroll   wrap   align_right        endfor       rien   widget_label base2  value          endif      informations sur les dimensions      rien   widget_label base2  value    Nombre de dimensions:  strtrim contient ndims 1   align_left     if contient recdim NE  1 then begin   bouble sur le nombre de dimensions       ncdf_diminq cdfid contient recdim name value   nom et valeur de la dimension       rien   widget_label base2  value    nom de la dimension infinie:  name   align_left     endif      nomdim    strarr contient ndims    vecteur contenant le nom des dimensions    tailledim lonarr contient ndims    vecteur contenant la valeur des dimensions    for dimiq 0 contient ndims 1 do begin   bouble sur le nombre de dimensions       ncdf_diminq cdfid dimiq name value   nom et valeur de la dimension       nomdim dimiq name       tailledim dimiq value       rien   widget_label base2  value   name  de taille:  strtrim value 1   align_right     ENDFOR    rien   widget_label base2  value         on saute une ligne     base 3 choix de la variable      base3   widget_base base   column     rien   widget_label base3  value    Nombre de variables:  strtrim contient nvars 1   align_left     base31   widget_base base3   row   align_center   creation d un vecteur listename contenant le nom de toutes les  variables du fichier    listename   strarr contient nvars     for varid 0 contient nvars 1 do begin       varcontient ncdf_varinq cdfid varid    que contient la variable       listename varid    varcontient name    endfor    rien  widget_label base31  value    variable    creation d un bouton a menu deroulant    base311 widget_droplist base31 value listename  uvalue 2     rien   widget_label base3  value         base 4 bouton done      base4   widget_base base   row     base42 widget_button base4 value done  uvalue 3   align_right   execution de la fentre de base et des sous fenetres    widget_control base realize      xmanager xncdf_lec base          return  res end"); 
    236 a[234] = new Array("./ToBeReviewed/MATRICE/cmapply.html", "cmapply.pro", "", "    NAME:     CMAPPLY     AUTHOR:     Craig B  Markwardt  NASA GSFC Code 662  Greenbelt  MD 20770     craigm lheamail gsfc nasa gov     PURPOSE:     Applies a function to specified dimensions of an array     MAJOR TOPICS:     Arrays     CALLING SEQUENCE:     XX   CMAPPLY OP  ARRAY  DIMS   DOUBLE   TYPE TYPE      DESCRIPTION:     CMAPPLY will apply one of a few select functions to specified      dimensions of an array   Unlike some IDL functions  you  do  have     a choice of which dimensions that are to be  collapsed  by this     function   Iterative loops are avoided where possible  for      performance reasons        The possible functions are:              and number of loop iterations:                Performs a sum  as in TOTAL        number of collapsed dimensions       AND     Finds LOGICAL  AND   not bitwise   same       OR      Finds LOGICAL  OR    not bitwise   same               Performs a product                 LOG_2 no  of collapsed elts          MIN     Finds the minimum value            smaller of no  of collapsed       MAX     Finds the maximum value            or output elements         USER    Applies user defined function      no  of output elements         It is possible to perform user defined operations arrays using     CMAPPLY   The OP parameter is set to  USER:FUNCTNAME  where     FUNCTNAME is the name of a user defined function   The user     defined function should be defined such that it accepts a single     parameter  a vector  and returns a single scalar value   Here is a     prototype for the function definition:          FUNCTION FUNCTNAME  x  KEYWORD1 key1              scalar     function of x or keywords             RETURN  scalar        END       The function may accept keywords   Keyword values are passed in to     CMAPPLY through the FUNCTARGS keywords parameter  and passed to     the user function via the _EXTRA mechanism   Thus  while the     definition of the user function is highly constrained in the     number of positional parameters  there is absolute freedom in     passing keyword parameters        It s worth noting however  that the implementation of user defined     functions is not particularly optimized for speed   Users are     encouraged to implement their own array if the number of output     elements is large        INPUTS:       OP   The operation to perform  as a string   May be upper or lower          case             If a user defined operation is to be passed  then OP is of          the form   USER:FUNCTNAME  where FUNCTNAME is the name of          the user defined function        ARRAY   An array of values to be operated on   Must not be of type             STRING  7  or STRUCTURE  8      OPTIONAL INPUTS:       DIMS   An array of dimensions that are to be  collapsed  where            the the first dimension starts with 1  ie  same convention            as IDL function TOTAL   Whereas TOTAL only allows one            dimension to be added  you can specify multiple dimensions            to CMAPPLY   Order does not matter  since all operations            are associative and transitive   NOTE: the dimensions refer            to the  input  array  not the output array   IDL allows a             maximum of 8 dimensions             DEFAULT: 1  ie  first dimension      KEYWORDS:       DOUBLE   Set this if you wish the internal computations to be done              in double precision if necessary   If ARRAY is double               precision  real or complex  then DOUBLE 1 is implied               DEFAULT: not set       TYPE   Set this to the IDL code of the desired output type  refer            to documentation of SIZE   Internal results will be            rounded to the nearest integer if the output type is an            integer type             DEFAULT: same is input type       FUNCTARGS   If OP is  USER:  then the contents of this keyword                 are passed to the user function using the _EXTRA                 mechanism   This way you can pass additional data to                 your user supplied function  via keywords  without                 using common blocks                  DEFAULT: undefined  i e  no keywords passed by _EXTRA      RETURN VALUE:       An array of the required TYPE  whose elements are the result of     the requested operation   Depending on the operation and number of     elements in the input array  the result may be vulnerable to     overflow or underflow      EXAMPLES:     Shows how CMAPPLY can be used to total the second dimension of the     array called IN   This is equivalent to OUT   TOTAL IN  2        IDL  IN    INDGEN 5 5      IDL  OUT   CMAPPLY  IN   2      IDL  HELP  OUT     OUT             INT         Array 5        Second example   Input is assumed to be an 5x100 array of 1 s and     0 s indicating the status of 5 detectors at 100 points in time      The desired output is an array of 100 values  indicating whether     all 5 detectors are on  1  at one time   Use the logical AND     operation        IDL  IN   detector_status               5x100 array     IDL  OUT   CMAPPLY AND  IN   1       collapses 1st dimension     IDL  HELP  OUT     OUT             BYTE        Array 100         note that MIN could also have been used in this particular case      although there would have been more loop iterations        Third example   Shows sum over first and third dimensions in an     array with dimensions 4x4x4:       IDL  IN   INDGEN 4 4 4      IDL  OUT   CMAPPLY  IN   1 3      IDL  PRINT  OUT          408     472     536     600       Fourth example  A user function  MEDIAN  is used:       IDL  IN   RANDOMN SEED 10 10 5      IDL  OUT   CMAPPLY USER:MEDIAN  IN  3      IDL  HELP  OUT     OUT             FLOAT       Array 10  10         OUT i j  is the median value of IN i j      MODIFICATION HISTORY:     Mar 1998  Written  CM     Changed usage message to not bomb  24 Mar 2000  CM     Signficant rewrite for   MIN and MAX  inspired by Todd Clements         FOR loop indices are now type       LONG  copying terms are liberalized  CM  22  Aug 2000     More efficient MAX MIN  inspired by Alex Schuster  CM  25 Jan       2002     Make new MAX MIN actually work with 3d arrays  CM  08 Feb 2002     Add user defined functions  ON_ERROR  CM  09 Feb 2002     Correct bug in MAX MIN initialization of RESULT  CM  05 Dec 2002       Id: cmapply pro 31 2006 05 02 13:54:11Z pinsard         Copyright  C  1998  2000  2002  Craig Markwardt   This software is provided as is without any warranty whatsoever    Permission to use  copy  modify  and distribute modified or   unmodified copies is granted  provided this copyright and disclaimer   are included unchanged       Utility function  adapted from CMPRODUCT function cmapply_product  x     compile_opt idl2  strictarrsubs     sz   size x    n   sz 1     while n GT 1 do begin       if  n mod 2  EQ 1 then x 0    x 0    x n 1        n2   floor n 2        x   x 0:n2 1    x n2:        n   n2   endwhile   return  reform x 0   overwrite  end    Utility function  used to collect collaped dimensions pro cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep     compile_opt idl2  strictarrsubs     sz   size newarr      First task: rearrange dimensions so that the dimensions     that are  kept   ie  uncollapsed  are at the back   dimkeep   where histogram dimapply min 1 max sz 0  ne 1  nkeep    if nkeep EQ 0 then return    newarr   transpose temporary newarr   dimapply 1  dimkeep      totcol is the total number of collapsed elements   totcol   sz dimapply 0    for i   1  n_elements dimapply 1 do totcol   totcol   sz dimapply i    totkeep   sz dimkeep 0 1    for i   1  n_elements dimkeep 1 do totkeep   totkeep   sz dimkeep i 1       this new array has two dimensions:         the first  all elements that will be collapsed         the second  all dimensions that will be preserved      the ordering is so that all elements to be collapsed are      adjacent in memory    newarr   reform newarr   totcol  totkeep   overwrite  end    Main function function cmapply  op  array  dimapply  double dbl  type type                      functargs functargs  nocatch nocatch     compile_opt idl2  strictarrsubs      if n_params  LT 2 then begin       message   USAGE: XX   CMAPPLY OP ARRAY 2   info       message          where OP is     AND  OR  MIN  MAX   info       return   1L   endif   if NOT keyword_set nocatch  then       on_error  2     else       on_error  0      Parameter checking     1  the dimensions of the array   sz   size array    if sz 0  EQ 0 then       message   ERROR: ARRAY must be an array       2  The type of the array   if sz sz 0 1  EQ 0 OR sz sz 0 1  EQ 7 OR sz sz 0 1  EQ 8 then       message   ERROR: Cannot apply to UNDEFINED  STRING  or STRUCTURE    if n_elements type  EQ 0 then type   sz sz 0 1       3  The type of the operation   szop   size op    if szop szop 0 1  NE 7 then       message   ERROR: operation OP was not a string       4  The dimensions to apply  default is to apply to first dim    if n_params  EQ 2 then dimapply   1   dimapply     dimapply     dimapply   dimapply sort dimapply      Sort in ascending order   napply   n_elements dimapply       5  Use double precision if requested or if needed   if n_elements dbl  EQ 0 then begin       dbl 0       if type EQ 5 OR type EQ 9 then dbl 1   endif    newop   strupcase op    newarr   array   newarr   reform newarr  sz 1:sz 0   overwrite    case 1 of            Addition        newop EQ  : begin           for i   0L  napply 1 do begin               newarr   total temporary newarr  dimapply i i  double dbl            endfor       end            Multiplication        newop EQ  : begin   Multiplication  by summation of logarithms            cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               newarr   reform newarr  n_elements newarr  1   overwrite                return   cmapply_product newarr 0            endif            result   cmapply_product newarr            result   reform result  sz dimkeep 1   overwrite            return  result       end            LOGICAL AND or OR        newop EQ  AND  OR  newop EQ  OR : begin           newarr   temporary newarr  NE 0           totelt   1L           for i   0L  napply 1 do begin               newarr   total temporary newarr  dimapply i i                totelt   totelt   sz dimapply i            endfor           if newop EQ  AND  then return   round newarr  EQ totelt            if newop EQ  OR   then return   round newarr  NE 0        end          Operations requiring a little more attention over how to         iterate        newop EQ  MAX  OR  newop EQ  MIN : begin           cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               if newop EQ  MAX  then return  max newarr                if newop EQ  MIN  then return  min newarr            endif                        Next task: create result array           result   make_array totkeep  type type                         Now either iterate over the number of output elements  or             the number of collapsed elements  whichever is smaller            if totcol LT totkeep then begin                 Iterate over the number of collapsed elements               result 0    reform newarr 0 totkeep overwrite                case newop of                     MAX : for i   1L  totcol 1 do                       result 0    result   newarr i                     MIN : for i   1L  totcol 1 do                       result 0    result   newarr i                endcase           endif else begin                 Iterate over the number of output elements               case newop of                     MAX : for i   0L  totkeep 1 do result i    max newarr i                     MIN : for i   0L  totkeep 1 do result i    min newarr i                endcase           endelse            result   reform result  sz dimkeep 1   overwrite            return  result       end          User function        strmid newop 0 4  EQ  USER : begin           functname   strmid newop 5            if functname EQ   then               message   ERROR:  newop  is not a valid operation             cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               if n_elements functargs  GT 0 then                   return  call_function functname  newarr  _EXTRA functargs                return  call_function functname  newarr            endif                        Next task: create result array           result   make_array totkeep  type type                         Iterate over the number of output elements           if n_elements functargs  GT 0 then begin               for i   0L  totkeep 1 do                   result i    call_function functname  newarr i  _EXTRA functargs            endif else begin               for i   0L  totkeep 1 do                   result i    call_function functname  newarr i            endelse            result   reform result  sz dimkeep 1   overwrite            return  result       end                   endcase    newsz   size newarr    if type EQ newsz newsz 0 1  then return  newarr      Cast the result into the desired type  if necessary   castfns    UNDEF   BYTE   FIX   LONG   FLOAT                  DOUBLE   COMPLEX   UNDEF   UNDEF   DCOMPLEX      if type GE 1 AND type LE 3 then       return  call_function castfns type  round newarr      else       return  call_function castfns type  newarr  end   "); 
     236a[234] = new Array("./ToBeReviewed/MATRICE/cmapply.html", "cmapply.pro", "", "    NAME:     CMAPPLY     AUTHOR:     Craig B  Markwardt  NASA GSFC Code 662  Greenbelt  MD 20770     craigm lheamail gsfc nasa gov     PURPOSE:     Applies a function to specified dimensions of an array     MAJOR TOPICS:     Arrays     CALLING SEQUENCE:     XX   CMAPPLY OP  ARRAY  DIMS   DOUBLE   TYPE TYPE      DESCRIPTION:     CMAPPLY will apply one of a few select functions to specified      dimensions of an array   Unlike some IDL functions  you  do  have     a choice of which dimensions that are to be  collapsed  by this     function   Iterative loops are avoided where possible  for      performance reasons        The possible functions are:              and number of loop iterations:                Performs a sum  as in TOTAL        number of collapsed dimensions       AND     Finds LOGICAL  AND   not bitwise   same       OR      Finds LOGICAL  OR    not bitwise   same               Performs a product                 LOG_2 no  of collapsed elts          MIN     Finds the minimum value            smaller of no  of collapsed       MAX     Finds the maximum value            or output elements         USER    Applies user defined function      no  of output elements         It is possible to perform user defined operations arrays using     CMAPPLY   The OP parameter is set to  USER:FUNCTNAME  where     FUNCTNAME is the name of a user defined function   The user     defined function should be defined such that it accepts a single     parameter  a vector  and returns a single scalar value   Here is a     prototype for the function definition:          FUNCTION FUNCTNAME  x  KEYWORD1 key1              scalar     function of x or keywords             RETURN  scalar        END       The function may accept keywords   Keyword values are passed in to     CMAPPLY through the FUNCTARGS keywords parameter  and passed to     the user function via the _EXTRA mechanism   Thus  while the     definition of the user function is highly constrained in the     number of positional parameters  there is absolute freedom in     passing keyword parameters        It s worth noting however  that the implementation of user defined     functions is not particularly optimized for speed   Users are     encouraged to implement their own array if the number of output     elements is large        INPUTS:       OP   The operation to perform  as a string   May be upper or lower          case             If a user defined operation is to be passed  then OP is of          the form   USER:FUNCTNAME  where FUNCTNAME is the name of          the user defined function        ARRAY   An array of values to be operated on   Must not be of type             STRING  7  or STRUCTURE  8      OPTIONAL INPUTS:       DIMS   An array of dimensions that are to be  collapsed  where            the the first dimension starts with 1  ie  same convention            as IDL function TOTAL   Whereas TOTAL only allows one            dimension to be added  you can specify multiple dimensions            to CMAPPLY   Order does not matter  since all operations            are associative and transitive   NOTE: the dimensions refer            to the  input  array  not the output array   IDL allows a             maximum of 8 dimensions             DEFAULT: 1  ie  first dimension      KEYWORDS:       DOUBLE   Set this if you wish the internal computations to be done              in double precision if necessary   If ARRAY is double               precision  real or complex  then DOUBLE 1 is implied               DEFAULT: not set       TYPE   Set this to the IDL code of the desired output type  refer            to documentation of SIZE   Internal results will be            rounded to the nearest integer if the output type is an            integer type             DEFAULT: same is input type       FUNCTARGS   If OP is  USER:  then the contents of this keyword                 are passed to the user function using the _EXTRA                 mechanism   This way you can pass additional data to                 your user supplied function  via keywords  without                 using common blocks                  DEFAULT: undefined  i e  no keywords passed by _EXTRA      RETURN VALUE:       An array of the required TYPE  whose elements are the result of     the requested operation   Depending on the operation and number of     elements in the input array  the result may be vulnerable to     overflow or underflow      EXAMPLES:     Shows how CMAPPLY can be used to total the second dimension of the     array called IN   This is equivalent to OUT   TOTAL IN  2        IDL  IN    INDGEN 5 5      IDL  OUT   CMAPPLY  IN   2      IDL  HELP  OUT     OUT             INT         Array 5        Second example   Input is assumed to be an 5x100 array of 1 s and     0 s indicating the status of 5 detectors at 100 points in time      The desired output is an array of 100 values  indicating whether     all 5 detectors are on  1  at one time   Use the logical AND     operation        IDL  IN   detector_status               5x100 array     IDL  OUT   CMAPPLY AND  IN   1       collapses 1st dimension     IDL  HELP  OUT     OUT             BYTE        Array 100         note that MIN could also have been used in this particular case      although there would have been more loop iterations        Third example   Shows sum over first and third dimensions in an     array with dimensions 4x4x4:       IDL  IN   INDGEN 4 4 4      IDL  OUT   CMAPPLY  IN   1 3      IDL  PRINT  OUT          408     472     536     600       Fourth example  A user function  MEDIAN  is used:       IDL  IN   RANDOMN SEED 10 10 5      IDL  OUT   CMAPPLY USER:MEDIAN  IN  3      IDL  HELP  OUT     OUT             FLOAT       Array 10  10         OUT i j  is the median value of IN i j      MODIFICATION HISTORY:     Mar 1998  Written  CM     Changed usage message to not bomb  24 Mar 2000  CM     Signficant rewrite for   MIN and MAX  inspired by Todd Clements         FOR loop indices are now type       LONG  copying terms are liberalized  CM  22  Aug 2000     More efficient MAX MIN  inspired by Alex Schuster  CM  25 Jan       2002     Make new MAX MIN actually work with 3d arrays  CM  08 Feb 2002     Add user defined functions  ON_ERROR  CM  09 Feb 2002     Correct bug in MAX MIN initialization of RESULT  CM  05 Dec 2002       Id: cmapply pro 114 2006 06 19 14:14:56Z smasson         Copyright  C  1998  2000  2002  Craig Markwardt   This software is provided as is without any warranty whatsoever    Permission to use  copy  modify  and distribute modified or   unmodified copies is granted  provided this copyright and disclaimer   are included unchanged       Utility function  adapted from CMPRODUCT function cmapply_product  x     compile_opt idl2  strictarrsubs     sz   size x    n   sz 1     while n GT 1 do begin       if  n mod 2  EQ 1 then x 0    x 0    x n 1        n2   floor n 2        x   x 0:n2 1    x n2:        n   n2   endwhile   return  reform x 0   overwrite  end    Utility function  used to collect collaped dimensions pro cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep     compile_opt idl2  strictarrsubs     sz   size newarr      First task: rearrange dimensions so that the dimensions     that are  kept   ie  uncollapsed  are at the back   dimkeep   where histogram dimapply min 1 max sz 0  ne 1  nkeep    if nkeep EQ 0 then return    newarr   transpose temporary newarr   dimapply 1  dimkeep      totcol is the total number of collapsed elements   totcol   sz dimapply 0    for i   1  n_elements dimapply 1 do totcol   totcol   sz dimapply i    totkeep   sz dimkeep 0 1    for i   1  n_elements dimkeep 1 do totkeep   totkeep   sz dimkeep i 1       this new array has two dimensions:         the first  all elements that will be collapsed         the second  all dimensions that will be preserved      the ordering is so that all elements to be collapsed are      adjacent in memory    newarr   reform newarr   totcol  totkeep   overwrite  end    Main function function cmapply  op  array  dimapply  double dbl  type type                      functargs functargs  nocatch nocatch     compile_opt idl2  strictarrsubs      if n_params  LT 2 then begin       message   USAGE: XX   CMAPPLY OP ARRAY 2   info       message          where OP is     AND  OR  MIN  MAX   info       return   1L   endif   if NOT keyword_set nocatch  then       on_error  2     else       on_error  0      Parameter checking     1  the dimensions of the array   sz   size array    if sz 0  EQ 0 then       message   ERROR: ARRAY must be an array       2  The type of the array   if sz sz 0 1  EQ 0 OR sz sz 0 1  EQ 7 OR sz sz 0 1  EQ 8 then       message   ERROR: Cannot apply to UNDEFINED  STRING  or STRUCTURE    if n_elements type  EQ 0 then type   sz sz 0 1       3  The type of the operation   szop   size op    if szop szop 0 1  NE 7 then       message   ERROR: operation OP was not a string       4  The dimensions to apply  default is to apply to first dim    if n_params  EQ 2 then dimapply   1   dimapply     dimapply     dimapply   dimapply sort dimapply      Sort in ascending order   napply   n_elements dimapply       5  Use double precision if requested or if needed   if n_elements dbl  EQ 0 then begin       dbl 0       if type EQ 5 OR type EQ 9 then dbl 1   endif    newop   strupcase op    newarr   array   newarr   reform newarr  sz 1:sz 0   overwrite    case 1 of            Addition        newop EQ  : begin           for i   0L  napply 1 do begin               newarr   total temporary newarr  dimapply i i  double dbl            endfor       end            Multiplication        newop EQ  : begin   Multiplication  by summation of logarithms            cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               newarr   reform newarr  n_elements newarr  1   overwrite                return   cmapply_product newarr 0            endif            result   cmapply_product newarr            result   reform result  sz dimkeep 1   overwrite            return  result       end            LOGICAL AND or OR        newop EQ  AND  OR  newop EQ  OR : begin           newarr   temporary newarr  NE 0           totelt   1L           for i   0L  napply 1 do begin               newarr   total temporary newarr  dimapply i i                totelt   totelt   sz dimapply i            endfor           if newop EQ  AND  then return   round newarr  EQ totelt            if newop EQ  OR   then return   round newarr  NE 0        end          Operations requiring a little more attention over how to         iterate        newop EQ  MAX  OR  newop EQ  MIN : begin           cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               if newop EQ  MAX  then return  max newarr                if newop EQ  MIN  then return  min newarr            endif                        Next task: create result array           result   make_array totkeep  type type                         Now either iterate over the number of output elements  or             the number of collapsed elements  whichever is smaller            if totcol LT totkeep then begin                 Iterate over the number of collapsed elements               result 0    reform newarr 0 totkeep overwrite                case newop of                     MAX : for i   1L  totcol 1 do                       result 0    result   newarr i                     MIN : for i   1L  totcol 1 do                       result 0    result   newarr i                endcase           endif else begin                 Iterate over the number of output elements               case newop of                     MAX : for i   0L  totkeep 1 do result i    max newarr i                     MIN : for i   0L  totkeep 1 do result i    min newarr i                endcase           endelse            result   reform result  sz dimkeep 1   overwrite            return  result       end          User function        strmid newop 0 4  EQ  USER : begin           functname   strmid newop 5            if functname EQ   then               message   ERROR:  newop  is not a valid operation             cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               if n_elements functargs  GT 0 then                   return  call_function functname  newarr  _EXTRA functargs                return  call_function functname  newarr            endif                        Next task: create result array           result   make_array totkeep  type type                         Iterate over the number of output elements           if n_elements functargs  GT 0 then begin               for i   0L  totkeep 1 do                   result i    call_function functname  newarr i  _EXTRA functargs            endif else begin               for i   0L  totkeep 1 do                   result i    call_function functname  newarr i            endelse            result   reform result  sz dimkeep 1   overwrite            return  result       end                   endcase    newsz   size newarr    if type EQ newsz newsz 0 1  then return  newarr      Cast the result into the desired type  if necessary   castfns    UNDEF   BYTE   FIX   LONG   FLOAT                  DOUBLE   COMPLEX   UNDEF   UNDEF   DCOMPLEX      if type GE 1 AND type LE 3 then       return  call_function castfns type  round newarr      else       return  call_function castfns type  newarr  end   "); 
    237237a[235] = new Array("./ToBeReviewed/MATRICE/cmset_op.html", "cmset_op.pro", "", "    NAME:     CMSET_OP     AUTHOR:     Craig B  Markwardt  NASA GSFC Code 662  Greenbelt  MD 20770     craigm lheamail gsfc nasa gov     PURPOSE:     Performs an AND  OR  or XOR operation between two sets     CALLING SEQUENCE:     SET        CMSET_OP A  OP  B      DESCRIPTION:        SET_OP performs three common operations between two sets   The     three supported functions of OP are:            OP          Meaning         AND    to find the intersection of A and B          OR     to find the union of A and B          XOR    to find the those elements who are members of A or B                 but not both        Sets as defined here are one dimensional arrays composed of     numeric or string types   Comparisons of equality between elements     are done using the IDL EQ operator        The complements of either set can be taken as well  by using the     NOT1 and NOT2 keywords   For example  it may be desireable to find     the elements in A but not B  or B but not A  they are different      The following IDL expressions achieve each of those effects:          SET   CMSET_OP A   AND   NOT2  B      A but not B        SET   CMSET_OP NOT1  A   AND  B      B but not A       Note the distinction between NOT1 and NOT2   NOT1 refers to the     first set  A  and NOT2 refers to the second  B   Their ordered     placement in the calling sequence is entirely optional  but the     above ordering makes the logical meaning explicit        NOT1 and NOT2 can only be set for the  AND  operator  and never     simultaneously   This is because the results of an operation with      OR  or  XOR  and any combination of NOTs   or with  AND  and     both NOTs   formally cannot produce a defined result        The implementation depends on the type of operands   For integer     types  a fast technique using HISTOGRAM is used   However  this     algorithm becomes inefficient when the dynamic range in the data     is large   For those cases  and for other data types  a technique     based on SORT  is used   Thus the compute time should scale     roughly as  A B ALOG A B  or better  rather than  A B  for the     brute force approach   For large arrays this is a significant     benefit      INPUTS:       A  B   the two sets to be operated on   A one dimensional array of            either numeric or string type   A and B must be of the same            type   Empty sets are permitted  and are either represented            as an undefined variable  or by setting EMPTY1 or EMPTY2        OP   a string  the operation to be performed   Must be one of           AND   OR  or  XOR   lower or mixed case is permitted           Other operations will cause an error message to be produced      KEYWORDS:       NOT1  NOT2   if set and OP is  AND  then the complement of A  for                  NOT1  or B  for NOT2  will be used in the operation                   NOT1 and NOT2 cannot be set simultaneously        EMPTY1  EMPTY2   if set  then A  for EMPTY1  or B  for EMPTY2  are                      assumed to be the empty set   The actual values                      passed as A or B are then ignored        INDEX   if set  then return a list of indices instead of the array             values themselves   The  slower  set operations are always             performed in this case                The indices refer to the  combined  array  A B   To             clarify  in the following call: I   CMSET_OP   INDEX              returned values from 0 to NA 1 refer to A I  and values             from NA to NA NB 1 refer to B I NA        COUNT   upon return  the number of elements in the result set              This is only important when the result set is the empty             set  in which case COUNT is set to zero      RETURNS:       The resulting set as a one dimensional array   The set may be     represented by either an array of data values  default  or an     array of indices  if INDEX is set   Duplicate elements  if any      are removed  and element order may not be preserved        The empty set is represented as a return value of  1L  and COUNT     is set to zero   Note that the only way to recognize the empty set     is to examine COUNT      SEE ALSO:       SET_UTILS PRO by RSI     MODIFICATION HISTORY:     Written  CM  23 Feb 2000     Added empty set capability  CM  25 Feb 2000     Documentation clarification  CM 02 Mar 2000     Incompatible but more consistent reworking of EMPTY keywords  CM        04 Mar 2000     Minor documentation clarifications  CM  26 Mar 2000     Corrected bug in empty_arg special case  CM 06 Apr 2000     Add INDEX keyword  CM 31 Jul 2000     Clarify INDEX keyword documentation  CM 06 Sep 2000     Made INDEX keyword always force SLOW_SET_OP  CM 06 Sep 2000     Added CMSET_OP_UNIQ  and ability to select FIRST_UNIQUE or       LAST_UNIQUE values  CM  18 Sep 2000     Removed FIRST_UNIQUE and LAST_UNIQUE  and streamlined       CMSET_OP_UNIQ until problems with SORT can be understood  CM  20       Sep 2000  thanks to Ben Tupper      Still trying to get documentation of INDEX and NOT right  CM  28       Sep 2000  no code changes      Correct bug for AND case  when input sets A and B each only have       one unique value  and the values are equal   CM  04 Mar 2004        thanks to James B  jbattat at cfa dot harvard dot edu      Add support for the cases where the input data types are mixed         but still compatible  also  attempt to return the same data        type that was passed in  CM  05 Feb 2005     Fix bug in type checking  thanks to  marit  CM  10 Dec 2005     Work around a stupidity in the built in IDL HISTOGRAM routine         which tries to  help  you by restricting the MIN MAX to the        range of the input variable  thanks to Will Maddox  CM  16 Jan 2006       Id: cmset_op pro v 1 6 2006 01 16 19:45:22 craigm Exp         Copyright  C  2000  2004  2005  2006  Craig Markwardt   This software is provided as is without any warranty whatsoever    Permission to use  copy  modify  and distribute modified or   unmodified copies is granted  provided this copyright and disclaimer   are included unchanged       Utility function  similar to UNIQ  but allowing choice of taking   first or last unique element  or non unique elements    Unfortunately this doesn t work because of implementation dependent   versions of the SORT  function     function cmset_op_uniq  a  first first  non non  count ct  sort sortit     if n_elements a  LE 1 then return  0L     sh    2L keyword_set first 1L 2L keyword_set non 1        if keyword_set sortit  then begin           Sort it manually         ii   sort a    b   a ii          if keyword_set non  then wh   where b EQ shift b  sh  ct            else                     wh   where b NE shift b  sh  ct          if ct GT 0 then return  ii wh      endif else begin           Use the user s values directly         if keyword_set non  then wh   where a EQ shift a  sh  ct            else                     wh   where a NE shift a  sh  ct          if ct GT 0 then return  wh     endelse       if keyword_set first  then return  0L else return  n_elements a 1   end    Simplified version of CMSET_OP_UNIQ which sorts  and takes the    first  value  whatever that may mean  function cmset_op_uniq  a     compile_opt idl2  strictarrsubs     if n_elements a  LE 1 then return  0L    ii   sort a    b   a ii    wh   where b NE shift b   1L  ct    if ct GT 0 then return  ii wh     return  0L end  function cmset_op  a  op0  b  not1 not1  not2 not2  count count                  empty1 empty1  empty2 empty2  maxarray ma  index index     compile_opt idl2  strictarrsubs      on_error  2   return on error   count   0L   index0    1L     Histogram technique is used for array sizes  max2       nbins   maxx minn 1       if  maxx minn  GT floor ma 0  then goto  SLOW_SET_OP          Work around a stupidity in the built in IDL HISTOGRAM routine       if  tp1 EQ 2 OR tp2 EQ 2  AND  minn LT  32768 OR maxx GT 32767  then           goto  SLOW_SET_OP          Following operations create a histogram of the integer values        ha   histogram a  min minn  max maxx    1       hb   histogram b  min minn  max maxx    1          Compute NOT cases       if keyword_set not1  then ha   1b   ha         if keyword_set not2  then hb   1b   hb       case op of              Boolean operations            AND : mask   temporary ha  AND temporary hb               OR : mask   temporary ha   OR temporary hb             XOR : mask   temporary ha  XOR temporary hb        endcase        wh   where temporary mask  count        if count EQ 0 then return   1L              result   temporary wh minn        if tp1 NE tp2 then return  result       szr   size result    tpr   szr szr 0 1           Cast to the original type if necessary       if tpr NE tp1 then begin           fresult   make_array n_elements result  type tp1            fresult 0    temporary result            result   temporary fresult        endif        return  result    endelse    return   1L    DEFAULT CASE end        Here is how I did the INDEX stuff with fast histogramming   It       works  but is complicated  so I forced it to go to SLOW_SET_OP        ha   histogram a  min minn  max maxx  reverse ra    1       rr   ra 0:nbins    mask   rr NE rr 1:    ra   ra rr mask 1L mask       hb   histogram b  min minn  max maxx  reverse rb    1       rr   rb 0:nbins    mask   rr NE rr 1:    rb   rb rr mask 1L mask          AND OR XOR NOT masking here         ra   ra wh    rb   rb wh        return  ra ra GE 0     rb n1 ra LT 0    is last  ra  right  "); 
    238238a[236] = new Array("./ToBeReviewed/MATRICE/colle.html", "colle.pro", "", "          NAME:colle     PURPOSE: Cette fonction de concatenation existe ds IDL  avec   cf   ds le programme ds le case pour direc egale 1 2 3  tant que l on ne   cherche pas a coller suivant une dimensionsuperieure ou egale a 4        CATEGORY:bidouillage de matrice     CALLING SEQUENCE:res colle bableau_de_pointeur direc  ou bien                    res colle tab1 tab2 tab3 tab4 direc      INPUTS:                     CAS 1:          tableau_de_pointeur:comme son nom l indique c est un tableau          de pointeur  dont chaque elements pointe sur tableau a coller            par ex ds un programme  on veut coller n tableaux entre eux              tab ptrarr n allocate_heap             for i 0 n 1 do begin                tab n replicate n 2 3             endfor            res colle tab 1             CAS 2:          on donne directement les tableaux a coller          rq: ds ce cas on peut au plus donner 20 tableaux en entree             ATTENTION : sans le mot cle  SAUVE les arguments en entree          sont detruits lorsque l on construit res  ds le cas 1 on          detruit le tableau de pointeurs et les variables sur          lesquelles on pointe             direc: la direction suivant laquelle les coller  1 2 3       KEYWORD PARAMETERS:              SAUVE: mot cle qui force a sauvegarder le tableau de           pointeur et les tableaux a coller      OUTPUTS:res matrice resultat     RESTRICTIONS:     EXAMPLE:              IDL  print  colle replicate 1 2 2 2 indgen 2 2 2 2                      1       1                  1       1                  0       1                  2       3                    1       1                  1       1                  4       5                  6       7     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          13 1 98           pour suprimer une variable       PRO UNDEFINE  varname       compile_opt idl2  strictarrsubs         tempvar   SIZE TEMPORARY varname     END     FUNCTION colle  a0  a1  a2  a3  a4  a5  a6  a7  a8  a9  a10  a11  a12  a13  a14  a15  a16  a17  a18  a19  a20  SAUVE   sauve     compile_opt idl2  strictarrsubs      res    1     on met en place ptrtab et direc en fonction des arguments en entree      case 1 of       n_params  EQ 2:BEGIN       cas ou l on donne directement le tableau de pointeurs          ptrtab   a0          direc   a1          if NOT keyword_set sauve  then undefine  a0   on recupere le nombre de tableaux a coller          nbretab    size ptrtab 1        end       n_params  GT 2:BEGIN   on recupere le nombre de tableaux a coller          nbretab   n_params 1          bidon   execute direc   a strtrim n_params 1  2    on ecrit le tableau de pointeur dont chaque element pointe sur un tableau          ptrtab ptrarr nbretab allocate_heap           for n   0 nbretab 1 do begin             bidon   execute ptrtab n a strtrim n  2              if NOT keyword_set sauve  then bidon   execute undefine  a strtrim n  2           endfor          sauve   0       end       ELSE:    endcase     case sur la valeure de direc      case direc of       1:BEGIN                     on colle suivant la dimension 1          res    ptrtab 0           if NOT keyword_set sauve  then ptr_free  ptrtab 0           FOR n   1 nbretab 1 DO BEGIN             res    temporary res   ptrtab n              if NOT keyword_set sauve  then ptr_free  ptrtab n           ENDFOR        END        2:BEGIN                     on colle suivant la dimension 2          res    ptrtab 0           if NOT keyword_set sauve  then ptr_free  ptrtab 0           FOR n   1 nbretab 1 DO BEGIN             res    temporary res   ptrtab n              if NOT keyword_set sauve  then ptr_free  ptrtab n           ENDFOR        END        3:BEGIN                     on colle suivant la dimension 3          res    ptrtab 0           if NOT keyword_set sauve  then ptr_free  ptrtab 0           FOR n   1 nbretab 1 DO BEGIN             res    temporary res   ptrtab n              if NOT keyword_set sauve  then ptr_free  ptrtab n           ENDFOR        END       ELSE:BEGIN    on transpose res de facon a mettre la dimension a coller numero 1    pour cela on contient le vecteur permute qui donne la place que   doivent prendre les dimensions ds la matrice transposee         siz    size ptrtab 0 0           if siz LT direc then              ptrtab 0    reform ptrtab 0   size ptrtab 0 1:siz  replicate 1  direc siz   over           permute   indgen size ptrtab 0 0           permute 0    direc 1          permute direc 1    0          res   transpose ptrtab 0  permute           if NOT keyword_set sauve  then ptr_free  ptrtab 0           FOR n   1 nbretab 1 DO BEGIN   on colle suivant la dimension 1             if  size ptrtab n 0  LT direc then                 ptrtab n    reform ptrtab n   size ptrtab n 1:siz  replicate 1  direc siz                          res    temporary res  transpose ptrtab n  permute              if NOT keyword_set sauve  then ptr_free  ptrtab n           ENDFOR          res   transpose temporary res  permute        END    ENDCASE       if NOT keyword_set sauve  then undefine  ptrtab sortie:    return   res      END     "); 
     
    241241a[239] = new Array("./ToBeReviewed/MATRICE/extrait.html", "extrait.pro", "", "          NAME:extrait     PURPOSE:extraction de sous domaines de matrices  Meme si le sous   domaine est  troue  cf  : l exemple   Par defaut IDL peut faire des extractions de sous domaines:          IDL  a indgen 5 5          IDL  print  a                0       1       2       3       4               5       6       7       8       9              10      11      12      13      14              15      16      17      18      19              20      21      22      23      24        IDL  print  a 0 2 3                15      17        IDL  print  a 0 2                  0       2               5       7              10      12              15      17              20      22   mais         IDL  print  a 0 2 3 4                15      22   alors que        IDL  print  extrait a 0 2 3 4                 15      17              20      22     CATEGORY:bidouille avec les matrices     CALLING SEQUENCE:res extrait tab indicex indicey indicez indicet      INPUTS:          tab: un tableau 1 2 3 ou 4 d            indicex: indicex peut avoir deux formes:                1 un vecteur contenant les indices des lignes a garder                2 le string   dans ce cas touts les lignes sont                gardees            indicey z t: la meme chose que indicex mais pour les          dimensions 2 3 et 4             rq: il faut autant de vecteurs indice que tab a de dimensions     KEYWORD PARAMETERS:     OUTPUTS:           res: une matice 1 2 3 ou 4d extraite a partir de tab     COMMON BLOCKS:     SIDE EFFECTS:res 1 en cas d erreur     RESTRICTIONS:     EXAMPLE:   j ai une matrice A de dim 2  je veux en extraire une petite matrice   2d interscetion de la ligne 2 3 et 7 et de la colonne 0 et 1                res extrait A 2 3 7 0 1     autre ex:        IDL  print  a         a b c        d e f        g h i        IDL  print  extrait a 0 2 0 2                 a c        g i     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          12 1 1999                         29 4 1999: correction d un bug et complement                         de l en tete         FUNCTION extrait  tab  indicex  indicey  indicez  indicet       compile_opt idl2  strictarrsubs      taille   size tab      test du nombre de parametres   et de la nature de indice  pour LE cas  x       if n_params  NE taille 0 1 THEN       return  report il faut autant d indices que de dimension du tableau     IF n_params  GE 5 THEN BEGIN        if size indicet type  EQ 7 then indicet   lindgen taille 4          ELSE indicet   long indicet        nt   n_elements indicet      ENDIF     IF n_params  GE 4 THEN BEGIN        if size indicez type  EQ 7 then indicez   lindgen taille 3          ELSE indicez   long indicez        nz   n_elements indicez      ENDIF     IF n_params  GE 3 THEN BEGIN        if size indicey type  EQ 7 then indicey   lindgen taille 2          ELSE indicey   long indicey        ny   n_elements indicey      ENDIF    IF n_params  GE 2 THEN BEGIN        if size indicex type  EQ 7 then indicex   lindgen taille 1          ELSE indicex   long indicex        nx   n_elements indicex      ENDIF         construction du tableau d indice et du resultat suivant la taille   de tab     case taille 0  of       1:res   tab indicex        2:BEGIN          indice   indicex replicate 1  ny taille 1 replicate 1  nx indicey          res   tab indice        END        3:BEGIN          indice   indicex replicate 1  ny taille 1 replicate 1  nx indicey          indice   temporary indice replicate 1  nz               taille 1 taille 2 replicate 1  nx ny indicez          res   tab reform indice  nx  ny  nz   over        END        4:BEGIN          indice   indicex replicate 1  ny taille 1 replicate 1  nx indicey          indice   temporary indice replicate 1  nz               taille 1 taille 2 replicate 1  nx ny indicez          indice   temporary indice replicate 1  nt               taille 1 taille 2 taille 3 replicate 1  nx ny nz indicet          res   tab reform indice  nx  ny  nz  nz   over        END     endcase          return  res end"); 
    242242a[240] = new Array("./ToBeReviewed/MATRICE/inter.html", "inter.pro", "", "          NAME:inter     PURPOSE:calcule l intersection de 2 matrices D ENTIERS POSITIFS     CATEGORY:calcule sur les matrices     CALLING SEQUENCE:res inter a b      INPUTS:a et b:arrays of positive integers  which need not to be   sorted  Duplicate elements are ignored  as they have noeffect 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      inter a b      2  6          Common elements     MODIFICATION HISTORY:      http: www dfanning com tips set_operations html          FUNCTION inter  a  b       compile_opt idl2  strictarrsubs      case 1 of       n_elements a  EQ 0:return    1       n_elements b  EQ 0:return    1       n_elements a  EQ 1 AND n_elements b  NE 1:          if  where b EQ a 0 0  EQ  1 then return   1 ELSE return   a 0        n_elements b  EQ 1 AND n_elements a  NE 1:          if  where a EQ b 0 0  EQ  1 then return   1 ELSE return   b 0        n_elements a  EQ 1 AND n_elements b  EQ 1:          if  where a 0  EQ b 0 0  EQ  1 then return   1 ELSE return   a 0        ELSE:    ENDCASE   minab   Min a  Max maxa    Min b  Max maxb   Only need intersection of ranges maxab   maxa   maxb       If either set is empty  or their ranges don t intersect: result   NULL   IF maxab LT minab OR maxab LT 0 THEN RETURN   1 r   Where Histogram a  Min minab  Max maxab               Histogram b  Min minab  Max maxab  count   IF count EQ 0 THEN RETURN   1 ELSE RETURN  r   minab END"); 
    243 a[241] = new Array("./ToBeReviewed/MATRICE/make_selection.html", "make_selection.pro", "", "   Id: make_selection pro 31 2006 05 02 13:54:11Z pinsard         NAME:          MAKE_SELECTION  function      PURPOSE:          Convert an array of selected values to an index          array that identifies the selected values in a list          or data array       CATEGORY:          Tools     CALLING SEQUENCE:          index   MAKE_SELECTION NAMES SELNAMES  keywords      INPUTS:          NAMES   A list or array of values to choose from             SELNAMES   A list of selected values     KEYWORD PARAMETERS:          ONLY_VALID   Return only indices of found values  Values not              found are skipped  Default is to return 1 index value for              each SELNAME  which is  1 if SELNAME is not contained in               NAMES  If ONLY_VALID is set  the  1 values will be deleted               and a value of  1 indicates that no SELNAME has been found              at all             REQUIRED   Normally  MAKE_SELECTION will return indices for              all values that are found  simply ignoring the selected              values that are not in the NAMES array  although an error              message is displayed  Set this keyword to return with               1 as soon as a selected value is not found             QUIET   Suppress printing of the error message if a              selected value is not found  the error condition will              still be set      OUTPUTS:          A  long  array with indices to reference the selected values          in the NAMES array      SUBROUTINES:     REQUIREMENTS:     NOTES:          If the NAMES array contains multiple entries of the same value           only the index to the first entry will be returned             A selection can contain multiple instances of the same value           The index array will contain one entry per selected item           See example below      EXAMPLE:          names      Alfred Anton Peter John Mary           index   MAKE_SELECTION names Peter Mary           print index            prints  2  4            vals   indgen 20           index   MAKE_SELECTION vals 9 5 8 7 7 8 9           print index            prints  9   1  8  7  7  8  9            index   MAKE_SELECTION vals 9 5 8 7 7 8 9 ONLY_VALID           print index            prints  9  8  7  7  8  9            index   MAKE_SELECTION vals 9 5 8 7 7 8 9 REQUIRED           print index            prints   1       MODIFICATION HISTORY:          mgs  28 Aug 1998: VERSION 1 00          mgs  29 Aug 1998:   changed behaviour and added ONLY_VALID keyword       Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine make_selection      function make_selection names selnames                 only_valid only_valid required required                 quiet quiet     compile_opt idl2  strictarrsubs               return an index array with a number for each element in        selnames that is found in names        Set the REQUIRED keyword to return  1 if one element is       not found  otherwise  1 will only be returned  if no        element is found          reset error state to 0     message reset       quiet   keyword_set quiet      result    1L       for i 0 n_elements selnames 1 do begin        test   where names eq selnames i         result     result  test 0            if  test 0  lt 0  then begin            if  keyword_set ONLY_VALID  OR keyword_set REQUIRED  then                 message Selected name not found in names array                           strtrim selnames i 2 CONT NOPRINT quiet            if  keyword_set required  then return 1L        endif     endfor       if  n_elements result  gt 1  then result   result 1:       if  keyword_set only_valid  then begin         ind   where result ge 0          if  ind 0  ge 0  then result   result ind            else result    1L     endif       return result   end"); 
     243a[241] = new Array("./ToBeReviewed/MATRICE/make_selection.html", "make_selection.pro", "", "   Id: make_selection pro 114 2006 06 19 14:14:56Z smasson         NAME:          MAKE_SELECTION  function      PURPOSE:          Convert an array of selected values to an index          array that identifies the selected values in a list          or data array       CATEGORY:          Tools     CALLING SEQUENCE:          index   MAKE_SELECTION NAMES SELNAMES  keywords      INPUTS:          NAMES   A list or array of values to choose from             SELNAMES   A list of selected values     KEYWORD PARAMETERS:          ONLY_VALID   Return only indices of found values  Values not              found are skipped  Default is to return 1 index value for              each SELNAME  which is  1 if SELNAME is not contained in               NAMES  If ONLY_VALID is set  the  1 values will be deleted               and a value of  1 indicates that no SELNAME has been found              at all             REQUIRED   Normally  MAKE_SELECTION will return indices for              all values that are found  simply ignoring the selected              values that are not in the NAMES array  although an error              message is displayed  Set this keyword to return with               1 as soon as a selected value is not found             QUIET   Suppress printing of the error message if a              selected value is not found  the error condition will              still be set      OUTPUTS:          A  long  array with indices to reference the selected values          in the NAMES array      SUBROUTINES:     REQUIREMENTS:     NOTES:          If the NAMES array contains multiple entries of the same value           only the index to the first entry will be returned             A selection can contain multiple instances of the same value           The index array will contain one entry per selected item           See example below      EXAMPLE:          names      Alfred Anton Peter John Mary           index   MAKE_SELECTION names Peter Mary           print index            prints  2  4            vals   indgen 20           index   MAKE_SELECTION vals 9 5 8 7 7 8 9           print index            prints  9   1  8  7  7  8  9            index   MAKE_SELECTION vals 9 5 8 7 7 8 9 ONLY_VALID           print index            prints  9  8  7  7  8  9            index   MAKE_SELECTION vals 9 5 8 7 7 8 9 REQUIRED           print index            prints   1       MODIFICATION HISTORY:          mgs  28 Aug 1998: VERSION 1 00          mgs  29 Aug 1998:   changed behaviour and added ONLY_VALID keyword       Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine make_selection      function make_selection names selnames                 only_valid only_valid required required                 quiet quiet     compile_opt idl2  strictarrsubs               return an index array with a number for each element in        selnames that is found in names        Set the REQUIRED keyword to return  1 if one element is       not found  otherwise  1 will only be returned  if no        element is found          reset error state to 0     message reset       quiet   keyword_set quiet      result    1L       for i 0 n_elements selnames 1 do begin        test   where names eq selnames i         result     result  test 0            if  test 0  lt 0  then begin            if  keyword_set ONLY_VALID  OR keyword_set REQUIRED  then                 message Selected name not found in names array                           strtrim selnames i 2 CONT NOPRINT quiet            if  keyword_set required  then return 1L        endif     endfor       if  n_elements result  gt 1  then result   result 1:       if  keyword_set only_valid  then begin         ind   where result ge 0          if  ind 0  ge 0  then result   result ind            else result    1L     endif       return result   end"); 
    244244a[242] = 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     compile_opt idl2  strictarrsubs   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"); 
    245245a[243] = 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     compile_opt idl2  strictarrsubs      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"); 
    246 a[244] = 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     compile_opt idl2  strictarrsubs   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"); 
     246a[244] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", "   Id: bar_plot pro 114 2006 06 19 14:14:56Z smasson       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     compile_opt idl2  strictarrsubs   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"); 
    247247a[245] = 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     compile_opt idl2  strictarrsubs    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  "); 
    248248a[246] = 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     compile_opt idl2  strictarrsubs    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  "); 
     
    272272a[270] = 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       compile_opt idl2  strictarrsubs    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"); 
    273273a[271] = 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     compile_opt idl2  strictarrsubs    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"); 
    274 a[272] = 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     compile_opt idl2  strictarrsubs   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"); 
     274a[272] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", "   Id: label_date pro 114 2006 06 19 14:14:56Z smasson       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     compile_opt idl2  strictarrsubs   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"); 
    275275a[273] = 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     compile_opt idl2  strictarrsubs    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 "); 
    276276a[274] = 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      compile_opt idl2  strictarrsubs      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 "); 
     
    278278a[276] = 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     compile_opt idl2  strictarrsubs    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  "); 
    279279a[277] = 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        compile_opt idl2  strictarrsubs    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       compile_opt idl2  strictarrsubs      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     compile_opt idl2  strictarrsubs    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     "); 
    280 a[278] = 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     compile_opt idl2  strictarrsubs           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"); 
     280a[278] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", "   Id: velovect pro 114 2006 06 19 14:14:56Z smasson       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     compile_opt idl2  strictarrsubs           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"); 
    281281a[279] = 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     compile_opt idl2  strictarrsubs    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"); 
    282282a[280] = 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     compile_opt idl2  strictarrsubs    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"); 
     
    292292a[290] = new Array("./ToBeReviewed/STATISTICS/c_timecorrelate.html", "c_timecorrelate.pro", "", "    NAME:         C_TIMECORRELATE     PURPOSE:         This function computes the  time cross correlation  Pxy L  or         the  time cross covariance  between 2 arrays  this is some         kind of c_correlate but for multidimenstionals arrays  as a         function of the lag  L      CATEGORY:         Statistics      CALLING SEQUENCE:         Result   c_timecorrelate X  Y  Lag      INPUTS:         X:   an Array which last dimension is the time dimension of         size n  float or double            Y:    an Array which last dimension is the time dimension of         size n  float or double          LAG:    A scalar or n element vector  in the interval  n 2   n 2                of type integer that specifies the absolute distance s  between               indexed elements of X      KEYWORD PARAMETERS:         COVARIANCE:    If set to a non zero value  the sample cross                         covariance is computed            DOUBLE:        If set to a non zero value  computations are done in                        double precision arithmetic      EXAMPLE         Define two n element sample populations            x    3 73  3 67  3 77  3 83  4 67  5 87  6 70  6 97  6 40  5 57            y    2 31  2 76  3 02  3 13  3 72  3 88  3 97  4 39  4 34  3 95            Compute the cross correlation of X and Y for LAG    5  0  1  5  6  7           lag    5  0  1  5  6  7            result   c_timecorrelate x  y  lag            The result should be:            0 428246  0 914755  0 674547   0 405140   0 403100   0 339685      PROCEDURE:         FOR L 0                                   n L 1                                 sigma   X k Xmean Y k L Ymean                                  k 0     correlation X Y L                                 n 1                     n 1                        sqrt   sigma   X k Xmean 2 sigma   Y k Ymean 2                                 k 0                     k 0                                      n L 1                                 sigma   X k Xmean Y k L Ymean                                  k 0     covariance X Y L                                               n       FOR L 0                                    n L 1                                 sigma   X k L Xmean Y k Ymean                                  k 0     correlation X Y L                                 n 1                     n 1                        sqrt   sigma   X k Xmean 2 sigma   Y k Ymean 2                                 k 0                     k 0                                      n L 1                                 sigma   X k L Xmean Y k Ymean                                  k 0     covariance X Y L                                               n       Where Xmean and Ymean are the time means of the sample populations     x x t 0 x t 1 x t n 1  and y y t 0 y t 1 y t n 1      respectively          REFERENCE:         INTRODUCTION TO STATISTICAL TIME SERIES         Wayne A  Fuller         ISBN 0 471 28715 6     MODIFICATION HISTORY:           01 03 2000 Sebastien Masson  smasson lodyc jussieu fr          Based on the C_CORRELATE procedure of IDL           August 2003 Sebastien Masson          update according to the update made in C_CORRELATE by         W  Biagiotti and available in IDL 5 5    FUNCTION TimeCross_Cov  Xd  Yd  M  nT  Ndim  Double   Double  ZERO2NAN   zero2nan    Sample cross covariance function     compile_opt hidden      case Ndim OF       1:res   TOTAL Xd 0:nT   M   1L    Yd M:nT   1L                          Double   Double        2:res   TOTAL Xd  0:nT   M   1L    Yd  M:nT   1L                          Ndim  Double   Double        3:res   TOTAL Xd    0:nT   M   1L    Yd    M:nT   1L                          Ndim  Double   Double        4:res   TOTAL Xd      0:nT   M   1L    Yd      M:nT   1L                          Ndim  Double   Double     ENDCASE    if keyword_set zero2nan  then begin       zero   where res EQ 0        if zero 0  NE  1 then res zero     values f_nan    ENDIF      RETURN  res  END  FUNCTION C_Timecorrelate  X  Y  Lag  Covariance   Covariance  Double   Double   Compute the sample cross correlation or cross covariance of   Xt  Xt l  and  Yt  Yt l  as a function of the lag  l      ON_ERROR  2     xsize   SIZE X     ysize   SIZE Y     nt   float xsize xsize 0     NDim   xsize 0      if total xsize 0:xsize 0  NE ysize 0:ysize 0  NE 0 then       MESSAGE   X and Y arrays must have the same size and the same dimensions    Check length     if nt lt 2 then       MESSAGE   Time dimension of X and Y arrays must contain 2 or more elements       If the DOUBLE keyword is not set then the internal precision and  result are identical to the type of input     if N_ELEMENTS Double  eq 0 then       Double    Xsize Xsize 0 1  eq 5 or ysize ysize 0 1  eq 5      if n_elements lag  EQ 0 then lag   0    nLag   N_ELEMENTS Lag    Deviations    if double then one   1 0d ELSE one   1 0    Ndim   size X   n_dimensions     Xd   TOTAL X  Ndim  Double   Double    nT    Xd   X   Xd replicate one   nT     Yd   TOTAL Y  Ndim  Double   Double    nT    Yd   Y   Yd replicate one   nT      if nLag eq 1 then Lag    Lag   Create a 1 element vector      case NDim of       1:if Double eq 0 then  Cross   FLTARR nLag  else  Cross   DBLARR nLag        2:if Double eq 0 then  Cross   FLTARR Xsize 1  nLag  else  Cross   DBLARR Xsize 1  nLag        3:if Double eq 0 then  Cross   FLTARR Xsize 1  Xsize 2  nLag          else  Cross   DBLARR Xsize 1  Xsize 2  nLag        4:if Double eq 0 then  Cross   FLTARR Xsize 1  Xsize 2  Xsize 3  nLag          else  Cross   DBLARR Xsize 1  Xsize 2  Xsize 3  nLag     endcase     if KEYWORD_SET Covariance  eq 0 then begin  Compute Cross  Crossation        for k   0  nLag 1 do begin          if Lag k  ge 0 then BEGIN              case NDim of                1: Cross k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double                 2: Cross  k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double                 3: Cross    k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double                 4: Cross      k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double                endcase          ENDIF else BEGIN              case NDim of                1: Cross k    TimeCross_Cov Yd  Xd  ABS Lag k  nT  Ndim  Double   Double                 2: Cross  k    TimeCross_Cov Yd  Xd  ABS Lag k  nT  Ndim  Double   Double                 3: Cross    k    TimeCross_Cov Yd  Xd  ABS Lag k  nT  Ndim  Double   Double                 4: Cross      k    TimeCross_Cov Yd  Xd  ABS Lag k  nT  Ndim  Double   Double               endcase          ENDELSE         ENDFOR        div   sqrt TimeCross_Cov Xd  Xd  0L  nT  Ndim  Double   Double   zero2nan                        TimeCross_Cov Yd  Yd  0L  nT  Ndim  Double   Double   zero2nan         Cross   temporary Cross temporary div replicate one  nLag     endif else begin              Compute Cross Covariance        for k   0  nLag 1 do begin          if Lag k  ge 0 then BEGIN             case NDim of                1: Cross k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double    nT                2: Cross  k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double    nT                3: Cross    k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double    nT                4: Cross      k    TimeCross_Cov Xd  Yd  Lag k  nT  Ndim  Double   Double    nT             ENDCASE          ENDIF else BEGIN              case NDim of                1: Cross k    TimeCross_Cov yd  xd  ABS Lag k  nT  Ndim  Double   Double    nT                2: Cross  k    TimeCross_Cov yd  xd  ABS Lag k  nT  Ndim  Double   Double    nT                3: Cross    k    TimeCross_Cov yd  xd  ABS Lag k  nT  Ndim  Double   Double    nT                4: Cross      k    TimeCross_Cov yd  xd  ABS Lag k  nT  Ndim  Double   Double    nT             ENDCASE          ENDELSE        endfor    endelse     if Double eq 0 then RETURN  FLOAT Cross  else RETURN   Cross  END   "); 
    293293a[291] = new Array("./ToBeReviewed/STRING/chkeywd.html", "chkeywd.pro", "", "          NAME: chkeywd  change keyword      PURPOSE: ds un string qui contient une commande a executer avec   EXECUTE par ex  On change la valeur d un des mot cle    Plus generalement  ds un string  on cherche la chaine de   chacarteres:   keywdname    et on change la valeur de       CATEGORY: pour bidouiller des commandes passees par execute     CALLING SEQUENCE: stringout chkeywd stringin  keywdname  keywdvalue       INPUTS:        stringin: un string        keywdname: un string designant le nom du mot clef a chercher         keywdvalue: nouvelle valeur du mot clef a considerer ds stringin     KEYWORD PARAMETERS:        pour chercher le mot cle  on cherche le premier signe   qui        suit la position de keywdname  on substitue        pardefaut tout le bout de string qui suit jusqu a la prochaine        virgule  avec les mots cles SEPARATOR et AFTER on peut modifier        cette decoupe du string:        SEPARATOR donne un chatactere avant  ou apres si AFTER est        active  lequel il faut chercher la virgule qui delimite le mot        cle ds le string  cf  les exemples     OUTPUTS:stringout stringin modifie si keywdname a ete trouve ds   stringin     COMMON BLOCKS:common pro     SIDE EFFECTS:          Si keywdvalue est un tableau  il sera convertit en vecteur      RESTRICTIONS:       attention cette fonction comporte des boucles  des if et des cases     ds tous les sens  Elle ne doit donc pas etre utilisee avec des     mots clefs de grosse taille  avec bcp d elements et avec des     elements etant de gros tableaux      le mot clef en entree ne doit pas contenir de Complex floating  de     structure  de Double precision complex  de Pointer  de Object     reference  de Unsigned Integer  de Unsigned Longword Integer  de     64 bit Integer  de Unsigned 64 bit Integer      EXAMPLE:       IDL  b ok 111  year 1997 1998 1999  age_capitaine 35      IDL  print  b     ok 111  year 1997 1998 1999  age_capitaine 35     IDL  print  chkeywd b ok c est bon      ok c est bon  year 1997 1998 1999  age_capitaine 35     IDL  print  chkeywd b YEAR indgen 5 sep      ok 111  year 0 1 2 3 4  age_capitaine 35     IDL  print  chkeywd b YEAR indgen 5 sep after      ok 111  year 0 1 2 3 4  age_capitaine 35     IDL  b ok 111   year   age_capitaine      IDL  print  chkeywd b year c est bon      ok 111  year c est bon   age_capitaine     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999                        24 11 1999: adaptation pour les mots cles                        commencant par           FUNCTION chkeywd  stringin  keywdname  keywdvalue  SEPARATOR   separator  AFTER   after     compile_opt idl2  strictarrsubs       stringout   stringin    poskeywd   strpos strlowcase stringout  strlowcase keywdname     if poskeywd EQ  1 then return  stringout    while poskeywd NE  1 do BEGIN   changer un mot cle qui commence par  toto       if strmid stringout poskeywd 1 1  EQ   then BEGIN          ajoute   keywdname tostr keywdvalue           stringout   strmid stringout  0  poskeywd 1 ajoute strmid stringout poskeywd strlen keywdname             poskeywd   poskeywd strlen ajoute           poskeywd   strpos stringout  keywdname  poskeywd        ENDIF ELSE BEGIN    changer un mot cle qui commence par toto           posegal   strpos stringout    poskeywd           if posegal EQ  1 then return  stringout           if NOT keyword_set separator  then separator              posvirgule   strpos stringout  separator  posegal 1           if keyword_set after  then posvirgule   strpos stringout    posvirgule 1             ELSE posvirgule   rstrpos stringout    posvirgule 1           if posvirgule EQ  1 then posvirgule   strlen stringout             stringout   strmid stringout  0  posegal 1 tostr keywdvalue strmid stringout  posvirgule             poskeywd   strpos stringout  keywdname  posvirgule 1        ENDELSE     endwhile     return   stringout end"); 
    294 a[292] = new Array("./ToBeReviewed/STRING/delchr.html", "delchr.pro", "", "      NAME:         DELCHR   PURPOSE:         Delete all occurrences of a character from a text string    CATEGORY:   CALLING SEQUENCE:         new   delchr old  char    INPUTS:         old   original text string      in         char   character to delete      in   KEYWORD PARAMETERS:   OUTPUTS:         new   resulting string          out   COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner   5 Jul  1988          Johns Hopkins Applied Physics Lab          RES 11 Sep  1989   converted to SUN          R  Sterner  27 Jan  1993   dropped reference to array      Copyright  C  1988  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         FUNCTION DELCHR  OLD  C  help hlp    if  n_params 0  lt 2  or keyword_set hlp  then begin    print  Delete all occurrences of a character from a text string     print  new   delchr old  char     print    old   original text string      in     print    char   character to delete      in     print    new   resulting string          out     return   1  endif    B   BYTE OLD      convert string to a byte array   CB   BYTE C      convert char to byte   w   where b ne cb 0   if w 0  eq  1 then return        Nothing left   return  string b w      Return new string   END"); 
    295 a[293] = new Array("./ToBeReviewed/STRING/getfile.html", "getfile.pro", "", "      NAME:         GETFILE   PURPOSE:         Read a text file into a string array    CATEGORY:   CALLING SEQUENCE:         s   getfile f    INPUTS:         f   text file name       in   KEYWORD PARAMETERS:         Keywords:           ERROR err  error flag: 0 ok  1 file not opened              2 no lines in file             QUIET means give no error message               FIND search te file in the all  path directories  use           find pro      OUTPUTS:         s   string array         out   COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner  20 Mar  1990           S  Masson  smasson lodyc jussieu fr  4 Feb 2002         search te file in the all  path directories  use find pro          when using  find keyword  Use spawn   cat  for unix os      Copyright  C  1990  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         function getfile  filein  error err  help hlp  quiet quiet  find   find                        if  n_params 0  lt 1  or keyword_set hlp  then begin               print  Read a text file into a string array                print  s   getfile f                print    f   text file name       in                print    s   string array         out                print  Keywords:                print    ERROR err  error flag: 0 ok  1 file not opened                print      2 no lines in file                print     QUIET means give no error message                return   1            endif              if keyword_set find  then begin               file   find filein                file   file 0                if file EQ  NOT FOUND  then begin                  print    Error in getfile: File  filein  not fouond                   return   1               endif            ENDIF ELSE file   filein            if  version os_family EQ  unix  then begin               spawn   cat  file   res               if res 0  NE   then return  res ELSE return               endif               get_lun  lun            on_ioerror  err            openr  lun  file                        s                  t                            while not eof lun  do begin               readf  lun  t               s    s t             endwhile                        close  lun            free_lun  lun            if n_elements s  eq 1 then begin               if not keyword_set quiet  then print  No lines in file                err   2               return 1            endif                        err   0            return  s 1:                         err: if  err eq  168 then begin               if not keyword_set quiet  then print  Non standard text file format                free_lun  lun               return  s 1:             endif            if not keyword_set quiet  then print                Error in getfile: File  file  not opened             free_lun  lun            err   1            return   1                     end"); 
    296 a[294] = new Array("./ToBeReviewed/STRING/getwrd.html", "getwrd.pro", "", "      NAME:         GETWRD   PURPOSE:         Return the n th word from a text string    CATEGORY:   CALLING SEQUENCE:         wrd   getwrd txt  n   m    INPUTS:         txt   text string to extract from          in         n   word number to get  first   0   def   in         m   optional last word number to get       in   KEYWORD PARAMETERS:         Keywords:           LOCATION   l   Return word n string location            DELIMITER   d  Set word delimiter  def   space   tab             LAST means n is offset from last word   So n 0 gives             last word  n 1 gives next to last                If n 2 and m 0 then last 3 words are returned             NOTRIM suppresses whitespace trimming on ends            NWORDS n   Returns number of words in string    OUTPUTS:         wrd   returned word or words               out   COMMON BLOCKS:         getwrd_com   NOTES:         Note: If a NULL string is given  txt  then the last string               given is used   This saves finding the words again                If m   n wrd will be a string of words from word n to               word m   If no m is given wrd will be a single word                n n wrd will be a string of words from word n to     print       word m   If no m is given wrd will be a single word     print       n 0  Smaller of in and im    im   im   0   to zero     if  in gt lst  and  im gt lst  then return    Out of range     in   in   lst  Larger of in and im    im   im   lst   to be last     ll   loc in  Nth word start     return  strtrim strmid txtstr0 ll loc im loc in len im  2    endif    N   ABS NTH  Allow nth 0   IF N GT NWDS 1 THEN RETURN  out of range  null   ll   loc n  N th word position   IF NTH LT 0 THEN GOTO  NEG  Handle nth 0   IF MTH GT NWDS 1 THEN MTH   NWDS 1  Words to end     if keyword_set notrim  then begin    RETURN  STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH   endif else begin    RETURN  strtrim STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH  2    endelse   NEG: if keyword_set notrim  then begin    RETURN  STRMID TXTSTR0 ll 9999   endif else begin    RETURN  strtrim STRMID TXTSTR0 ll 9999  2   endelse    END"); 
    297 a[295] = new Array("./ToBeReviewed/STRING/isnumber.html", "isnumber.pro", "", "      NAME:         ISNUMBER   PURPOSE:         Determine if a text string is a valid number    CATEGORY:   CALLING SEQUENCE:         i   isnumber txt   x    INPUTS:         txt   text string to test                       in   KEYWORD PARAMETERS:   OUTPUTS:         x   optionaly returned numeric value if valid   out         i   test flag:                                  out             0: not a number              1: txt is a long integer              2: txt is a float               1: first word of txt is a long integer               2: first word of txt is a float    COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner   15 Oct  1986          Johns Hopkins Applied Physics Lab          R  Sterner  12 Mar  1990   upgraded   Richard Garrett  14 June  1992   fixed bug in returned float value      Copyright  C  1986  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         FUNCTION ISNUMBER  TXT0  X  help hlp           if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Determine if a text string is a valid number     print  i   isnumber txt   x     print    txt   text string to test                       in     print    x   optionaly returned numeric value if valid   out     print    i   test flag:                                  out     print        0: not a number     print        1: txt is a long integer     print        2: txt is a float     print         1: first word of txt is a long integer     print         2: first word of txt is a float     return   1  endif    TXT   STRTRIM TXT0 2  trim blanks   X   0  define X     IF TXT EQ   THEN RETURN  0  null string not a number     SN   1  IF NWRDS TXT  GT 1 THEN BEGIN  get first word if more than one     SN    1    TXT   GETWRD TXT 0   ENDIF      f_flag   0  Floating flag   b   byte txt   w   where b eq 43  cnt   if cnt gt 1 then return  0  t   delchr txt   w   where b eq 45  cnt   if cnt gt 1 then return  0  t   delchr t   w   where b eq 46  cnt     if cnt gt 1 then return  0  May only be 1   if cnt eq 1 then f_flag   1  If one then floating   t   delchr t   w   where b eq 101  cnt   e   if cnt gt 1 then return  0  if cnt eq 1 then f_flag   1  t   delchr t e   w   where b eq 69  cnt   E   if cnt gt 1 then return  0  if cnt eq 1 then f_flag   1  t   delchr t E   w   where b eq 100  cnt   d   if cnt gt 1 then return  0  if cnt eq 1 then f_flag   1  t   delchr t d   w   where b eq 68  cnt   D   if cnt gt 1 then return  0  if cnt eq 1 then f_flag   1  t   delchr t D   if total b eq 101 b eq 69 b eq 100 b eq 68  gt 1 then return 0  b   byte t   if total b ge 65  and  b le 122  ne 0 then return  0    c   strmid t 0 1   if  c lt  0  or  c gt  9  then return  0    First char not a digit     x   txt   0 0       Convert to a float   if f_flag eq 1 then return  2 sn       Was floating   if x eq long x  then begin    x   long x     return  sn  endif else begin    return  2 sn  endelse    END"); 
     294a[292] = new Array("./ToBeReviewed/STRING/delchr.html", "delchr.pro", "", "      NAME:         DELCHR   PURPOSE:         Delete all occurrences of a character from a text string    CATEGORY:   CALLING SEQUENCE:         new   delchr old  char    INPUTS:         old   original text string      in         char   character to delete      in   KEYWORD PARAMETERS:   OUTPUTS:         new   resulting string          out   COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner   5 Jul  1988          Johns Hopkins Applied Physics Lab          RES 11 Sep  1989   converted to SUN          R  Sterner  27 Jan  1993   dropped reference to array      Copyright  C  1988  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         FUNCTION DELCHR  OLD  C  help hlp     compile_opt idl2  strictarrsubs      if  n_params 0  lt 2  or keyword_set hlp  then begin    print  Delete all occurrences of a character from a text string     print  new   delchr old  char     print    old   original text string      in     print    char   character to delete      in     print    new   resulting string          out     return   1  endif    B   BYTE OLD      convert string to a byte array   CB   BYTE C      convert char to byte   w   where b ne cb 0   if w 0  eq  1 then return        Nothing left   return  string b w      Return new string   END"); 
     295a[293] = new Array("./ToBeReviewed/STRING/getfile.html", "getfile.pro", "", "      NAME:         GETFILE   PURPOSE:         Read a text file into a string array    CATEGORY:   CALLING SEQUENCE:         s   getfile f    INPUTS:         f   text file name       in   KEYWORD PARAMETERS:         Keywords:           ERROR err  error flag: 0 ok  1 file not opened              2 no lines in file             QUIET means give no error message            LINES n  Number of lines to read  def all              Much faster if number of lines is known              Automatic for IDL 5 6 or later             FIND search te file in the all  path directories  use           find pro    OUTPUTS:         s   string array         out   COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner  20 Mar  1990         R  Sterner  1999 Apr 14   Added LINES n keyword          R  Sterner  2003 Aug 29   Automatic lines if IDL 5 6          R  Sterner  2003 Sep 02   Check if file exists first          R  Sterner  2003 Sep 04   Fixed error in number of lines in file          R  Sterner  2003 Oct 10   Fixed error when no lines          R  Sterner  2004 Jan 27   Fixed to work in IDL as old as vers 4            S  Masson  smasson lodyc jussieu fr  4 Feb 2002         search te file in the all  path directories  use find pro          when using  find keyword  Use spawn   cat  for unix os      Copyright  C  1990  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         function getfile  filein  error err  help hlp  quiet quiet  lines lines  find   find     compile_opt idl2  strictarrsubs      if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Read a text file into a string array     print  s   getfile f     print    f   text file name       in     print    s   string array         out     print  Keywords:     print    ERROR err  error flag: 0 ok  1 file not opened     print      2 no lines in file     print     QUIET means give no error message     print    LINES n  Number of lines to read  def all     print      Much faster if number of lines is known     print      Automatic for IDL 5 6 or later     return   1  endif           if keyword_set find  then begin           file   find filein            file   file 0            if file EQ  NOT FOUND  then begin             print    Error in getfile: File  filein  not fouond              return   1           endif         ENDIF ELSE file   filein         if  version os_family EQ  unix  then begin           spawn   cat  file   res           if res 0  NE   then return  res ELSE return            endif                  if  version release 0  ge 5 5  then begin           f   call_function file_search  file  count   c   endif else begin    f   findfile file count c   endelse  if c eq 0 then begin    err   1    return   endif    if n_elements line  eq 0 and  version release 0  ge 5 6  then begin    lines   file_lines file     if lines eq 0 then begin      if not keyword_set quiet  then print  No lines in file       err   2      return 1    endif    minlines   0  endif else minlines 1    get_lun  lun  on_ioerror  err  openr  lun  file    if n_elements lines  ne 0 then begin    s   strarr lines     readf lun s  endif else begin    s          t        while not eof lun  do begin      readf  lun  t      s    s t     endwhile  endelse    close  lun  free_lun  lun  if n_elements s  eq minlines then begin    if not keyword_set quiet  then print  No lines in file     err   2    return 1  endif  if minlines eq 1 then s s 1:     err   0  return  s   err: if  err eq  168 then begin    if not keyword_set quiet  then print  Non standard text file format     free_lun  lun    return  s  endif  if not keyword_set quiet  then print       Error in getfile: File  file  not opened   free_lun  lun  err   1  return   1    end"); 
     296a[294] = new Array("./ToBeReviewed/STRING/getwrd.html", "getwrd.pro", "", "      NAME:         GETWRD   PURPOSE:         Return the n th word from a text string    CATEGORY:   CALLING SEQUENCE:         wrd   getwrd txt  n   m    INPUTS:         txt   text string to extract from          in           The first element is used if txt is an array          n   word number to get  first   0   def   in         m   optional last word number to get       in   KEYWORD PARAMETERS:         Keywords:           LOCATION   l   Return word n string location            DELIMITER   d  Set word delimiter  def   space   tab             LAST means n is offset from last word   So n 0 gives             last word  n 1 gives next to last                If n 2 and m 0 then last 3 words are returned             NOTRIM suppresses whitespace trimming on ends            NWORDS n   Returns number of words in string    OUTPUTS:         wrd   returned word or words               out   COMMON BLOCKS:         getwrd_com   NOTES:         Note: If a NULL string is given  txt  then the last string               given is used   This saves finding the words again                If m   n wrd will be a string of words from word n to               word m   If no m is given wrd will be a single word                n n wrd will be a string of words from word n to     print       word m   If no m is given wrd will be a single word     print       n 0  Smaller of in and im    im   im   0   to zero     if  in gt lst  and  im gt lst  then return    Out of range     in   in   lst  Larger of in and im    im   im   lst   to be last     ll   loc in  Nth word start     return  strtrim strmid txtstr0 ll loc im loc in len im  2    endif    N   ABS NTH  Allow nth 0   IF N GT NWDS 1 THEN RETURN  out of range  null   ll   loc n  N th word position   IF NTH LT 0 THEN GOTO  NEG  Handle nth 0   IF MTH GT NWDS 1 THEN MTH   NWDS 1  Words to end     if keyword_set notrim  then begin    RETURN  STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH   endif else begin    RETURN  strtrim STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH  2    endelse   NEG: if keyword_set notrim  then begin    RETURN  STRMID TXTSTR0 ll 9999   endif else begin    RETURN  strtrim STRMID TXTSTR0 ll 9999  2   endelse    END"); 
     297a[295] = new Array("./ToBeReviewed/STRING/isnumber.html", "isnumber.pro", "", "      NAME:         ISNUMBER   PURPOSE:         Determine if a text string is a valid number    CATEGORY:   CALLING SEQUENCE:         i   isnumber txt   x    INPUTS:         txt   text string to test                       in   KEYWORD PARAMETERS:   OUTPUTS:         x   optionaly returned numeric value if valid   out         i   test flag:                                  out             0: not a number              1: txt is a long integer              2: txt is a float               1: first word of txt is a long integer               2: first word of txt is a float    COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner   15 Oct  1986          Johns Hopkins Applied Physics Lab          R  Sterner  12 Mar  1990   upgraded          Richard Garrett  14 June  1992   fixed bug in returned float value          R  Sterner  1999 Nov 30   Fixed a bug found by Kristian Kjaer  Denmark     Copyright  C  1986  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         function isnumber  txt0  x  help hlp     compile_opt idl2  strictarrsubs     if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Determine if a text string is a valid number     print  i   isnumber txt   x     print    txt   text string to test                       in     print    x   optionaly returned numeric value if valid   out     print    i   test flag:                                  out     print        0: not a number     print        1: txt is a long integer     print        2: txt is a float     print         1: first word of txt is a long integer     print         2: first word of txt is a float     return   1  endif    txt   strtrim txt0 2  trim blanks   x   0  define X     if txt eq   then return  0  null string not a number     sn   1  if nwrds txt  gt 1 then begin  get first word if more than one     sn    1    txt   getwrd txt 0   endif      f_flag   0  Floating flag   b   byte txt  Convert to byte array   if b 0  eq 45 then b b 1:  Drop leading       Kristian Kjaer  if b 0  eq 43 then b b 1:  Drop leading       bug fix   w   where b eq 43  cnt  Look for    if cnt gt 1 then return  0  Alow only 1   t   delchr txt  Drop it   w   where b eq 45  cnt  Look for    if cnt gt 1 then return  0  Allow only 1   t   delchr t  Drop it   w   where b eq 46  cnt  Look for    if cnt gt 1 then return  0  Allow only 1   if cnt eq 1 then f_flag   1  If one then floating   t   delchr t  Drop it   w   where b eq 101  cnt  Look for  e   if cnt gt 1 then return  0  Allow only 1   if cnt eq 1 then f_flag   1  If 1 then assume float   t   delchr t e  Drop it   w   where b eq 69  cnt  Look for  E   if cnt gt 1 then return  0  Allow only 1   if cnt eq 1 then f_flag   1  If 1 then assume float   t   delchr t E  Drop it   w   where b eq 100  cnt  Look for  d   if cnt gt 1 then return  0  Allow only 1   if cnt eq 1 then f_flag   1  If 1 then assume float   t   delchr t d  Drop it   w   where b eq 68  cnt  Look for  D   if cnt gt 1 then return  0  Allow only 1   if cnt eq 1 then f_flag   1  If 1 then assume float   t   delchr t D  Drop it     Allow only one  e   E   d  or  D      if total b eq 101 b eq 69 b eq 100 b eq 68  gt 1 then return 0  b   byte t     Allow no alphabetic characters     if total b ge 65  and  b le 122  ne 0 then return  0    c   strmid t 0 1   if  c lt  0  or  c gt  9  then return  0    First char not a digit     x   txt   0 0       Convert to a float   if f_flag eq 1 then return  2 sn       Was floating   if x eq long x  then begin    x   long x     return  sn  endif else begin    return  2 sn  endelse    end"); 
    298298a[296] = new Array("./ToBeReviewed/STRING/lenstr.html", "lenstr.pro", "", "    ROUTINE:         lenstr   USEAGE:          result lenstr str      input:    str             a single string or string array       output:    result          length of the string s  in normalized units                    the number of elements of RESULT matches the number of                     elements of STRING       procedure:                    This function returns the physical length of the                    string on the output device  not the number of                    characters   This is done by first switching to  X                     and writing the string s  with XYOUTS in graphics                    mode 5  which disables display to the screen but                    does not interfere with operation of XYOUTS   The                    WIDTH keyword parameter of XYOUTS is used to                    retrieve the physical length of the string s       author:  Paul Ricchiazzi                            7apr93             Institute for Computational Earth System Science             University of California  Santa Barbara    function lenstr str     compile_opt idl2  strictarrsubs      dsave 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    255     p color 0    if  d n_colors gt 256 then  p background ffffff x     device get_graphics oldg set_graphics 5    if keyword_set charsize  eq 0 then charsize 1    nn n_elements str      case nn of        0:w 0        1:xyouts 0 0 device str width w        else:begin          w fltarr nn           for i 0 nn 1 do begin             xyouts 0 0 device str i width ww             w i ww          endfor       end    endcase     fac1 float d x_ch_size d x_vsize   ratio of char width to device1 width     device set_graphics oldg    set_plot dsave    IF dsave EQ  X  OR dsave EQ  MAC  OR dsave EQ  WIN  then BEGIN        p BACKGROUND d n_colors 1    255        p color 0       if  d n_colors gt 256 then  p background ffffff x    ENDIF     fac2 float d x_ch_size d x_vsize   ratio of char width to device2 width     return w fac2 fac1             string width adjusted for device width end "); 
    299 a[297] = new Array("./ToBeReviewed/STRING/nwrds.html", "nwrds.pro", "", "      NAME:         NWRDS   PURPOSE:         Return the number of words in the given text string    CATEGORY:   CALLING SEQUENCE:         n   nwrds txt    INPUTS:         txt   text string to examine              in   KEYWORD PARAMETERS:         Keywords:           DELIMITER   d   Set delimiter character  def   space    OUTPUTS:         n   number of words found                 out   COMMON BLOCKS:   NOTES:         Notes: See also getwrd    MODIFICATION HISTORY:         R  Sterner   7 Feb  1985          Johns Hopkins University Applied Physics Laboratory          RES 4 Sep  1989   converted to SUN      Copyright  C  1985  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt           function nwrds txtstr  help hlp  delimiter delim    if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Return the number of words in the given text string     print  n   nwrds txt     print    txt   text string to examine              in     print    n   number of words found                 out     print  Keywords:     print    DELIMITER   d   Set delimiter character  def   space     print  Notes: See also getwrd     return   1  endif    if strlen txtstr  eq 0 then return 0  A null string has 0 words   ddel       Default word delimiter is a space   if n_elements delim  ne 0 then ddel   delim   Use given word delimiter   tst    byte ddel 0  Delimiter as a byte value          tb   byte txtstr                                String to bytes          if ddel eq     then begin                       Check for tabs            w   where tb eq 9B  cnt                       Yes            if cnt gt 0 then tb w    32B                  Convert any to space          endif  x   tb ne tst  Locate words   x    0 x 0  Pad ends with delimiters     y    x shift x 1  eq 1  Look for word beginnings     n   fix total y  Count word beginnings     return  n    end"); 
    300 a[298] = new Array("./ToBeReviewed/STRING/putfile.html", "putfile.pro", "", "      NAME:         PUTFILE   PURPOSE:         Write a text file from a string array    CATEGORY:   CALLING SEQUENCE:         putfile  f  s   INPUTS:         f   text file name       in         s   string array         in   KEYWORD PARAMETERS:         Keywords:           ERROR err  error flag: 0 ok  1 invalid string array    OUTPUTS:   COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner  20 Mar  1990         R  Sterner   4 Nov  1992   allowed scalar strings      Copyright  C  1990  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         pro putfile  file  s  error err  help hlp    if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Write a text file from a string array     print  putfile  f  s     print    f   text file name       in     print    s   string array         in     print  Keywords:     print    ERROR err  error flag: 0 ok  1 invalid string array     return  endif           if lmgr demo  then begin            print   you are in Demo mode  It is impossible to write a file             return         endif     if size s   type  ne 7 then begin    print  Error in putfile: argument must be a string array     err   1    return  endif    get_lun  lun  openw  lun  file    for i   0  n_elements s 1 do begin    t   s i     if t eq   then t          printf  lun  t  endfor    close  lun  free_lun  lun  err   0  return    end"); 
    301 a[299] = new Array("./ToBeReviewed/STRING/str_size.html", "str_size.pro", "", "   Id: str_size pro 18 2006 05 02 09:32:05Z pinsard       NAME:    STR_SIZE     PURPOSE:      The purpose of this function is to return the proper    character size to make a specified string a specifed    width in a window  The width is specified in normalized    coordinates  The function is extremely useful for sizing    strings and labels in resizeable graphics windows      CATEGORY:      Graphics Programs  Widgets      CALLING SEQUENCE:      thisCharSize   STR_SIZE thisSting  targetWidth      INPUTS:      thisString:  This is the string that you want to make a specifed       target size or width      OPTIONAL INPUTS:      targetWidth:  This is the target width of the string in normalized       coordinates in the current graphics window  The character       size of the string  returned as thisCharSize  will be       calculated to get the string width as close as possible to       the target width  The default is 0 25      KEYWORD PARAMETERS:      INITSIZE:  This is the initial size of the string  Default is 1 0       STEP:   This is the amount the string size will change in each step       of the interative process of calculating the string size        The default value is 0 05      OUTPUTS:      thisCharSize:  This is the size the specified string should be set       to if you want to produce output of the specified target       width  The value is in standard character size units where       1 0 is the standard character size      EXAMPLE:      To make the string  Happy Holidays  take up 30  of the width of    the current graphics window  type this:                   XYOUTS  0 5  0 5  ALIGN 0 5   Happy Holidays             CHARSIZE STR_SIZE Happy Holidays  0 3      MODIFICATION HISTORY:      Written by: David Fanning  17 DEC 96     Added a scaling factor to take into account the aspect ratio       of the window in determing the character size  28 Oct 97  DWF    FUNCTION STR_SIZE  string  targetWidth  INITSIZE initsize  STEP step     compile_opt idl2  strictarrsubs    ON_ERROR  1       Check positional parameters   np   N_PARAMS  CASE np OF    0: MESSAGE   One string parameter is required     1: targetWidth   0 25    ELSE: ENDCASE       Check keywords  Assign default values   IF N_ELEMENTS step  EQ 0 THEN step   0 05 IF N_ELEMENTS initsize  EQ 0 THEN initsize   1 0       Calculate a trial width   size   initsize XYOUTS  0 5  0 5  ALIGN 0 5  string  WIDTH thisWidth          CHARSIZE size   NORMAL       Size is perfect   IF thisWidth EQ targetWidth THEN RETURN  size   Float D Y_Size D X_Size       Initial size is too big   IF thisWidth GT targetWidth THEN BEGIN    REPEAT BEGIN      XYOUTS  0 5  0 5  ALIGN 0 5  string  WIDTH thisWidth            CHARSIZE size   NORMAL       size   size   step    ENDREP UNTIL thisWidth LE targetWidth    RETURN  size   Float D Y_Size D X_Size ENDIF       Initial size is too small   IF thisWidth LT targetWidth THEN BEGIN    REPEAT BEGIN      XYOUTS  0 5  0 5  ALIGN 0 5  string  WIDTH thisWidth            CHARSIZE size   NORMAL       size   size   step    ENDREP UNTIL thisWidth GT targetWidth    size   size   step   Need a value slightly smaller than target     RETURN  size   Float D Y_Size D X_Size ENDIF  END"); 
    302 a[300] = new Array("./ToBeReviewed/STRING/strcnt.html", "strcnt.pro", "", "      NAME:         STRCNT   PURPOSE:         Count number of occurrences of a substring in a string    CATEGORY:         text strings   CALLING SEQUENCE:         num   strcnt strn  substring   pos    INPUTS:         string      The string in which to count occurences      in         substring   The substring to count occurrences of        in         pos         the position at which to begin the search     in                       If not supplied  start at beginning of                      string    KEYWORD PARAMETERS:          HELP       Print useful message and return    OUTPUTS:         num         Number of occurances of substring in string  out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         Overlapping occurances are not counted separately   For         example  counting occurances of  bb  in  blah bbb  returns one         occurance     EXAMPLE:   MODIFICATION HISTORY:          Id: strcnt pro 18 2006 05 02 09:32:05Z pinsard            Log: strcnt pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added fast processing using BYTE arrays if we are counting occurences of         a single character   Added error handling            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION strcnt  strn  substrn  startpos                     HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Help user  if needed      IF  n_params  LT 2  OR keyword_set Help  THEN BEGIN         offset                 print  offset Count number of occurrences of a substring in a string          print  offset num   strcnt strn  substring   pos          print  offset Inputs:          print offset offset string      The string in which to count occurences      in          print offset offset substring   The substring to count occurrences of        in          print offset offset pos         the position at which to begin the search     in          print offset offset              If not supplied  start at beginning of          print offset offset              string          print  offset Keywords:          print offset offset HELP       Print useful message and return          print  offset Outputs:          print offset offset num         Number of occurances of substring in string  out          return   1     ENDIF       IF n_params  EQ 2 THEN startpos   0     return if we weren t really given a substring to search for          IF strlen substrn  EQ 0 THEN BEGIN          print   Error: Can t count occurances of null string          return   1     ENDIF          or if we were told to start at the end of the string      tmpstrn   strmid strn  startpos  strlen strn      IF strlen tmpstrn  EQ 0 THEN return  0    If looking for occurences of single character  process using BYTE   array      IF strlen substrn  EQ 1 THEN BEGIN         tmpstrn   byte TmpStrn          count   n_elements where TmpStrn EQ  byte substrn 0       ENDIF ELSE BEGIN          count   0L         pos   rstrpos tmpstrn  substrn          WHILE pos GE 0 DO BEGIN             count   count   1             pos   rstrpos tmpstrn  substrn  pos          ENDWHILE     ENDELSE       return  count END         "); 
     299a[297] = new Array("./ToBeReviewed/STRING/nwrds.html", "nwrds.pro", "", "      NAME:         NWRDS   PURPOSE:         Return the number of words in the given text string    CATEGORY:   CALLING SEQUENCE:         n   nwrds txt    INPUTS:         txt   text string to examine              in   KEYWORD PARAMETERS:         Keywords:           DELIMITER   d   Set delimiter character  def   space    OUTPUTS:         n   number of words found                 out   COMMON BLOCKS:   NOTES:         Notes: See also getwrd    MODIFICATION HISTORY:         R  Sterner   7 Feb  1985          Johns Hopkins University Applied Physics Laboratory          RES 4 Sep  1989   converted to SUN      Copyright  C  1985  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt           function nwrds txtstr  help hlp  delimiter delim     compile_opt idl2  strictarrsubs      if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Return the number of words in the given text string     print  n   nwrds txt     print    txt   text string to examine              in     print    n   number of words found                 out     print  Keywords:     print    DELIMITER   d   Set delimiter character  def   space     print  Notes: See also getwrd     return   1  endif    if strlen txtstr  eq 0 then return 0  A null string has 0 words   ddel       Default word delimiter is a space   if n_elements delim  ne 0 then ddel   delim   Use given word delimiter   tst    byte ddel 0  Delimiter as a byte value          tb   byte txtstr                                String to bytes          if ddel eq     then begin                       Check for tabs            w   where tb eq 9B  cnt                       Yes            if cnt gt 0 then tb w    32B                  Convert any to space          endif  x   tb ne tst  Locate words   x    0 x 0  Pad ends with delimiters     y    x shift x 1  eq 1  Look for word beginnings     n   fix total y  Count word beginnings     return  n    end"); 
     300a[298] = new Array("./ToBeReviewed/STRING/putfile.html", "putfile.pro", "", "      NAME:         PUTFILE   PURPOSE:         Write a text file from a string array    CATEGORY:   CALLING SEQUENCE:         putfile  f  s   INPUTS:         f   text file name       in         s   string array         in   KEYWORD PARAMETERS:         Keywords:           ERROR err  error flag: 0 ok  1 invalid string array    OUTPUTS:   COMMON BLOCKS:   NOTES:   MODIFICATION HISTORY:         R  Sterner  20 Mar  1990         R  Sterner   4 Nov  1992   allowed scalar strings      Copyright  C  1990  Johns Hopkins University Applied Physics Laboratory   This software may be used  copied  or redistributed as long as it is not   sold and this copyright notice is reproduced on each copy made   This   routine is provided as is without any express or implied warranties   whatsoever   Other limitations apply as described in the file disclaimer txt         pro putfile  file  s  error err  help hlp     compile_opt idl2  strictarrsubs      if  n_params 0  lt 1  or keyword_set hlp  then begin    print  Write a text file from a string array     print  putfile  f  s     print    f   text file name       in     print    s   string array         in     print  Keywords:     print    ERROR err  error flag: 0 ok  1 invalid string array     return  endif           if lmgr demo  then begin            print   you are in Demo mode  It is impossible to write a file             return         endif     if size s   type  ne 7 then begin    print  Error in putfile: argument must be a string array     err   1    return  endif    get_lun  lun  openw  lun  file    for i   0  n_elements s 1 do begin    t   s i     if t eq   then t          printf  lun  t  endfor    close  lun  free_lun  lun  err   0  return    end"); 
     301a[299] = new Array("./ToBeReviewed/STRING/str_size.html", "str_size.pro", "", "   Id: str_size pro 114 2006 06 19 14:14:56Z smasson       NAME:    STR_SIZE     PURPOSE:      The purpose of this function is to return the proper    character size to make a specified string a specifed    width in a window  The width is specified in normalized    coordinates  The function is extremely useful for sizing    strings and labels in resizeable graphics windows      CATEGORY:      Graphics Programs  Widgets      CALLING SEQUENCE:      thisCharSize   STR_SIZE thisSting  targetWidth      INPUTS:      thisString:  This is the string that you want to make a specifed       target size or width      OPTIONAL INPUTS:      targetWidth:  This is the target width of the string in normalized       coordinates in the current graphics window  The character       size of the string  returned as thisCharSize  will be       calculated to get the string width as close as possible to       the target width  The default is 0 25      KEYWORD PARAMETERS:      INITSIZE:  This is the initial size of the string  Default is 1 0       STEP:   This is the amount the string size will change in each step       of the interative process of calculating the string size        The default value is 0 05      OUTPUTS:      thisCharSize:  This is the size the specified string should be set       to if you want to produce output of the specified target       width  The value is in standard character size units where       1 0 is the standard character size      EXAMPLE:      To make the string  Happy Holidays  take up 30  of the width of    the current graphics window  type this:                   XYOUTS  0 5  0 5  ALIGN 0 5   Happy Holidays             CHARSIZE STR_SIZE Happy Holidays  0 3      MODIFICATION HISTORY:      Written by: David Fanning  17 DEC 96     Added a scaling factor to take into account the aspect ratio       of the window in determing the character size  28 Oct 97  DWF    FUNCTION STR_SIZE  string  targetWidth  INITSIZE initsize  STEP step     compile_opt idl2  strictarrsubs    ON_ERROR  1       Check positional parameters   np   N_PARAMS  CASE np OF    0: MESSAGE   One string parameter is required     1: targetWidth   0 25    ELSE: ENDCASE       Check keywords  Assign default values   IF N_ELEMENTS step  EQ 0 THEN step   0 05 IF N_ELEMENTS initsize  EQ 0 THEN initsize   1 0       Calculate a trial width   size   initsize XYOUTS  0 5  0 5  ALIGN 0 5  string  WIDTH thisWidth          CHARSIZE size   NORMAL       Size is perfect   IF thisWidth EQ targetWidth THEN RETURN  size   Float D Y_Size D X_Size       Initial size is too big   IF thisWidth GT targetWidth THEN BEGIN    REPEAT BEGIN      XYOUTS  0 5  0 5  ALIGN 0 5  string  WIDTH thisWidth            CHARSIZE size   NORMAL       size   size   step    ENDREP UNTIL thisWidth LE targetWidth    RETURN  size   Float D Y_Size D X_Size ENDIF       Initial size is too small   IF thisWidth LT targetWidth THEN BEGIN    REPEAT BEGIN      XYOUTS  0 5  0 5  ALIGN 0 5  string  WIDTH thisWidth            CHARSIZE size   NORMAL       size   size   step    ENDREP UNTIL thisWidth GT targetWidth    size   size   step   Need a value slightly smaller than target     RETURN  size   Float D Y_Size D X_Size ENDIF  END"); 
     302a[300] = new Array("./ToBeReviewed/STRING/strcnt.html", "strcnt.pro", "", "      NAME:         STRCNT   PURPOSE:         Count number of occurrences of a substring in a string    CATEGORY:         text strings   CALLING SEQUENCE:         num   strcnt strn  substring   pos    INPUTS:         string      The string in which to count occurences      in         substring   The substring to count occurrences of        in         pos         the position at which to begin the search     in                       If not supplied  start at beginning of                      string    KEYWORD PARAMETERS:          HELP       Print useful message and return    OUTPUTS:         num         Number of occurances of substring in string  out   COMMON BLOCKS:   SIDE EFFECTS:   NOTES:         Overlapping occurances are not counted separately   For         example  counting occurances of  bb  in  blah bbb  returns one         occurance     EXAMPLE:   MODIFICATION HISTORY:          Id: strcnt pro 114 2006 06 19 14:14:56Z smasson            Log: strcnt pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added fast processing using BYTE arrays if we are counting occurences of         a single character   Added error handling            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION strcnt  strn  substrn  startpos                     HELP Help     compile_opt idl2  strictarrsubs      Return to caller if error      On_error  2    Help user  if needed      IF  n_params  LT 2  OR keyword_set Help  THEN BEGIN         offset                 print  offset Count number of occurrences of a substring in a string          print  offset num   strcnt strn  substring   pos          print  offset Inputs:          print offset offset string      The string in which to count occurences      in          print offset offset substring   The substring to count occurrences of        in          print offset offset pos         the position at which to begin the search     in          print offset offset              If not supplied  start at beginning of          print offset offset              string          print  offset Keywords:          print offset offset HELP       Print useful message and return          print  offset Outputs:          print offset offset num         Number of occurances of substring in string  out          return   1     ENDIF       IF n_params  EQ 2 THEN startpos   0     return if we weren t really given a substring to search for          IF strlen substrn  EQ 0 THEN BEGIN          print   Error: Can t count occurances of null string          return   1     ENDIF          or if we were told to start at the end of the string      tmpstrn   strmid strn  startpos  strlen strn      IF strlen tmpstrn  EQ 0 THEN return  0    If looking for occurences of single character  process using BYTE   array      IF strlen substrn  EQ 1 THEN BEGIN         tmpstrn   byte TmpStrn          count   n_elements where TmpStrn EQ  byte substrn 0       ENDIF ELSE BEGIN          count   0L         pos   rstrpos tmpstrn  substrn          WHILE pos GE 0 DO BEGIN             count   count   1             pos   rstrpos tmpstrn  substrn  pos          ENDWHILE     ENDELSE       return  count END         "); 
    303303a[301] = new Array("./ToBeReviewed/STRING/string2struct.html", "string2struct.pro", "", "    This is a really  really cool way to turn keywords into   a structure    function too_cool _extra extra     compile_opt idl2  strictarrsubs   return extra end      NAME:         stringToStructure     PURPOSE:         Takes an input string set up as keywords and returns an anonymous structure                  This is particularly useful for taking keywords entered by a user in a text                 field and passing then to other routines      CATEGORY:         Utility     CALLING SEQUENCE:         extra stringToStructure xrange 0 10 linestyle 2          plot findgen 100 _extra extra     INPUTS:         String set up as keywords  Keywords require a little special treatment  Such as         plot findgen 100 _extra stringToStructure title testing      KEYWORD PARAMETERS:           None     OUTPUTS:         This function returns the string as an anonymous structure  If an         error was found then this function returns a structure with a null field      COMMON BLOCKS:         None      EXAMPLE:         The code below creates a widget that uses this routine          pro tPlot event         widget_control event top get_uvalue field         widget_control field get_value strVal         extra   stringToStructure strVal          plot findgen 100 _extra extra         wshow         return         end           pro testWid          enter any keyword to plot and see how it works         base   widget_base col          field   cw_field base title test value ax 0 string          void   widget_button base value plot event_pro tPlot          widget_control base realize set_uvalue field         xmanager testWid base no_block         return         end     MODIFICATION HISTORY:         Written by:         RLK  Ronn Kling Consulting          ronn rlkling com         www rlkling com                 May  1999    function string2struct strVal     compile_opt idl2  strictarrsubs   r   execute extra   too_cool    strVal 0     if r   0 then user did not enter keywords correctly so  return a structure with a null field  if r eq 0 then begin   print Error in input string    return null:0  endif return extra end "); 
    304304a[302] = new Array("./ToBeReviewed/STRING/strkeywd.html", "strkeywd.pro", "", "          NAME: strkeywd  string keywords      PURPOSE: traduit une sturcture en un string pouvant etre utilise   pour specifier des keywords ds l appelle d une fonction qd on   utilise execute  cf l exemple      CATEGORY: pour passer des mots cles avec execute       CALLING SEQUENCE:res strkeywd struct       INPUTS:struct: une structure     KEYWORD PARAMETERS:     OUTPUTS:un string compose de la facon suivante:           pour chaque element de la structure  on ecrit une partie du           string sous la forme:             nom_de_l element contennu de l element      COMMON BLOCKS:     SIDE EFFECTS:       Si un element de la structure contient un tableau  il sera     convertit en vecteur      RESTRICTIONS:       attention cette fonction comporte des boucles  des if et des cases     ds tous les sens  Elle ne doit donc pas etre utilisee avec des     structure de grosse taille  avec bcp d elements et avec des     elements etant de gros tableaux      la structure en entree ne doit pas contenir de Complex floating  de     structure  de Double precision complex  de Pointer  de Object     reference  de Unsigned Integer  de Unsigned Longword Integer  de     64 bit Integer  de Unsigned 64 bit Integer          EXAMPLE:     on cree une structure         IDL  b get_extra ok 111  year 1997 1998 1999  age_capitaine 35          IDL  help  b struct           Structure   3 tags  length 10  refs 1:            AGE_CAPITAINE   INT             35            OK              INT            111            YEAR            INT       Array 3    on met cette structure sous forme de string         IDL  a strkeywd b          IDL  print  a         AGE_CAPITAINE 35  OK 111  YEAR 1997 1998 1999    maintenant on peut utiliser le string a pour passer des mots cles ds   une fonction a l aide de execute          IDL  test execute c get_extra a          IDL  help  c struct           Structure   3 tags  length 10  refs 1:            AGE_CAPITAINE   INT             35            OK              INT            111            YEAR            INT       Array 3      MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         11 10 1999         FUNCTION strkeywd  struct     compile_opt idl2  strictarrsubs      if size struct   type  NE 8 then return        tname   tag_names struct     if n_elements tname  EQ 0 then return         on s occupe du premier element      res   strlowcase tname 0 tostr struct 0     if n_elements tname  EQ 1 then return   res     on s occupe des autres elements      for n   1 n_elements tname 1 do res   res   strlowcase tname n tostr struct n       return   res end"); 
    305 a[303] = new Array("./ToBeReviewed/STRING/strrepl.html", "strrepl.pro", "", "   Id: strrepl pro 18 2006 05 02 09:32:05Z pinsard         NAME:          STRREPL  function      PURPOSE:          replace one  or more  character s string s  in a string     CATEGORY:          string routines     CALLING SEQUENCE:          Result   STRREPL str  index  rchar      INPUTS:          STR   the string to be changed            INDEX   position of the character s  to be replaced or a          string to be changed in STR             RCHAR   replacement character string     KEYWORD PARAMETERS: none       OUTPUTS:          another string     SUBROUTINES:     REQUIREMENTS:     NOTES:          Known shortcoming: if index is an array  it must contain all          valid elements  only the first entry is checked      EXAMPLE:            Convert one letter into upper case            abc    abcdefghijklmnopqrstuvwxyz           print strrepl abc strpos abc m M               prints  abcdefghijklMnopqrstuvwxyz                 Use with strwhere function          a    abcabcabc           print strrepl a strwhere a a               prints   bc bc bc bc bc            IDL  print  strrepl a bc eeee          a eeee a eeee a eeee          IDL  print  strrepl a b 0000          a0000ca0000ca0000         IDL  print  strrepl a toto 0000          abcabcabc     MODIFICATION HISTORY:          mgs  02 Jun 1998: VERSION 1 00          sebastien Masson  smlod ipsl jussieu fr        Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine strrepl      function strrepl str agument1 rchar     compile_opt idl2  strictarrsubs          if  n_elements str  eq 0  then return                                        convert strign and replace character to byte    BStr   byte str     new   byte rchar     if size agument1   type  EQ 7 then begin       old   byte agument1        index   strpos str  agument1        pos   index       while strpos str  agument1  pos 1  NE  1 do BEGIN          pos   strpos str  agument1  pos 1           index    index  pos        ENDWHILE   make sure index is in range       if  index 0  lt 0 OR index 0  ge n_elements BStr  THEN return Str    ENDIF ELSE BEGIN       index   agument1       if  index 0  lt 0 OR index 0  ge n_elements BStr  then return Str       old   BStr index 0     ENDELSE                                   replace indexed characters in string    nelenew   n_elements new     neleold   n_elements old     nindex   n_elements index     if nelenew neleold NE 1 then begin       if index 0  EQ 0 then          BStr    NEW   BStr index 0 neleold: n_elements BStr 1    ELSE          BStr    BStr 0:index 0 1  NEW   BStr index 0 neleold: n_elements BStr 1          if nindex EQ 1 then return string BStr        if nindex GT 2 then          for i   1  nindex 2 do          BStr    BStr 0:index i i nelenew neleold 1  NEW                    BStr index i i nelenew neleold neleold: n_elements BStr 1          BStr    BStr 0:index n_elements index 1 nindex 1 nelenew neleold 1  NEW      ENDIF ELSE BStr index    NEW                                   return result as string    return string BStr      end"); 
    306 a[304] = new Array("./ToBeReviewed/STRING/strright.html", "strright.pro", "", "   Id: strright pro 18 2006 05 02 09:32:05Z pinsard         NAME:          STRRIGHT     PURPOSE:          return right subportion from a string     CATEGORY:          string handling      CALLING SEQUENCE:          res   STRRIGHT string  nlast      INPUTS:          STRING   the string to be searched            NLAST   the number of characters to be returned  Default             is 1  If NLAST is ge strlen STRING  the complete string             is returned      KEYWORD PARAMETERS:     OUTPUTS:          The portion of NLAST characters of STRING counted from the back      SUBROUTINES:     REQUIREMENTS:     NOTES:     EXAMPLE:          if  strright path  ne   then path   path         MODIFICATION HISTORY:          mgs  19 Nov 1997: VERSION 1 00       Copyright  C  1997  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine strright      function strright s lastn     compile_opt idl2  strictarrsubs         on_error 2     return to caller       if  n_elements s  le 0  then return 1L       l   strlen s        if  n_elements lastn  le 0  then lastn   1     if lastn gt l then lastn   l       result   strmid s l lastn l        return result end"); 
    307 a[305] = new Array("./ToBeReviewed/STRING/strsci.html", "strsci.pro", "", "   Id: strsci pro 18 2006 05 02 09:32:05Z pinsard         NAME:          STRSCI  function      PURPOSE:                                                           Given a number  returns a string of that          B          number in scientific notation format   e g  A x 10        CATEGORY:          String Utilities     CALLING SEQUENCE:          Result   STRSCI  DATA  keywords        INPUTS:          DATA        A floating point or integer number to be                       converted into a power of 10      KEYWORD PARAMETERS:          FORMAT      The format specification used in the string                       conversion for the mantissa  i e  the                        A  of  A x 10 B   Default is  f12 2                POT_ONLY   Will return only the  power of 10  part of the                       string  i e  the  10 B   Default is to return                       the entire string  e g   A x 10 B                MANTISSA_ONLY   return only mantissa of the string             SHORT   return 10 0 as  1  and 10 1 as  10              TRIM   don t insert blanks  i e  return Ax10 B      OUTPUTS:          None     SUBROUTINES:          None     REQUIREMENTS:          None     NOTES:          This function does not  evaluate  the format statement thoroughly          which can result in somewhat quirky strings  Example:          print strsci 9 999  results in  10 0x10 0 instead of  1 0x10 1             Need a better symbol than the  x  for the multiplier      EXAMPLE:          Result   STRSCI  2000000  format i1             print  result                                                                                6                prints 2 x 10 u6 n  which gets plotted as 2 x 10                     Result   STRSCI   0 0001            print  result                                                                       4                prints  1 00 x 10 u 4 n  which gets plotted as 1 00 x 10            Result   STRSCI  0d0  format f13 8             print  result                           prints  0 00000000        MODIFICATION HISTORY:          bmy  28 May 1998: VERSION 1 00            B               now returns string of the form A x 10          mgs  29 May 1998:               bug fix: now allows negative numbers               keyword MANTISSA_ONLY added               default format changed to f12 2          bmy  02 Jun 1998:               renamed to STRSCI  STRing SCIentific notation           mgs  03 Jun 1998:               added TRIM keyword          mgs  22 Sep 1998:               added SHORT keyword               modified handling of TRIM keyword          mgs  24 Sep 1998:               bug fix with SHORT flag          bmy   mgs  02 Jun 1999:               now can handle DATA 0 0 correctly               updated comments          mgs  03 Jun 1999:                can now also handle values lt 1                 and doesn t choke on arrays       Copyright  C  1998  1999 Bob Yantosca and Martin Schultz     Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to bmy io harvard edu   or mgs io harvard edu with subject  IDL routine strsci      function StrSci  Data  Format Format  POT_Only POT_Only                 MANTISSA_ONLY MANTISSA_ONLY SHORT SHORT TRIM TRIM     compile_opt idl2  strictarrsubs              Error checking   Keyword settings          on_error  2     if   n_elements  Data   eq 0   then begin       return       endif     if   not Keyword_Set  Format     then Format      f12 2      POT_Only        keyword_set  POT_Only           MANTISSA_Only   keyword_set  MANTISSA_Only      Short           Keyword_Set  Short              Trim            Keyword_Set  Trim                NDat   n_elements Data     Result   strarr NDat      for i 0 NDat 1 do begin                 If ABS  DATA     0 then we can proceed to take the common log          For DATA   0  place a   sign in front of the number               if   Abs  Data i    ne 0 0   then begin                take the common log and store in LOG10DATA          Log10Data   ALog10  Abs  Data i                       Boolean flag if data   0          sign     Data i  lt 0 0                   Compute the characteristic  int part             Add the 1d 6 to prevent roundoff errors          Characteristic   Fix  Log10Data   1 0d 6            if  Log10Data lt 0  then               Characteristic   Characteristic   1                 Compute the Mantissa  frac part  and take its antilog           Mantissa   Log10Data   Characteristic           Mantissa   10 0 Mantissa           print data i log10data mantissa characteristic format 3f24 14 i8                 String for the coefficient part              The coefficient is just antilog of the Mantissa            Add the minus sign if DATA   0 0          A   StrTrim  String  Mantissa  Format Format   2            if   Sign   then A       A                String for the power of 10 part          B    10 u    strtrim  string  Characteristic   2      n           if   Short   then begin             if   Characteristic eq 0   then B    1              if   Characteristic eq 1   then B    10           endif                composite string          Result i    A     x     B          if   Short AND B eq  1  then Result i    A                         If DATA   0  then we cannot take the common log  so return         zeroes for the result strings   Use the FORMAT string                endif else begin          A        String  0d0  Format Format            B        A          Result i    A           endelse                     Return result to calling program  depending on keyword settings          Eliminate blanks if TRIM keyword is set               if   POT_Only   then            Result i    B       if   MANTISSA_Only   then            Result i    A       if   Trim   then            Result i    StrCompress  Result i   Remove_All            endfor     if  n_elements Result  eq 1  then         Result   Result 0       return  Result  end"); 
    308 a[306] = new Array("./ToBeReviewed/STRING/strtok.html", "strtok.pro", "", "      NAME:         STRTOK   PURPOSE:         Retrieve portion of string up to token    CATEGORY:         text strings   CALLING SEQUENCE:         new   strtok  old  token     INPUTS:         old     String to be split   Contains text after    in  out                  token on output          token   Token to use in splitting old               in   KEYWORD PARAMETERS:          TRIM   set to remove leading blanks from old                   before returning           HELP   print useful message and exit    OUTPUTS:         new     portion of string up to token               out         old     portion of old after token                  out  in   COMMON BLOCKS:   SIDE EFFECTS:         Input parameter old is modified    NOTES:         Token may be one or more characters          If token is not found  returns old and sets old to     EXAMPLE:         If old is  foo44 bar  then strtok  old   44    would return          foo  and upon return  old will be left with   bar   If  TRIM         were set  old would be  bar  on return            If old xyz  then new strtok old a  would return with         new xyz  and old    THANKS:         To D  Linder who wrote GETTOK  part of the goddard library          upon which this is based    MODIFICATION HISTORY:          Id: strtok pro 18 2006 05 02 09:32:05Z pinsard            Log: strtok pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added built in help            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Strtok  string  token                     TRIM trim  HELP Help     compile_opt idl2  strictarrsubs      Back to the caller if error occurs      On_error  2      IF  n_params  NE 2  OR keyword_set Help  THEN BEGIN          offset                 print  offset Retrieve portion of string up to token          print  offset new   strtok  old  token           print  offset Inputs:          print  offset offset old     String to be split   Contains text after    in  out          print  offset offset          token on output          print  offset offset token   Token to use in splitting old               in          print  offset Keywords:          print  offset offset TRIM   set to remove leading blanks from old           print  offset offset          before returning          print  offset offset HELP   print useful message and exit          print  offset Outputs:          print  offset offset new     portion of string up to token               out          print  offset offset old     portion of old after token                  out  in          print  offset Side effects:          print  offset offset Input parameter old is modified          print  offset Notes:          print  offset offset Token may be one or more characters          print  offset offset If token is not found  returns old and sets old to           print  offset Examples:          print  offset offset If old is  foo44 bar  then strtok  old   44    would return          print  offset offset    foo  and upon return  old will be left with   bar   If  TRIM          print  offset offset   were set  old would be  bar  on return            print  offset offset If old xyz  then new strtok old a  would return with          print  offset offset   new xyz  and old          return   1     ENDIF       pos   strpos string  token       IF  pos GE 0  THEN BEGIN         front   strmid string  0  pos           string   strmid string  pos   strlen token  strlen string          IF keyword_set trim  THEN string   strtrim string  1          return  front     ENDIF          front   string     string         return  front      END "); 
    309 a[307] = new Array("./ToBeReviewed/STRING/strtrans.html", "strtrans.pro", "", "      NAME:         STRTRANS   PURPOSE:         Translate all occurences of one substring to another    CATEGORY:         text strings   CALLING SEQUENCE:         new   strtrans oldstr from to ned    INPUTS:         oldstr   string on which to operate               in                   May be an array          from     substrings to be translated  May be      in                   an array          to       what strings in from should be           in                   translated to  May be an array    KEYWORD PARAMETERS:          HELP    Set this to print useful message and                    exit    OUTPUTS:         new      Translated string  Array if oldstr is    out                             an array          ned      number of substitutions performed in     out                   oldstr   Array if oldstr is an array    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           Any of old  from  and to can be arrays              from and to must have the same number of elements    EXAMPLE:         inp Many bad chars in_here          from _          to                    out   strtrans inp from to ned          Will produce out Many bad chars in here  and set ned to 4    MODIFICATION HISTORY:          Id: strtrans pro 18 2006 05 02 09:32:05Z pinsard            Log: strtrans pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Sped up significantly by using str_sep to handle the translation   No longer         relies on routines fromother user libraries            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION strtrans  InputString  from  to  ned                        HELP Help     compile_opt idl2  strictarrsubs      Bomb out to caller if error      On_error  2    Offer help if we don t have at least InputString  from  and to  or   if the user asks for it      IF  n_params  LT 3  OR keyword_set help  THEN BEGIN         offset                 print  offset Translate all occurences of one substring to another          print  offset new   strtrans oldstr from to ned          print  offset Inputs:          print  offset offset oldstr   string on which to operate               in          print  offset offset           May be an array          print  offset offset from     substrings to be translated  May be      in          print  offset offset           an array          print  offset offset to       what strings in from should be           in          print  offset offset           translated to  May be an array          print  offset Outputs:          print  offset offset new      Translated string  Array if oldstr is    out          print  offset offset           an array          print  offset offset ned      number of substitutions performed in     out          print  offset offset           oldstr   Array if oldstr is an array          print  offset Notes:          print  offset offset  Any of old  from  and to can be arrays             print  offset offset  from and to must have the same number of elements          return   1     ENDIF           strn   InputString     Check that From To have same number of elements   RETURN if they don t      NFrom   n_elements from      NTo   n_elements to      IF  NFrom EQ 0  OR  NTo EQ 0  THEN return  strn     IF NFrom NE NTo THEN BEGIN         print Error: Number of elements in from to unequal          return 1     ENDIF     Make sure there are no null strings in From   RETURN if there are         FromLen   strlen From      IF  total FromLen EQ 0  GT 0  THEN BEGIN         print   Error: elements of From must have nonzero length          return   1     ENDIF       NStrings   n_elements strn      ned   lonarr NStrings      tmpned   0L    Say strn a b c  from  and to   Then the approach here is to   first split strn at all occurances of   then recombine the pieces   with   inserted instead   Do this for all elements of strn  and   all elements of from      FOR i   0L  NStrings 1 DO BEGIN         ned i    0L         FOR j 0L  NFrom 1 DO BEGIN             SepStr   str_sep strn i  from j              NSubs   n_elements SepStr    1             strn i    SepStr 0              FOR k 1L  NSubs DO strn i    strn i    To j    SepStr k              ned i     ned i    NSubs         ENDFOR      ENDFOR      return  strn END "); 
    310 a[308] = new Array("./ToBeReviewed/STRING/strwhere.html", "strwhere.pro", "", "   Id: strwhere pro 18 2006 05 02 09:32:05Z pinsard         NAME:          STRWHERE   function      PURPOSE:          return position  array  for occurence of a character in          a string     CATEGORY:          string tools     CALLING SEQUENCE:          pos   STRWHERE str  schar  Count        INPUTS:          STR   the string            SCHAR   the character to look for     KEYWORD PARAMETERS:          none      OUTPUTS:          COUNT    optional  The number of matches that were found             The function returns an index array similar to the           result of the where function     SUBROUTINES:     REQUIREMENTS:     NOTES:     EXAMPLE:          ind   strwhere abcabcabc a               returns   0  3  6       MODIFICATION HISTORY:          mgs  02 Jun 1998: VERSION 1 00          bmy  30 Jun 1998:   now returns COUNT  the number                               of matches that are found  this is                              analogous to the WHERE command        Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine strwhere      function strwhere str schar Count     compile_opt idl2  strictarrsubs          if  n_elements str  eq 0  then return 1        convert to byte    BStr   byte Str     BSC     byte schar 0         Search for matches    Ind   where  Bstr eq BSC  Count         bmy   return where BStr eq BSC     return  Ind  end    "); 
     305a[303] = new Array("./ToBeReviewed/STRING/strrepl.html", "strrepl.pro", "", "   Id: strrepl pro 114 2006 06 19 14:14:56Z smasson         NAME:          STRREPL  function      PURPOSE:          replace one  or more  character s string s  in a string     CATEGORY:          string routines     CALLING SEQUENCE:          Result   STRREPL str  index  rchar      INPUTS:          STR   the string to be changed            INDEX   position of the character s  to be replaced or a          string to be changed in STR             RCHAR   replacement character string     KEYWORD PARAMETERS: none       OUTPUTS:          another string     SUBROUTINES:     REQUIREMENTS:     NOTES:          Known shortcoming: if index is an array  it must contain all          valid elements  only the first entry is checked      EXAMPLE:            Convert one letter into upper case            abc    abcdefghijklmnopqrstuvwxyz           print strrepl abc strpos abc m M               prints  abcdefghijklMnopqrstuvwxyz                 Use with strwhere function          a    abcabcabc           print strrepl a strwhere a a               prints   bc bc bc bc bc            IDL  print  strrepl a bc eeee          a eeee a eeee a eeee          IDL  print  strrepl a b 0000          a0000ca0000ca0000         IDL  print  strrepl a toto 0000          abcabcabc     MODIFICATION HISTORY:          mgs  02 Jun 1998: VERSION 1 00          sebastien Masson  smlod ipsl jussieu fr        Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine strrepl      function strrepl str agument1 rchar     compile_opt idl2  strictarrsubs          if  n_elements str  eq 0  then return                                        convert strign and replace character to byte    BStr   byte str     new   byte rchar     if size agument1   type  EQ 7 then begin       old   byte agument1        index   strpos str  agument1        pos   index       while strpos str  agument1  pos 1  NE  1 do BEGIN          pos   strpos str  agument1  pos 1           index    index  pos        ENDWHILE   make sure index is in range       if  index 0  lt 0 OR index 0  ge n_elements BStr  THEN return Str    ENDIF ELSE BEGIN       index   agument1       if  index 0  lt 0 OR index 0  ge n_elements BStr  then return Str       old   BStr index 0     ENDELSE                                   replace indexed characters in string    nelenew   n_elements new     neleold   n_elements old     nindex   n_elements index     if nelenew neleold NE 1 then begin       if index 0  EQ 0 then          BStr    NEW   BStr index 0 neleold: n_elements BStr 1    ELSE          BStr    BStr 0:index 0 1  NEW   BStr index 0 neleold: n_elements BStr 1          if nindex EQ 1 then return string BStr        if nindex GT 2 then          for i   1  nindex 2 do          BStr    BStr 0:index i i nelenew neleold 1  NEW                    BStr index i i nelenew neleold neleold: n_elements BStr 1          BStr    BStr 0:index n_elements index 1 nindex 1 nelenew neleold 1  NEW      ENDIF ELSE BStr index    NEW                                   return result as string    return string BStr      end"); 
     306a[304] = new Array("./ToBeReviewed/STRING/strright.html", "strright.pro", "", "   Id: strright pro 114 2006 06 19 14:14:56Z smasson         NAME:          STRRIGHT     PURPOSE:          return right subportion from a string     CATEGORY:          string handling      CALLING SEQUENCE:          res   STRRIGHT string  nlast      INPUTS:          STRING   the string to be searched            NLAST   the number of characters to be returned  Default             is 1  If NLAST is ge strlen STRING  the complete string             is returned      KEYWORD PARAMETERS:     OUTPUTS:          The portion of NLAST characters of STRING counted from the back      SUBROUTINES:     REQUIREMENTS:     NOTES:     EXAMPLE:          if  strright path  ne   then path   path         MODIFICATION HISTORY:          mgs  19 Nov 1997: VERSION 1 00       Copyright  C  1997  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine strright      function strright s lastn     compile_opt idl2  strictarrsubs         on_error 2     return to caller       if  n_elements s  le 0  then return 1L       l   strlen s        if  n_elements lastn  le 0  then lastn   1     if lastn gt l then lastn   l       result   strmid s l lastn l        return result end"); 
     307a[305] = new Array("./ToBeReviewed/STRING/strsci.html", "strsci.pro", "", "   Id: strsci pro 114 2006 06 19 14:14:56Z smasson         NAME:          STRSCI  function      PURPOSE:                                                           Given a number  returns a string of that          B          number in scientific notation format   e g  A x 10        CATEGORY:          String Utilities     CALLING SEQUENCE:          Result   STRSCI  DATA  keywords        INPUTS:          DATA        A floating point or integer number to be                       converted into a power of 10      KEYWORD PARAMETERS:          FORMAT      The format specification used in the string                       conversion for the mantissa  i e  the                        A  of  A x 10 B   Default is  f12 2                POT_ONLY   Will return only the  power of 10  part of the                       string  i e  the  10 B   Default is to return                       the entire string  e g   A x 10 B                MANTISSA_ONLY   return only mantissa of the string             SHORT   return 10 0 as  1  and 10 1 as  10              TRIM   don t insert blanks  i e  return Ax10 B      OUTPUTS:          None     SUBROUTINES:          None     REQUIREMENTS:          None     NOTES:          This function does not  evaluate  the format statement thoroughly          which can result in somewhat quirky strings  Example:          print strsci 9 999  results in  10 0x10 0 instead of  1 0x10 1             Need a better symbol than the  x  for the multiplier      EXAMPLE:          Result   STRSCI  2000000  format i1             print  result                                                                                6                prints 2 x 10 u6 n  which gets plotted as 2 x 10                     Result   STRSCI   0 0001            print  result                                                                       4                prints  1 00 x 10 u 4 n  which gets plotted as 1 00 x 10            Result   STRSCI  0d0  format f13 8             print  result                           prints  0 00000000        MODIFICATION HISTORY:          bmy  28 May 1998: VERSION 1 00            B               now returns string of the form A x 10          mgs  29 May 1998:               bug fix: now allows negative numbers               keyword MANTISSA_ONLY added               default format changed to f12 2          bmy  02 Jun 1998:               renamed to STRSCI  STRing SCIentific notation           mgs  03 Jun 1998:               added TRIM keyword          mgs  22 Sep 1998:               added SHORT keyword               modified handling of TRIM keyword          mgs  24 Sep 1998:               bug fix with SHORT flag          bmy   mgs  02 Jun 1999:               now can handle DATA 0 0 correctly               updated comments          mgs  03 Jun 1999:                can now also handle values lt 1                 and doesn t choke on arrays       Copyright  C  1998  1999 Bob Yantosca and Martin Schultz     Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to bmy io harvard edu   or mgs io harvard edu with subject  IDL routine strsci      function StrSci  Data  Format Format  POT_Only POT_Only                 MANTISSA_ONLY MANTISSA_ONLY SHORT SHORT TRIM TRIM     compile_opt idl2  strictarrsubs              Error checking   Keyword settings          on_error  2     if   n_elements  Data   eq 0   then begin       return       endif     if   not Keyword_Set  Format     then Format      f12 2      POT_Only        keyword_set  POT_Only           MANTISSA_Only   keyword_set  MANTISSA_Only      Short           Keyword_Set  Short              Trim            Keyword_Set  Trim                NDat   n_elements Data     Result   strarr NDat      for i 0 NDat 1 do begin                 If ABS  DATA     0 then we can proceed to take the common log          For DATA   0  place a   sign in front of the number               if   Abs  Data i    ne 0 0   then begin                take the common log and store in LOG10DATA          Log10Data   ALog10  Abs  Data i                       Boolean flag if data   0          sign     Data i  lt 0 0                   Compute the characteristic  int part             Add the 1d 6 to prevent roundoff errors          Characteristic   Fix  Log10Data   1 0d 6            if  Log10Data lt 0  then               Characteristic   Characteristic   1                 Compute the Mantissa  frac part  and take its antilog           Mantissa   Log10Data   Characteristic           Mantissa   10 0 Mantissa           print data i log10data mantissa characteristic format 3f24 14 i8                 String for the coefficient part              The coefficient is just antilog of the Mantissa            Add the minus sign if DATA   0 0          A   StrTrim  String  Mantissa  Format Format   2            if   Sign   then A       A                String for the power of 10 part          B    10 u    strtrim  string  Characteristic   2      n           if   Short   then begin             if   Characteristic eq 0   then B    1              if   Characteristic eq 1   then B    10           endif                composite string          Result i    A     x     B          if   Short AND B eq  1  then Result i    A                         If DATA   0  then we cannot take the common log  so return         zeroes for the result strings   Use the FORMAT string                endif else begin          A        String  0d0  Format Format            B        A          Result i    A           endelse                     Return result to calling program  depending on keyword settings          Eliminate blanks if TRIM keyword is set               if   POT_Only   then            Result i    B       if   MANTISSA_Only   then            Result i    A       if   Trim   then            Result i    StrCompress  Result i   Remove_All            endfor     if  n_elements Result  eq 1  then         Result   Result 0       return  Result  end"); 
     308a[306] = new Array("./ToBeReviewed/STRING/strtok.html", "strtok.pro", "", "      NAME:         STRTOK   PURPOSE:         Retrieve portion of string up to token    CATEGORY:         text strings   CALLING SEQUENCE:         new   strtok  old  token     INPUTS:         old     String to be split   Contains text after    in  out                  token on output          token   Token to use in splitting old               in   KEYWORD PARAMETERS:          TRIM   set to remove leading blanks from old                   before returning           HELP   print useful message and exit    OUTPUTS:         new     portion of string up to token               out         old     portion of old after token                  out  in   COMMON BLOCKS:   SIDE EFFECTS:         Input parameter old is modified    NOTES:         Token may be one or more characters          If token is not found  returns old and sets old to     EXAMPLE:         If old is  foo44 bar  then strtok  old   44    would return          foo  and upon return  old will be left with   bar   If  TRIM         were set  old would be  bar  on return            If old xyz  then new strtok old a  would return with         new xyz  and old    THANKS:         To D  Linder who wrote GETTOK  part of the goddard library          upon which this is based    MODIFICATION HISTORY:          Id: strtok pro 114 2006 06 19 14:14:56Z smasson            Log: strtok pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Added built in help            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details    FUNCTION Strtok  string  token                     TRIM trim  HELP Help     compile_opt idl2  strictarrsubs      Back to the caller if error occurs      On_error  2      IF  n_params  NE 2  OR keyword_set Help  THEN BEGIN          offset                 print  offset Retrieve portion of string up to token          print  offset new   strtok  old  token           print  offset Inputs:          print  offset offset old     String to be split   Contains text after    in  out          print  offset offset          token on output          print  offset offset token   Token to use in splitting old               in          print  offset Keywords:          print  offset offset TRIM   set to remove leading blanks from old           print  offset offset          before returning          print  offset offset HELP   print useful message and exit          print  offset Outputs:          print  offset offset new     portion of string up to token               out          print  offset offset old     portion of old after token                  out  in          print  offset Side effects:          print  offset offset Input parameter old is modified          print  offset Notes:          print  offset offset Token may be one or more characters          print  offset offset If token is not found  returns old and sets old to           print  offset Examples:          print  offset offset If old is  foo44 bar  then strtok  old   44    would return          print  offset offset    foo  and upon return  old will be left with   bar   If  TRIM          print  offset offset   were set  old would be  bar  on return            print  offset offset If old xyz  then new strtok old a  would return with          print  offset offset   new xyz  and old          return   1     ENDIF       pos   strpos string  token       IF  pos GE 0  THEN BEGIN         front   strmid string  0  pos           string   strmid string  pos   strlen token  strlen string          IF keyword_set trim  THEN string   strtrim string  1          return  front     ENDIF          front   string     string         return  front      END "); 
     309a[307] = new Array("./ToBeReviewed/STRING/strtrans.html", "strtrans.pro", "", "      NAME:         STRTRANS   PURPOSE:         Translate all occurences of one substring to another    CATEGORY:         text strings   CALLING SEQUENCE:         new   strtrans oldstr from to ned    INPUTS:         oldstr   string on which to operate               in                   May be an array          from     substrings to be translated  May be      in                   an array          to       what strings in from should be           in                   translated to  May be an array    KEYWORD PARAMETERS:          HELP    Set this to print useful message and                    exit    OUTPUTS:         new      Translated string  Array if oldstr is    out                             an array          ned      number of substitutions performed in     out                   oldstr   Array if oldstr is an array    COMMON BLOCKS:   SIDE EFFECTS:   NOTES:           Any of old  from  and to can be arrays              from and to must have the same number of elements    EXAMPLE:         inp Many bad chars in_here          from _          to                    out   strtrans inp from to ned          Will produce out Many bad chars in here  and set ned to 4    MODIFICATION HISTORY:          Id: strtrans pro 114 2006 06 19 14:14:56Z smasson            Log: strtrans pro v           Revision 1 3  1996 06 14 20:00:27  mcraig         Updated Copyright info            Revision 1 2  1996 05 09 00:22:17  mcraig         Sped up significantly by using str_sep to handle the translation   No longer         relies on routines fromother user libraries            Revision 1 1  1996 01 31 18:47:37  mcraig         Initial revision     RELEASE:          Name: Rel_1_2       COPYRIGHT:    Copyright  C  1996 The Regents of the University of California  All    Rights Reserved   Written by Matthew W  Craig     See the file COPYRIGHT for restrictions on distrubting this code     This code comes with absolutely NO warranty  see DISCLAIMER for details      FUNCTION strtrans  InputString  from  to  ned                        HELP Help     compile_opt idl2  strictarrsubs      Bomb out to caller if error      On_error  2    Offer help if we don t have at least InputString  from  and to  or   if the user asks for it      IF  n_params  LT 3  OR keyword_set help  THEN BEGIN         offset                 print  offset Translate all occurences of one substring to another          print  offset new   strtrans oldstr from to ned          print  offset Inputs:          print  offset offset oldstr   string on which to operate               in          print  offset offset           May be an array          print  offset offset from     substrings to be translated  May be      in          print  offset offset           an array          print  offset offset to       what strings in from should be           in          print  offset offset           translated to  May be an array          print  offset Outputs:          print  offset offset new      Translated string  Array if oldstr is    out          print  offset offset           an array          print  offset offset ned      number of substitutions performed in     out          print  offset offset           oldstr   Array if oldstr is an array          print  offset Notes:          print  offset offset  Any of old  from  and to can be arrays             print  offset offset  from and to must have the same number of elements          return   1     ENDIF           strn   InputString     Check that From To have same number of elements   RETURN if they don t      NFrom   n_elements from      NTo   n_elements to      IF  NFrom EQ 0  OR  NTo EQ 0  THEN return  strn     IF NFrom NE NTo THEN BEGIN         print Error: Number of elements in from to unequal          return 1     ENDIF     Make sure there are no null strings in From   RETURN if there are         FromLen   strlen From      IF  total FromLen EQ 0  GT 0  THEN BEGIN         print   Error: elements of From must have nonzero length          return   1     ENDIF       NStrings   n_elements strn      ned   lonarr NStrings      tmpned   0L    Say strn a b c  from  and to   Then the approach here is to   first split strn at all occurances of   then recombine the pieces   with   inserted instead   Do this for all elements of strn  and   all elements of from      FOR i   0L  NStrings 1 DO BEGIN         ned i    0L         FOR j 0L  NFrom 1 DO BEGIN             SepStr   str_sep strn i  from j              NSubs   n_elements SepStr    1             strn i    SepStr 0              FOR k 1L  NSubs DO strn i    strn i    To j    SepStr k              ned i     ned i    NSubs         ENDFOR      ENDFOR      return  strn END "); 
     310a[308] = new Array("./ToBeReviewed/STRING/strwhere.html", "strwhere.pro", "", "   Id: strwhere pro 114 2006 06 19 14:14:56Z smasson         NAME:          STRWHERE   function      PURPOSE:          return position  array  for occurence of a character in          a string     CATEGORY:          string tools     CALLING SEQUENCE:          pos   STRWHERE str  schar  Count        INPUTS:          STR   the string            SCHAR   the character to look for     KEYWORD PARAMETERS:          none      OUTPUTS:          COUNT    optional  The number of matches that were found             The function returns an index array similar to the           result of the where function     SUBROUTINES:     REQUIREMENTS:     NOTES:     EXAMPLE:          ind   strwhere abcabcabc a               returns   0  3  6       MODIFICATION HISTORY:          mgs  02 Jun 1998: VERSION 1 00          bmy  30 Jun 1998:   now returns COUNT  the number                               of matches that are found  this is                              analogous to the WHERE command        Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine strwhere      function strwhere str schar Count     compile_opt idl2  strictarrsubs          if  n_elements str  eq 0  then return 1        convert to byte    BStr   byte Str     BSC     byte schar 0         Search for matches    Ind   where  Bstr eq BSC  Count         bmy   return where BStr eq BSC     return  Ind  end    "); 
    311311a[309] = new Array("./ToBeReviewed/STRING/tostr.html", "tostr.pro", "", "          NAME: tostr  to string      PURPOSE: convertit un input en un string      CATEGORY:      CALLING SEQUENCE: res tostr input       INPUTS: input ne peut pas contenir ou etre de type:       Complex floating  structure  Double precision complex  Pointer  Object     reference  Unsigned Integer  Unsigned Longword Integer  64 bit     Integer  Unsigned 64 bit Integer      KEYWORD PARAMETERS: none     OUTPUTS: un string     COMMON BLOCKS:     SIDE EFFECTS:       Si un element de input contient un tableau  il sera     convertit en vecteur      RESTRICTIONS:       attention cette fonction comporte des boucles  des if et des cases     ds tous les sens  Elle ne doit donc pas etre utilisee avec des     inputs de grosse taille  avec bcp d elements et avec des     elements etant de gros tableaux    EXAMPLE:      IDL  help  tostr 1 tostr a tostr indgen 4 tostr a jkfjo           STRING       1           STRING       a           STRING       0 1 2 3           STRING       a jkfjo       IDL  print  tostr c est bon c est bon        c est bon c est bon      MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999         FUNCTION tostr  input     compile_opt idl2  strictarrsubs       case 1 of       size input   type  LE 5:BEGIN           if size input   type  EQ 1 then input   long input           if n_elements input  EQ 1 then res   strtrim input  1             ELSE BEGIN              res    strtrim input 0  1              for i   1   n_elements input 1 do res   res strtrim input i  1              res   res           ENDELSE        END       size input   type  eq 7:BEGIN           if n_elements input  EQ 1 then BEGIN             sinput   strrepl input                  res    sinput           ENDIF ELSE BEGIN              res    strrepl input 0                  for i   1   n_elements input 1 do res   res strrepl input i                  res   res           ENDELSE        END       ELSE:BEGIN           ras   report la fonction tostr ne marche pas pour input qui est de type  size input   tname           res           END    ENDCASE     return  res end"); 
    312 a[310] = new Array("./ToBeReviewed/STRUCTURE/chkstru.html", "chkstru.pro", "", "   Id: chkstru pro 27 2006 05 02 13:10:05Z pinsard         NAME:          CHKSTRU   function      PURPOSE:          check validity of a structure and test if necessary          fields are contained     CATEGORY:          tools     CALLING SEQUENCE:          res CHKSTRU STRUCTURE FIELDS  VERBOSE       INPUTS:          STRUCTURE   the structure to be tested  If STRUCTURE is               not of type structure  the function will return 0            FIELDS   a string or string array with field names to                be contained in STRUCTURE  CHKSTRU returns 1  true                only if all field names are contained in STRUCTURE                The entries of FIELDS may be upper or lowercase      KEYWORD PARAMETERS:          INDEX   a named variable that will contain the indices of               the required field names in the structure  They can then               be assessed through structure index i    Index will               contain  1 for all fields entries that are not in the               structure              VERBOSE   set this keyword to return an error message                in case of an error              EXTRACT   set this keyword to extract a fields from the          structure    1 is return is fields or structure  are          incorrect      OUTPUTS:          CHKSTRU returns 1 if successful  otherwise 0      SUBROUTINES:     REQUIREMENTS:     NOTES:     EXAMPLE:          test     a:1  b:2  c:3            required    a c           if CHKSTRU test required  then print found a and c           IDL  print  CHKSTRU test b              1          IDL  print  CHKSTRU test b extract                  2     MODIFICATION HISTORY:          mgs  02 Mar 1998: VERSION 1 00          mgs  07 Apr 1998:   second parameter  FIELDS  now optional          12 Jan 2001: EXTRACT keyword by S  Masson  smasson lodyc jussieu fr         Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine chkstru      function chkstru structure fields index index verbose verbose  extract   extract     compile_opt idl2  strictarrsubs             default index      index    1          first check number of parameters  must be at least 1       if  n_params  lt 1  then begin          if keyword_set verbose  then                ras   report CHKSTRU:   invalid number of parameters              if keyword_set extract  THEN return 1 ELSE return 0           endif            check if the user really passed a structure        s   size structure       if  s 1 s 0  ne 8  then begin          if keyword_set verbose  then                ras   report CHKSTRU:   No structure passed              if keyword_set extract  THEN return 1 ELSE return 0       endif          only one parameter: then we are finished      if  n_params  eq 1  then return 1            see if required field names are contained in the structure        and return indices of these fields        names   tag_names structure       index   intarr n_elements fields    1     default index to  not found        for i 0 n_elements fields 1 do begin          ind   where names eq strupcase fields i           if  ind 0  lt 0  then begin              if keyword_set verbose  then                   ras   report CHKSTRU:   Cannot find field  fields i               endif else index i    ind 0       endfor            check minimum value of index field:  1 indicates error      if keyword_set extract  then BEGIN         if index 0  NE  1 THEN return  structure index 0  ELSE return   1      ENDIF ELSE return min index  ge 0    end  "); 
     312a[310] = new Array("./ToBeReviewed/STRUCTURE/chkstru.html", "chkstru.pro", "", "   Id: chkstru pro 114 2006 06 19 14:14:56Z smasson         NAME:          CHKSTRU   function      PURPOSE:          check validity of a structure and test if necessary          fields are contained     CATEGORY:          tools     CALLING SEQUENCE:          res CHKSTRU STRUCTURE FIELDS  VERBOSE       INPUTS:          STRUCTURE   the structure to be tested  If STRUCTURE is               not of type structure  the function will return 0            FIELDS   a string or string array with field names to                be contained in STRUCTURE  CHKSTRU returns 1  true                only if all field names are contained in STRUCTURE                The entries of FIELDS may be upper or lowercase      KEYWORD PARAMETERS:          INDEX   a named variable that will contain the indices of               the required field names in the structure  They can then               be assessed through structure index i    Index will               contain  1 for all fields entries that are not in the               structure              VERBOSE   set this keyword to return an error message                in case of an error              EXTRACT   set this keyword to extract a fields from the          structure    1 is return is fields or structure  are          incorrect      OUTPUTS:          CHKSTRU returns 1 if successful  otherwise 0      SUBROUTINES:     REQUIREMENTS:     NOTES:     EXAMPLE:          test     a:1  b:2  c:3            required    a c           if CHKSTRU test required  then print found a and c           IDL  print  CHKSTRU test b              1          IDL  print  CHKSTRU test b extract                  2     MODIFICATION HISTORY:          mgs  02 Mar 1998: VERSION 1 00          mgs  07 Apr 1998:   second parameter  FIELDS  now optional          12 Jan 2001: EXTRACT keyword by S  Masson  smasson lodyc jussieu fr         Copyright  C  1998  Martin Schultz  Harvard University   This software is provided as is without any warranty   whatsoever  It may be freely used  copied or distributed   for non commercial purposes  This copyright notice must be   kept with any copy of this software  If this software shall   be used commercially or sold as part of a larger package    please contact the author to arrange payment    Bugs and comments should be directed to mgs io harvard edu   with subject  IDL routine chkstru      function chkstru structure fields index index verbose verbose  extract   extract     compile_opt idl2  strictarrsubs             default index      index    1          first check number of parameters  must be at least 1       if  n_params  lt 1  then begin          if keyword_set verbose  then                ras   report CHKSTRU:   invalid number of parameters              if keyword_set extract  THEN return 1 ELSE return 0           endif            check if the user really passed a structure        s   size structure       if  s 1 s 0  ne 8  then begin          if keyword_set verbose  then                ras   report CHKSTRU:   No structure passed              if keyword_set extract  THEN return 1 ELSE return 0       endif          only one parameter: then we are finished      if  n_params  eq 1  then return 1            see if required field names are contained in the structure        and return indices of these fields        names   tag_names structure       index   intarr n_elements fields    1     default index to  not found        for i 0 n_elements fields 1 do begin          ind   where names eq strupcase fields i           if  ind 0  lt 0  then begin              if keyword_set verbose  then                   ras   report CHKSTRU:   Cannot find field  fields i               endif else index i    ind 0       endfor            check minimum value of index field:  1 indicates error      if keyword_set extract  then BEGIN         if index 0  NE  1 THEN return  structure index 0  ELSE return   1      ENDIF ELSE return min index  ge 0    end  "); 
    313313a[311] = new Array("./ToBeReviewed/STRUCTURE/extractstru.html", "extractstru.pro", "", "          NAME:extractstru     PURPOSE:extrait des elements d une structure pour constituer une           nouvelle structure     CATEGORY: dibouille sur les structures     CALLING SEQUENCE: res   extractstru stru  liste       INPUTS:        stru: une structure        liste: un vecteur de string comportant les noms des elements de      stru a virer  par DEFAUT  ou a garder  si GARDE est active      KEYWORD PARAMETERS:         GARDE: specifie que la liste donnee concerne les elements de      stru a garder         VIRE: specifie que la liste donnee concerne les elements de      stru a virer  Ce mot cle est active par defaut     OUTPUTS:une stucture ou  1 en cas de pb     COMMON BLOCKS:     SIDE EFFECTS:     RESTRICTIONS: none        liste peut contenir des noms d elements qui ne sont pas ds stru       le programme se debrouille avec     EXAMPLE:        IDL  extra get_extra ok  year 1999  age_capitaine 35        IDL  help  extra struct        Structure   3 tags  length 6  refs 1:         AGE_CAPITAINE   INT             35         OK              INT              1         YEAR            INT           1999      IDL  help  extractstru extra ok hhuihi YEAR stru        Structure   1 tags  length 2  refs 1:         AGE_CAPITAINE   INT             35      IDL  help  extractstru extra ok hhuihi YEAR garde stru        Structure   2 tags  length 4  refs 1:         OK              INT              1         YEAR            INT           1999     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         8 10 1999         FUNCTION extractstru  stru  liste  GARDE   garde  VIRE   vire     compile_opt idl2  strictarrsubs      if size stru   type  NE 8 then return    1    if size liste   type  NE 7 then return    1   cheking for garde and vire keywords    garde   keyword_set garde 1 keyword_set vire     vire   keyword_set vire 1 keyword_set garde   keyword_set vire  EQ garde       tname   tag_names stru     index   make_selection tname  strupcase liste   only_valid   quiet       if garde then BEGIN   on garde que la liste       if index 0  EQ  1 then return    1       if n_elements index  EQ n_elements tname  then return  stru       res   create_struct tname index 0  stru index 0        if n_elements index  GT 1 then for i   1  n_elements index 1 do               res   create_struct res  tname index i  stru index i     ENDIF ELSE BEGIN   on vire la liste       if n_elements index  EQ n_elements tname  then return    1       if index 0  EQ  1 then return  stru   on prend le complementaire de index pour obtenir les indices que   l on garde       index   different indgen n_elements tname  index        res   create_struct tname index 0  stru index 0        if n_elements index  GT 1 then for i   1  n_elements index 1 do               res   create_struct res  tname index i  stru index i     ENDELSE      return  res end"); 
    314314a[312] = new Array("./ToBeReviewed/STRUCTURE/mixstru.html", "mixstru.pro", "", "          NAME: mixstru     PURPOSE: concatene 2 structures ensemble  La difference avec   CREATE_STRUCT etant que si les 2 stuctures ont les memes noms   d elements alors mixstru ne plante pas mais choisit pour valeur de   l element commun celle specifiee par la premiere structure      CATEGORY: structure     CALLING SEQUENCE: rs mixstru stru1 stru2       INPUTS: stru1 et stu2 sont 2 structures qui peuvent avoir des   elements portant le meme nom mais avec une valeur differente      KEYWORD PARAMETERS: none     OUTPUTS: une stucture     COMMON BLOCKS:     SIDE EFFECTS: si stru1 ou stru2 ne sont pas des structures mixstru   renvoie  1     RESTRICTIONS:     EXAMPLE:              IDL  a get_extra toto ok 123        IDL  b get_extra ok 111  year 1999  age_capitaine 35        IDL  help  a b struct         Structure   2 tags  length 4  refs 1:          OK              INT            123          TOTO            INT              1         Structure   3 tags  length 6  refs 1:          AGE_CAPITAINE   INT             35          OK              INT            111          YEAR            INT           1999       IDL  help  mixstru a b struct         Structure   4 tags  length 8  refs 1:          AGE_CAPITAINE   INT             35          YEAR            INT           1999          OK              INT            123          TOTO            INT              1       IDL  help  mixstru b a struct         Structure   4 tags  length 8  refs 1:          TOTO            INT              1          AGE_CAPITAINE   INT             35          OK              INT            111          YEAR            INT           1999     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         7 10 1999         FUNCTION mixstru  stru1  stru2     compile_opt idl2  strictarrsubs    cm_general     IF size stru1   type  EQ 0 AND size stru2   type  EQ 8 THEN return  stru2    IF size stru2   type  EQ 0 AND size stru1   type  EQ 8 THEN return  stru1    if size stru1   type  NE 8 then return    1    if size stru2   type  NE 8 then return    1    tname   tag_names stru2         str        FOR i   0  n_tags stru2 1 DO str   str   tname i    stru2    strtrim i  2          res   createfunc get_extra str _extra   stru1                    kwdlist    stru1   stru1  stru2   stru2                    stru1   stru1  stru2   stru2                   filename   myuniquetmpdir  for_createfunc pro      return  res  end"); 
     
    327327a[325] = new Array("./ToBeReviewed/TRIANGULATION/tracecote.html", "tracecote.pro", "", "          NAME:tracecote     PURPOSE: dessine les cotes ds plt     CATEGORY: pour faire un joli dessin     CALLING SEQUENCE:tracecote mask      INPUTS:mask le tableau mask sur la zone consideree pour le dessin     KEYWORD PARAMETERS:             COAST_COLOR: the color of the coastline                        defaut value is 0   black            COAST_THICK: l epaisseur du trait pour tracer les          continents  par defaut c est 1              SURFACE_COASTLINE: to draw the furface coast line instead of          the coast line at level firstz tw  Usefull only for deep          plots             XSEUIL: pour eliminer les segments de cote qui sont trop          grand  qui relient des points qui peuvent etre tres proches          sur la sphere mais tres eloignes sur le dessin  on supprime          tous les egments dot la taille depasse:                taille de la fenetre suivant X  xseuil           Par defaut xseuil est egale a 5  masi peut etre trop grand si          on fait un fort zoom ou trout petit pour certaines          projections  le specifier alors a l aide de ce mot cle             YSEUIL: cf  xseuil     OUTPUTS: rien     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         30 9 1999         PRO tracecote  SURFACE_COASTLINE   surface_coastline  _EXTRA   ex     include commons     compile_opt idl2  strictarrsubs    cm_4data  cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      tempsun   systime 1            pour key_performance    if n_elements key_gridtype  EQ 0 then key_gridtype    c      on agrandi un peu le cadre definit par les premier  dernier  de   facon a bien recuperer les bords de cote qui sont en bordure du   domaine a tracer         tempdeux   systime 1           pour key_performance  2    firstx   0    min firstxt  firstxf 1     lastx    max lastxt  lastxf 1    min firstyt  firstyf 1     lasty    max lastyt  lastyf 1     jpj 1     nx   lastx firstx 1    ny   lasty firsty 1   quel niveau vertical choisir      IF keyword_set surface_coastline  THEN firstz   0 ELSE        IF strupcase vargrid  eq  W  THEN firstz   firstzw ELSE firstz   firstzt   attribution du masque et des coordonnes delimitant les limites de la   terre  coordonnees f     mask   tmask firstx:lastx  firsty:lasty  firstz     xf   glamf firstx:lastx  firsty:lasty     yf   gphif firstx:lastx  firsty:lasty       IF testvar var   key_performance  EQ 2 THEN       print   temps tracecote: determiner mask xf yf  systime 1 tempdeux      if key_gridtype EQ  e  then onemore   xf 0  0  gT xf 0  1    on passe en coordonnee normaliser pour pouvoir s affranchir du type   de projection choisie et du suport surlequel on fait le dessin    ecran ou postscript     z   convert_coord xf yf data to_normal      xf   reform z 0    nx  ny     yf   reform z 1    nx  ny     tempvar   SIZE TEMPORARY z      attention  suivant la projection certains points x ou y peuvent   devenir NaN  cf  points deriere la terre ds une projection   orthographique      on met les points a eliminer a une tres gande valeur comme ca il ne   passerons pas le test avec distanceseuil  cf  plus bas       if  map projection LE 7 AND  map projection NE 0        OR  map projection EQ 14 OR  map projection EQ 15 OR  map projection EQ 18 then begin       ind   where finite xf yf  EQ 0        IF ind 0  NE  1 THEN BEGIN           xf ind    1e5          yf ind    1e5       ENDIF    ENDIF    ind   where xf LT  p position 0  OR xf GT  p position 2     IF ind 0  NE  1 THEN xf ind    1e5    ind   where yf LT  p position 1  OR yf GT  p position 3     IF ind 0  NE  1 THEN yf ind    1e5    tempvar   SIZE TEMPORARY ind    on efface ind      if n_elements key_gridtype  EQ 0 then key_gridtype    c     case key_gridtype of        c :drawcoast_c  mask  xf  yf  nx  ny  _extra   ex        e :drawcoast_e  mask  xf  yf  nx  ny  onemore   onemore  _extra   ex    endcase    if keyword_set key_performance  THEN print   temps tracecote  systime 1 tempsun    return end"); 
    328328a[326] = new Array("./ToBeReviewed/TRIANGULATION/tracemask.html", "tracemask.pro", "", "          NAME:tracemask     PURPOSE:dessiner des contour d un mask     CATEGORY:plus simple que tracecote  car ne s occuppe pas du type de   projection et de la periodicite de la grille     CALLING SEQUENCE: tracemask  maskentree  xentree  yentree      INPUTS:maskentree  xentree  yentree tableaux 2d specifiant le mask   et ses coordonees en longitude te latitude      KEYWORD PARAMETERS:            COAST_COLOR: the color of the coastline                        defaut value is 0   black            COAST_THICK: l epaisseur du trait pour tracer les          continents  par defaut c est 1      OUTPUTS: none     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr            PRO tracemask  maskentree  xin  yin  COAST_COLOR   coast_color  COAST_THICK   coast_thick  OVERPLOT   overplot  _extra   ex       compile_opt idl2  strictarrsubs      if keyword_set overplot  then return    cm_general   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF       tempsun   systime 1            pour key_performance   on s afranchit des problemes de bord:    tempdeux   systime 1           pour key_performance  2    tailleentree   size maskentree     nx   tailleentree 1 1    ny   tailleentree 2 1   we check the input axis   IF n_elements xin  EQ 0 THEN xentree   findgen nx 1  ELSE xentree   xin   IF  size xentree 0  EQ 1 THEN xentree   xentree replicate 1 ny 1    IF n_elements yin  EQ 0 THEN yentree   findgen ny 1  ELSE yentree   yin   IF  size yentree 0  EQ 1 THEN yentree   replicate 1 nx 1 yentree   on agrandi le mask de une colonne a gauche et de une colonne en bas    mask   intarr tailleentree 1 1  tailleentree 2 1     mask 1:tailleentree 1  1:tailleentree 2    maskentree   les 2 premieres colonnes sont identiques    mask 0  1:tailleentree 2    maskentree 0      les 2 premieres lignes sont identiques    mask 1:tailleentree 1  0    maskentree  0    on calcul la position suivant x des points qui seviront a tracer le   masque  ils sont situes entre chaque points du masque  sauf pour la   derniere colonne que l on ne peut pas calculer et que l on met   donc a max x range     xrange    x range sort x range    si reverse_x est utilise     xentree    5 xentree shift xentree   1  0     IF not keyword_set overplot  THEN xentree nx 2      xrange 1       ELSE xentree nx 2      xentree nx 3      on seuil    xentree   xrange 0    xentree  yentree   yrange 1     yf   fltarr nx  ny     yf 1:nx 1  1:ny 1    yentree    yf 0  1:ny 1    yentree 0       IF not keyword_set overplot  THEN BEGIN        if yinverse then yf  0    yrange 1  ELSE yf  0    yrange 0     ENDIF ELSE yentree  0    yentree  1       IF testvar var   key_performance  EQ 2 THEN       print   temps tracemask: determination du mask et des ses coordonnes  systime 1 tempdeux     on trace les segments verticaux:      tempdeux   systime 1           pour key_performance  2    liste   where mask shift mask   1  0  EQ 1     IF liste 0  NE  1 THEN BEGIN   on recupere lx et ly qui sont les indices ds un tableau 2d des   points donnes par liste       ly   liste nx   lx   temporary liste nx ly       indice   where ly NE 0      on ne prend pas les points concernant    la premiere ligne car ds ce cas le pt j 1 n est pas definit       if indice 0  NE  1 then begin          lx   lx indice    ly   ly temporary indice           IF testvar var   key_performance  EQ 2 THEN             print   temps tracemask: liste traits verticaux  systime 1 tempdeux          tempdeux   systime 1     pour key_performance  2   boucle sur les points concernes et trace du segment   rq: on utilise plots au lieu de plot car plots est bcp plus rapide           for pt   0L  n_elements lx 1 do BEGIN              i   lx pt    j   ly pt              plots   xf i  j 1  xf i  j   yf i  j 1  yf i  j                    color   coast_color  thick   coast_thick  _extra   ex             if pt LT 5 then begin             endif          endfor          IF testvar var   key_performance  EQ 2 THEN             print   temps tracemask: trace traits verticaux  systime 1 tempdeux       endif    ENDIF     on trace les segments horizontaux:      tempdeux   systime 1           pour key_performance  2    liste   where mask shift mask  0   1  EQ 1     IF liste 0  NE  1 THEN BEGIN       ly   liste nx   lx   temporary liste nx ly       indice   where lx NE 0      on ne prend pas les points de la  premiere colonne       if indice 0  EQ  1 then return       lx   lx indice    ly   ly temporary indice        IF testvar var   key_performance  EQ 2 THEN          print   temps tracemask: liste traits horizontaux  systime 1 tempdeux       tempdeux   systime 1        pour key_performance  2       for pt   0L  n_elements lx 1 do BEGIN           i   lx pt    j   ly pt           plots   xf i 1  j  xf i  j   yf i 1  j  yf i  j                 color   coast_color  thick   coast_thick  _extra   ex       endfor       IF testvar var   key_performance  EQ 2 THEN          print   temps tracemask: trace traits horizontaux  systime 1 tempdeux    endif        if keyword_set key_performance  THEN print   temps tracemask  systime 1 tempsun         return end     "); 
    329 a[327] = new Array("./ToBeReviewed/TRIANGULATION/triangule.html", "triangule.pro", "", "FUNCTION triangule  maskentree  BASIC   basic  COINMONTE   coinmonte  COINDESCEND   coindescend  _extra   ex     compile_opt idl2  strictarrsubs    common     IF jpi EQ 1 OR jpj EQ 1 THEN return   1     IF arg_present coinmonte  THEN coinmonte   1   IF arg_present coindescend  THEN coindescend   1      if keyword_set basic  then        return  triangule_c maskentree   BASIC  COINMONTE   coinmonte                              COINDESCEND   coindescend  _extra   ex       if n_elements key_gridtype  EQ 0 then key_gridtype    c     if n_elements maskentree  EQ 0 then maskentree   tmask    0     case key_gridtype of        e :res   triangule_e maskentree  _extra   ex         c :res   triangule_c maskentree  COINMONTE   coinmonte  COINDESCEND   coindescend  _extra   ex     endcase    return  res end"); 
     329a[327] = new Array("./ToBeReviewed/TRIANGULATION/triangule.html", "triangule.pro", "", "FUNCTION triangule  maskentree  BASIC   basic  COINMONTE   coinmonte  COINDESCEND   coindescend  _extra   ex     compile_opt idl2  strictarrsubs    common     szmsk   size maskentree    IF szmsk 0  EQ 0 THEN BEGIN     nx   jpi     ny   jpj   ENDIF ELSE BEGIN      nx   szmsk 1      ny   szmsk 2    ENDELSE   IF nx EQ 1 OR ny EQ 1 THEN return   1     IF arg_present coinmonte  THEN coinmonte   1   IF arg_present coindescend  THEN coindescend   1      if keyword_set basic  then        return  triangule_c maskentree   BASIC  COINMONTE   coinmonte                              COINDESCEND   coindescend  _extra   ex       if n_elements key_gridtype  EQ 0 then key_gridtype    c     if n_elements maskentree  EQ 0 then maskentree   tmask    0     case key_gridtype of        e :res   triangule_e maskentree  _extra   ex         c :res   triangule_c maskentree  COINMONTE   coinmonte  COINDESCEND   coindescend  _extra   ex     endcase    return  res end"); 
    330330a[328] = new Array("./ToBeReviewed/TRIANGULATION/triangule_c.html", "triangule_c.pro", "", "          NAME:triangule_c     PURPOSE:construit le tableau de triangulation      L idee est de   construire une liste de triangles qui relient les points entre   eux  Ceci est fait automatiquement avec la fonction TRIANGULATE     ICI:   on tient compte du fait que les points sont disposes sur une grille    reguliere ou pas  mais pas destructuree  cad que les points sont   ecrits suivant une matrice rectangulaire  Un moyen tres simple de   faire des triangles entre tous les points est alors:         pour chaque point  i j  de la matrice  sauf ceux de la derniere       ligne et de la derniere colonne  on on appelle le rectangle        i j  le rectangle forme par les 4 points  i j   i 1 j         i j 1   i 1 j 1  Pour tracer tous les triangles  il suffit de       tracer les 2 triangles contenus ds les rectangles  i j      au passage on remarque que chaque rectangle  i j  possede 2 diagonales  si   si faites un dessin c est vrai  il y a donc 2 choix possibles pour   chaque rectangles qd on veut le couper en 2 triangles       C est grace a ce choix que l on va pouvoir tracer les cotes avec   des angles droits  A chaque angle de cote remarquable par   l existance d un unique point terre ou d un unique point mer sur   les 4 cotes d un rectangle  i j  il faut couper le rectangle   suivant la diagonale qui qui passe par le point singulier       CATEGORY:pour faire de beaux graphiques masques     CALLING SEQUENCE:res triangule mask      INPUTS:optionnel:mask c est le tableau 2d qui sevira a masquer le   champ que l on tracera apres avec CONTOUR     TRIANGULATION triangule mask    si cet argument n est pas specifie  la function utilise tmask      KEYWORD PARAMETERS:            BASIC: specifie que le masque est sur une grille basice          utiliser pour la triangulation ds les coupes verticales et         des hovmoellers             KEEP_CONT: to keep the triangulation even on the continents           COINMONTE tableau  pour obtenir le tableau de  coins de terre         montant  a traiter avec completecointerre pro ds la variable         tableau plutot que de la faire passer par la variable globale         twin_corners_up            COINDESCEND tableau cf COINMONTE     OUTPUTS:         res: tableau 2d  3 nbre de triangles       chaque ligne de res represente les indices des points      constituants les sommets d un triangle       cf  comment on trace les triangles ds dessinetri pro     COMMON BLOCKS:  common pro different pro definetri pro     SIDE EFFECTS:     RESTRICTIONS:les donnees dont un veut ensuite faire le contour   doivent etre disposees dans une matrice  Par contre dans la matrice    la disposition des points peut ne pas etre irreguliere  Si les   donnees sont disposees completement de facon irreguliere  utiliser   TRIANGULE      EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          26 4 1999         FUNCTION triangule_c  maskentree  COINMONTE   coinmonte  COINDESCEND   coindescend  BASIC   basic  KEEP_CONT   keep_cont     compile_opt idl2  strictarrsubs      tempsun   systime 1            pour key_performance    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     le masque est donne ou il faut prendre tmask         msk   maskentree    taille   size msk     nx   taille 1     ny   taille 2       IF n_elements keep_cont  EQ 0 THEN keep_cont   1 key_irregular      if keyword_set key_periodic nx EQ jpi        AND NOT keyword_set basic  then BEGIN        msk    msk  msk 0          nx   nx 1    ENDIF     on va trouver la liste des rectangles  i j   reperes par leur coin   en bas a gauche  qu il faut couper suivant une diagonale descendante   on appellera cette liste : pts_downward       pts_downward   0    on construit le test qui permet de trouver un tel triangle:             shift msk   0   1 shift msk   1   1                                                                                                                                                                                                            msk shift msk   1   0       sum1   msk shift msk   1  0 shift msk   1   1   pts qui entourrent le pt en haut a gauche    sum2   msk shift msk  0   1 shift msk   1   1   pts qui entourrent le pt en bas a droite      tempdeux   systime 1           pour key_performance  2   pt terre en haut a gauche entoure de pts mer    liste   where   4 sum1 1 shift msk  0   1  EQ 1      if liste 0  NE  1 THEN pts_downward    pts_downward liste     pt mer en haut a gauche entoure de pts terre    liste   where   1 sum1 shift msk  0   1  EQ 1     if liste 0  NE  1 THEN pts_downward    pts_downward liste     pt terre en bas a droite entoure de pts mer    liste   where   4 sum2 1 shift msk   1   0  EQ 1     if liste 0  NE  1 THEN pts_downward    pts_downward liste     pt mer en bas a droite entoure de pts terre    liste   where   1 sum2 shift msk   1   0  EQ 1     if liste 0  NE  1 THEN pts_downward    pts_downward liste      undefine  liste      IF testvar var   key_performance  EQ 2 THEN       print   temps triangule: trouver pts_downward  systime 1 tempdeux      if  NOT keyword_set basic  OR keyword_set coinmonte  OR keyword_set coindescend  then begin       tempdeux   systime 1        pour key_performance  2  2 points terre en diagonale montante avec 2 points mer sur la diagonale descendante       coinmont   where   1 msk 1 shift msk   1   1                             shift msk  0   1 shift msk   1   0  EQ 1          if coinmont 0  NE  1 THEN pts_downward    pts_downward  coinmont          IF testvar var   key_performance  EQ 2 THEN          print   temps triangule: trouver coinmont  systime 1 tempdeux       tempdeux   systime 1        pour key_performance  2    2 points terre en diagonale descendante avec 2 points mer sur la diagonale montante       coindesc   where   1 shift msk   0   1 1 shift msk   1  0                              msk shift msk   1   1  EQ 1            IF testvar var   key_performance  EQ 2 THEN          print   temps triangule: trouver coindesc  systime 1 tempdeux       ENDIF      if n_elements pts_downward  EQ 1 then BEGIN        tempdeux   systime 1        pour key_performance  2         triang   definetri nx  ny          IF testvar var   key_performance  EQ 2 THEN          print   temps triangule: definetri  systime 1 tempdeux       coinmont    1       coindesc    1    ENDIF ELSE BEGIN        tempdeux   systime 1        pour key_performance  2       pts_downward   pts_downward 1:n_elements pts_downward 1        pts_downward   pts_downward uniq pts_downward  sort pts_downward    aucun rectangle ne peut avoir comme coin en bas a gauche un element   de la derniere colonne ou de la derniere ligne    il faut donc enlever ces points si ils ont ete selectionnes dans   pts_downward        derniere_colonne    lindgen ny 1 nx 1        derniere_ligne   lindgen nx ny 1 nx        pts_downward  different pts_downward derniere_colonne         pts_downward  different pts_downward derniere_ligne         if  NOT keyword_set basic  OR keyword_set coinmonte  OR keyword_set coindescend  then begin          if coinmont 0  NE  1 then begin             coinmont  different coinmont derniere_colonne               coinmont  different coinmont derniere_ligne            endif          if coindesc 0  NE  1 then begin             coindesc  different coindesc derniere_colonne               coindesc  different coindesc derniere_ligne            endif       ENDIF ELSE BEGIN           coinmont    1          coindesc    1       ENDELSE        IF testvar var   key_performance  EQ 2 THEN          print   temps triangule: menage ds pts_downward coinmont et coindesc  systime 1 tempdeux         tempdeux   systime 1        pour key_performance  2       if  pts_downward 0  EQ  1 then triang   definetri nx  ny          ELSE triang   definetri nx  ny  pts_downward        IF testvar var   key_performance  EQ 2 THEN          print   temps triangule: definetri  systime 1 tempdeux    ENDELSE      on vire les triangles qui ne contiennent que des points terre        tres bonne idee qui ne marche pas encore a 200  avec IDL 5 2    ca devrait aller mieux dans les prochaines versions d IDL       if  NOT keyword_set basic  AND  NOT keyword_set keep_cont  then begin       tempdeux   systime 1        pour key_performance  2   on enleve les rectangles qui sont entierement dans la terre       recdsterre   where 1 msk 1 shift msk   1  0 1 shift msk  0   1 1 shift msk   1   1  EQ 1        IF testvar var   key_performance  EQ 2 THEN          print   temps triangule: tous les recdsterre  systime 1 tempdeux    en attendant une version qui marche parfaitement  on est contraint   de faire un nouveau tri:   il ne faut pas enlever les rectangles qui n ont qu un sommet en   commun    t1   systime 1        indice   intarr nx  ny        trimask   intarr nx  ny        trimask 0:nx 2  0:ny 2    1       IF recdsterre 0  NE  1 then BEGIN           tempdeux   systime 1     pour key_performance  2          indice recdsterre    1        if NOT keyword_set basic  then begin          vire1   0          vire2   0          while  vire1 0  NE  1 OR vire2 0  NE  1  ne 0 do begin   vire sont les rectangles qu il faut retirer de recsterre  en fait   qu il faut garder bien qu ils soient entirement dans la terre                vire1   where   indice shift indice   1   1                                 1 shift indice  0   1 1 shift indice   1  0 trimask  EQ 1              if vire1 0  NE  1 THEN BEGIN                 indice vire1    0                 indice vire1 nx 1    0             endif                          vire2   where   1 indice 1 shift indice   1   1                                 shift indice  0   1 shift indice   1  0 trimask  EQ 1              if vire2 0  NE  1 THEN BEGIN                 indice vire2 1    0                 indice vire2 nx    0             endif          endwhile          IF testvar var   key_performance  EQ 2 THEN             print   temps triangule: trier les recdsterre  systime 1 tempdeux        endif          indice  ny 1    1      la deriere colonne te la derniere ligne          indice nx 1      1      ne peuvent definir de rectangle             tempdeux   systime 1     pour key_performance  2          recgarde   where indice EQ 0    on recupere les numeros des triangles que l  on va garder          trigarde   2 recgarde recgarde nx           trigarde   transpose temporary trigarde           trigarde    trigarde  trigarde 1              triang   triang  temporary trigarde           IF testvar var   key_performance  EQ 2 THEN             print   temps triangule: virer les triangle de la liste  systime 1 tempdeux       endif    endif   print   temps tri triangles  systime 1 t1      quand key_periodic eq 1  triang est une liste d indice d un   tableau qui a une colonne de trop    il faut ramener ca a la matrice initiale en mettant les indivces de   la derniere colonne egaux a ceux de la derniere colonne       tempdeux   systime 1           pour key_performance  2    if keyword_set key_periodic nx 1 EQ jpi        AND NOT keyword_set basic  then BEGIN        indicey   triang nx       indicex   triang indicey nx       nx   nx 1       liste   where indicex EQ nx        if liste 0  NE  1 then indicex liste    0       triang   indicex nx indicey       nx   nx 1       if coinmont 0  NE  1 then begin          indicey   coinmont nx          indicex   coinmont indicey nx          nx   nx 1          liste   where indicex EQ nx           if liste 0  NE  1 THEN indicex liste    0          coinmont   indicex nx indicey          nx   nx 1       endif       if coindesc 0  NE  1 then begin          indicey   coindesc nx          indicex   coindesc indicey nx          nx   nx 1          liste   where indicex EQ nx           if liste 0  NE  1 THEN indicex liste    0          coindesc   indicex nx indicey          nx   nx 1       endif    endif    IF testvar var   key_performance  EQ 2 THEN       print   temps triangule: finitions  systime 1 tempdeux       if keyword_set coinmonte  THEN coinmonte   coinmont ELSE twin_corners_up   coinmont    if keyword_set coindescend  THEN coindescend   coindesc ELSE twin_corners_dn   coindesc     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold  ENDIF      IF keyword_set key_performance  THEN print   temps triangule  systime 1 tempsun      return  triang  END "); 
    331331a[329] = new Array("./ToBeReviewed/TRIANGULATION/triangule_e.html", "triangule_e.pro", "", "          NAME:triangule_e     PURPOSE:buid the triangulation for a E grid type     CATEGORY:     CALLING SEQUENCE:      INPUTS:     KEYWORD PARAMETERS:     OUTPUTS:     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         june 2001         FUNCTION triangule_e  maskentree  COINMONTE   coinmonte  COINDESCEND   coindescend                       SHIFTED   shifted  BASIC   basic       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      tempsun   systime 1            pour key_performance     le masque est donne ou il faut prendre tmask         msk   maskentree    sizem   size msk     nx   sizem 1     ny   sizem 2       if keyword_set key_periodic nx EQ jpi        AND NOT keyword_set basic  then BEGIN        msk    msk  msk 0          nx   nx 1    ENDIF     we will find the diamond that must be cut in two triangle using the   horizontal diagonal       index   lindgen nx  ny     index   index 0:nx 2  1:ny 2     if n_elements shifted  EQ 0 then shifted   1    oddeven    index nx 1 shifted  MOD 2    msk1   msk index     msk2   msk index 1     sum   msk index nx oddeven msk index nx oddeven     sum1   msk2 sum    sum2   msk1 sum     horizontal      singularpoint   where msk1 EQ 0 AND sum1 EQ 3  OR  msk1 EQ 1 AND sum1 EQ 0                             OR  msk2 EQ 0 AND sum2 EQ 3  OR  msk2 EQ 1 AND sum2 EQ 0                             OR  sum EQ 0 AND  msk1 msk2  EQ 2       if singularpoint 0  NE  1 then begin       horizontal   index singularpoint        triang   definetri_e nx  ny  horizontal  SHIFTED   shifted     ENDIF ELSE triang   definetri_e nx  ny  SHIFTED   shifted       coinmont   index where sum EQ 2 AND  msk1 msk2  EQ 0       coindesc   index where sum EQ 0 AND  msk1 msk2  EQ 2      we keep only the triangles which are outside the land   but for some reasons we will in fact delete the land diamond        allrecinland   where sum1 msk1 EQ 0       indexallinland   index allrecinland       otherrec    lindgen nx  ny 0:nx 2  1:ny 2       otherrec   different otherrec  indexallinland           index   lindgen nx  ny       index   index 0:nx 3  2:ny 3       out   inter index  indexallinland       IF out 0  NE  1 THEN begin         out   inter out 1  indexallinland          IF out 0  NE  1 THEN begin            out   out 1            oddeven    out nx 1 shifted  MOD 2            out   inter out nx oddeven  otherrec             IF out 0  NE  1 THEN begin               out   inter out 2 nx  otherrec                IF out 0  NE  1 THEN begin                  out   out nx out nx shifted  MOD 2                endif            endif         endif      ENDIF      help   out          index   lindgen nx  ny       index   index 0:nx 3  2:ny 3       out   inter index  otherrec       IF out 0  NE  1 THEN begin         out   inter out 1  otherrec          IF out 0  NE  1 THEN begin            out   out 1            oddeven    out nx 1 shifted  MOD 2            out   inter out nx oddeven  indexallinland             IF out 0  NE  1 THEN begin               out   inter out 2 nx  indexallinland                IF out 0  NE  1 THEN begin                  out   out nx out nx shifted  MOD 2                endif            endif         endif      endif      help   out          IF out 0  EQ  1 THEN out   different indexallinland  out  ELSE out   indexallinland      triout   numtri out  nx  ny       triout    triout  triout 1       goodtri   lindgen 2 nx 1 ny 1       goodtri   different goodtri  triout       triang   triang  temporary goodtri           quand key_periodic eq 1  triang est une liste d indice d un   tableau qui a une colonne de trop    il faut ramener ca a la matrice initiale en mettant les indivces de   la derniere colonne egaux a ceux de la derniere colonne       tempdeux   systime 1           pour key_performance  2    if keyword_set key_periodic nx 1 EQ jpi        AND NOT keyword_set basic  then BEGIN        indicey   triang nx       indicex   triang indicey nx       nx   nx 1       liste   where indicex EQ nx        if liste 0  NE  1 then indicex liste    0       triang   indicex nx indicey       nx   nx 1         if coinmont 0  NE  1 then begin            indicey   coinmont nx            indicex   coinmont indicey nx            nx   nx 1            liste   where indicex EQ nx             if liste 0  NE  1 THEN indicex liste    0            coinmont   indicex nx indicey            nx   nx 1         endif         if coindesc 0  NE  1 then begin            indicey   coindesc nx            indicex   coindesc indicey nx            nx   nx 1            liste   where indicex EQ nx             if liste 0  NE  1 THEN indicex liste    0            coindesc   indicex nx indicey            nx   nx 1         endif    endif    IF testvar var   key_performance  EQ 2 THEN       print   temps triangule: finitions  systime 1 tempdeux         if arg_present coinmonte  THEN coinmonte   coinmont ELSE twin_corners_up   coinmont      if arg_present coindescend  THEN coindescend   coindesc ELSE twin_corners_dn   coindesc       IF NOT keyword_set key_forgetold  THEN BEGIN       updateold     ENDIF        IF keyword_set key_performance  THEN print   temps triangule  systime 1 tempsun      return  triang  END "); 
     
    368368a[366] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html", "xcreateanim.pro", "", "pro xcreateanim_event  event      compile_opt idl2  strictarrsubs    common   on recupere les aguments contenus ds le widget   if tag_names event   structure_name  NE  WIDGET_BUTTON  then return   widget_control  event id  get_uvalue   uval   if n_elements uval  EQ 0 then return   if uval EQ  cancel  then begin     widget_control  event top   destroy     return   ENDIF   on va ecrire l animation      widget_control  event top  get_uvalue   local_uvalue   widget_control  local_uvalue parent  get_uvalue   top_uvalue     calendar    extractatt top_uvalue   fileparameters local_uvalue indexfile time_counter   key_caltype    extractatt top_uvalue   fileparameters local_uvalue indexfile caltype   fakecal    extractatt top_uvalue   fileparameters local_uvalue indexfile fakecal     widget_control  widget_info event top  find_by_uname    Filename                        get_value   nomfic   nomfic   nomfic 0      widget_control  widget_info event top  find_by_uname    directorie                        get_value   animdir   animdir   animdir 0      widget_control  widget_info event top  find_by_uname    debut                        get_value   vdate1   index1   where calendar eq date2jul vdate1    index1   index1 0     if index1 EQ  1 then return     widget_control  widget_info event handler  find_by_uname    fin                        get_value   vdate2   index2   where calendar eq date2jul vdate2    index2   index2 0     if index2 EQ  1 OR index2 LE index1 then return   on detruit le widget avant de creer le fichier  ps   widget_control  event top   destroy     creation de la routine qui nous serviera pour faire le dessin     on recupere la liste des instructions   globalcommand   extractatt top_uvalue   globalcommand    on complete par le premiere et les dernieres lignes du programme   createpro  globalcommand  filename   myuniquetmpdir    xxx2ps pro                   KWDLIST     NOERASE   noerase  POSTSCRIPT   postscript  DATE1IN   date1in  DATE2IN   date2in     creation du fichier       recupere le nombre d octets surlequel on code la palette   device  get_visual_depth   depth   taille de l image  en nombre de pixel:   xsize    d x_size   ysize    d y_size     on verifie que le nom du fichier termine bien par  gif   if strpos nomfic   gif  EQ  1 then nomfic   nomfic gif     current_window    d window   window   free   pixmap  xsize   xsize  ysize   ysize     indication du numero de l image que l on est en train de creer   base   widget_base    sliderid   widget_slider base  minimum   1  maximum   index2 index1 1  value   1                                title    image number:     widget_control  base   realize     commencement du fichier gif  ecriture d une image vide    IF keyword_set fakecal  THEN date   index1 ELSE date   jul2date calendar index1    xxx2ps   noerase  date1in   date  date2in   date       image   tvrd true   depth GT 8    If an 8 bit image was read  reduce the number of colors   if depth le 8 then begin     tvlct  red  green  blue   get     reduce_colors  image  index     red   red index      green   green index      blue   blue index    endif                 if depth gt 8 then     Convert 24 bit image to 8 bit   image   color_quan image  1  red  green  blue  colors   256  get_translation   translation   map_all        write_gif  animdir nomfic  image  red  green  blue   multiple   wdelete   d window     boucle de creation et d ecriture ds le fichier      IF index2 GT index1 THEN BEGIN     FOR ind   index1 1  index2 do BEGIN         widget_control  sliderid  set_value   ind index1 1   on bouge le slider         window   free   pixmap  xsize   xsize  ysize   ysize       IF keyword_set fakecal  THEN date   ind ELSE date   jul2date calendar ind        xxx2ps   noerase  date1   date  date2   date               image   tvrd true   depth GT 8          if depth gt 8 then           image   color_quan image  1  aaa  bbb  ccc  colors   256  translation   translation            write_gif  animdir nomfic  image  red  green  blue   multiple       wdelete   d window     ENDFOR   ENDIF    on met une derniere image blanche   window   free   pixmap  xsize   xsize  ysize   ysize   reinitplt   plot    0    0   nodata   image   tvrd true   depth GT 8      if depth gt 8 then       image   color_quan image  1  aaa  bbb  ccc  colors   256  translation   translation        write_gif  animdir nomfic  image  red  green  blue   multiple   wdelete   d window   fermeture du fichier   write_gif  animdir nomfic   close    widget_control  base   destroy    rebascule en mode  normal    thisOS   strupcase strmid version os_family  0  3      wset  current_window    si on est sous x on essaie de lancer xanim     if thisOS NE  MAC  AND thisOS NE  WIN  then begin     spawn   which xanim  result     if strpos result 0   xanim  EQ strlen result 0 5 then spawn   xanim  animdir nomfic      endif        return end   PRO xcreateanim  parent     compile_opt idl2  strictarrsubs    common      widget_control  parent  get_uvalue   top_uvalue     on va s assurer que toutes les procedures de sont pas pltt      procedures   extractatt top_uvalue   nameprocedures     if total procedures EQ  pltt  NE 0 then begin       nothing   report Certains des plots ont un axe se rapportant au temps   C Animation impossible   error        return    ENDIF     on va s assurer que toutes les figures ont le meme calendrier       filelist   extractatt top_uvalue    filelist     filenames    extractatt top_uvalue    varinfo 0       filenames   reform filenames     filenames   filenames uniq filenames  sort filenames     if strtrim filenames 0  1  EQ   then filenames   filenames 1:n_elements filenames 1     indexfile    where filelist EQ filenames 0 0     calendar    extractatt top_uvalue   fileparameters indexfile time_counter      key_caltype    extractatt top_uvalue   fileparameters indexfile caltype    fakecal    extractatt top_uvalue   fileparameters indexfile fakecal    if n_elements filenames  GT 1 then begin       for i   1  n_elements filenames 1 do begin          indexfilebis    where filelist EQ filenames i 0           calendarbis    extractatt top_uvalue   fileparameters indexfilebis time_counter          if n_elements calendarbis  NE n_elements calendar   then begin             nothing   report Les diffrents plots n utilisent pas le meme calendrier   C Animation impossible   error              return          ENDIF          if total calendar NE calendarbis  NE 0 then begin             nothing   report Les diffrents plots n utilisent pas le meme calendrier   C Animation impossible   error              return          endif       endfor    endif     c est possible de faire une animation        base   widget_base column  title    animation creation  uvalue    parent:parent  indexfile:indexfile        rien   widget_label base  value    animation name     rien   widget_text base value anim_idl gif  uname Filename   editable     rien   widget_label base  value    animation directory     if n_elements animdir  EQ 0 then cd  current   animdir    rien   widget_text base value animdir  uname directorie   editable     rien   widget_label base  value    starting date     rien   cw_calendar base  calendar  calendar 0                            FAKECAL   fakecal  uname    debut  uvalue    name: calendar   frame     rien   widget_label base  value    ending date     rien   cw_calendar base  calendar  calendar n_elements calendar 1                            FAKECAL   fakecal  uname    fin  uvalue    name: calendar   frame     rien   widget_button base value OK  uvalue    ok     rien   widget_button base value Cancel  uvalue    cancel       widget_control base realize    xmanager xcreateanim  base   no_block        return end"); 
    369369a[367] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xxxmenubar_event.html", "xxxmenubar_event.pro", "", "  PRO xxxmenubar_event  event     compile_opt idl2  strictarrsubs    common     case event value of      Open  :begin        oldmeshparams   ccmeshparameters       newfile   selectfile        if size newfile   type  NE 8 then return       widget_control  event top   hourglass       widget_control  event top  update   0       widget_control  event top  get_uvalue   top_uvalue   on s occupe de filelist       filelist   extractatt top_uvalue   filelist        filelist    filelist  newfile fileparameters filename        currentfile   n_elements filelist 1   on update le widget       filelistid   widget_info event top  find_by_uname    filelist        widget_control  filelistid  combobox_additem   file_basename newfile fileparameters filename        widget_control  filelistid  set_combobox_select   currentfile   on update les elements filelist et currentfile de la top_uvalue        top_uvalue 1  findline top_uvalue   filelist    filelist       oldfile    top_uvalue 1  findline top_uvalue   currentfile         top_uvalue 1  findline top_uvalue   currentfile    currentfile   on s occupe du nom de la variable       vlstid   widget_info event top  find_by_uname    varlist    quel etait le champ selectionne   on le reselectionne         fieldname   widget_info vlstid   combobox_gettext        index   where newfile fileparameters listvar EQ fieldname         widget_control  vlstid  set_value   newfile fileparameters listvar       widget_control  vlstid  set_combobox_select   0   index 0    on s occupe du calendrier       key_caltype   newfile fileparameters caltype       date1id   widget_info event top  find_by_uname    calendar1        widget_control  date1id  get_value   date1       widget_control  date1id   destroy       jdate1   jul2date date1        if  where newfile fileparameters time_counter EQ jdate1 0  EQ  1         then jdate1   newfile fileparameters time_counter 0        date2id   widget_info event top  find_by_uname    calendar2        widget_control  date2id  get_value   date2       widget_control  date2id   destroy       jdate2   jul2date date2        if  where newfile fileparameters time_counter EQ jdate2 0  EQ  1 then jdate2   jdate1       basecal   widget_info event top  find_by_uname    basecal        fakecal   newfile fileparameters fakecal       rien   cw_calendar basecal  newfile fileparameters time_counter  jdate1  uname    calendar1                               FAKECAL   fakecal  uvalue    name: calendar1   frame        rien   cw_calendar basecal  newfile fileparameters time_counter  jdate2  uname    calendar2                               FAKECAL   fakecal  uvalue    name: calendar2   frame    on update les elements fileparameters  readparameters et meshparameters de la top_uvalue       newfileparameters   ptrarr currentfile 1   allocate_heap        FOR i   0  currentfile 1 DO             newfileparameters i     extractatt top_uvalue   fileparameters i         newfileparameters currentfile    newfile fileparameters       ptr_free  extractatt top_uvalue   fileparameters         top_uvalue 1  findline top_uvalue   fileparameters    newfileparameters         newreadparameters   ptrarr currentfile 1   allocate_heap        FOR i   0  currentfile 1 DO             newreadparameters i     extractatt top_uvalue   readparameters i         newreadparameters currentfile    newfile readparameters       ptr_free  extractatt top_uvalue   readparameters         top_uvalue 1  findline top_uvalue   readparameters    newreadparameters         newmeshparameters   ptrarr currentfile 1   allocate_heap        FOR i   0  currentfile 1 DO             newmeshparameters i     extractatt top_uvalue   meshparameters i         newmeshparameters currentfile    newfile meshparameters       ptr_free  extractatt top_uvalue   meshparameters         top_uvalue 1  findline top_uvalue   meshparameters    newmeshparameters   on actualise le widget        if cmpgrid oldmeshparams  then BEGIN         domainid   widget_info event top  find_by_uname    domain          widget_control  domainid  set_value    1       endif       widget_control  event top  update   1     end      New xxx  :BEGIN       widget_control  event top  get_uvalue   top_uvalue       extra   extractatt top_uvalue   extra        xxx  CALLERWIDID   event top  _extra   extra     end      Quit :begin        widget_control  event top  get_uvalue   top_uvalue       ptr_free  extractatt top_uvalue   exextra        ptr_free  extractatt top_uvalue   fileparameters        ptr_free  extractatt top_uvalue   readparameters        ptr_free  extractatt top_uvalue   meshparameters        ptr_free  top_uvalue       widget_control  event top   destroy  on ferme le widget     end      PostScript  :BEGIN       IF lmgr demo  EQ 1 THEN BEGIN         dummy   report impossible to save as postscript in demo mode          return       ENDIF       widget_control  event top  get_uvalue   top_uvalue   on recupere la liste des instructions       globalcommand   extractatt top_uvalue   globalcommand         for i   0  n_elements globalcommand 1 do print  globalcommand i    on complete par le premiere et les dernieres lignes du programme       createpro  globalcommand  filename   myuniquetmpdir    xxx2ps pro                       KWDLIST     NOERASE   noerase  POSTSCRIPT   postscript                       PORTRAIT   portrait  LANDSCAPE   landscape                       DATE1IN   date1in  DATE2IN   date2in                        POSTSCRIPT     END      Animated gif  :begin        IF float strmid version release 0 3  GE 6 2 THEN xcreateanim  event top     end      Gif  :BEGIN       IF lmgr demo  EQ 1 THEN BEGIN         dummy   report impossible to save as an image in demo mode          return       ENDIF       widget_control  event top  get_uvalue   top_uvalue       smallin   extractatt top_uvalue   smallin        numdessinin   smallin 2 1       smallout   extractatt top_uvalue   smallout        numdessinout   smallout 2 1       tracecadre  smallin   erase       tracecadre  smallout   erase       filename   xquestion dans quelle fichier gif voulez vous sauver  C l ecran de xxx   xxx_image gif        if rstrpos filename   gif  NE strlen filename 4 then filename   filename gif        filename   isafile file   filename  io   imagedir   new        saveimage  filename   quiet     end      IDL procedure :BEGIN       IF lmgr demo  EQ 1 THEN BEGIN         dummy   report impossible to save as a idl program file in demo mode          return       ENDIF   on recupere le nom du fichier       filename   xquestion dans quelle procedure IDL voulez vous sauver  C la realisation de ce graph   xxx_figure pro    on le complete par un  pro       if rstrpos filename   pro  NE strlen filename 4 then filename   filename pro        filename   isafile file   filename  io   homedir   new        widget_control  event top  get_uvalue   top_uvalue   portrait ou landscape         options   extractatt top_uvalue   options           optionsflag   extractatt top_uvalue   optionsflag        portrait    optionsflag where options EQ  Portrait Landscape  0 0    on lit les commandes pour faire un plot       globalcommand   extractatt top_uvalue   globalcommand    on complete par le premiere et les dernieres lignes du programme       thisOS   strupcase strmid version os_family  0  3        CASE thisOS of          MAC :sep    :           WIN :sep             ELSE:sep           ENDCASE       poslastsep   rstrpos filename  sep        proname   strmid filename  poslastsep 1  strlen filename poslastsep 1 4        globalcommand    pro  proname  NOERASE   noerase  POSTSCRIPT   postscript  PORTRAIT   portrait  LANDSCAPE   landscape  DATE1IN   date1in  DATE2IN   date2in  _extra   ex                                                                 globalcommand                                                            return                              end    on les ecrit dans un programme       putfile  filename  globalcommand     END      RESTORE kwd of xxx :BEGIN       IF lmgr demo  EQ 1 THEN BEGIN         dummy   report impossible to save the widget in demo mode          return       ENDIF   on recupere le nom du fichier       filename   xquestion dans quel fichier bianire voulez vous sauver le widget    xxx_widget dat    on le complete par un  dat       if rstrpos filename   dat  NE strlen filename 4 then filename   filename dat        filename   isafile file   filename  io   homedir   new          widget_control  event top  get_uvalue   uvalue       widget_control  extractatt uvalue   graphid  get_value   win       wshow  win       wset  win       image   tvrd true        save  uvalue  image  filename   filename     END      Print to prompt :BEGIN       commande   getfile myuniquetmpdir    xxx_oneplot pro        for i   0   n_elements commande 1 do print  commande i      end     Portrait Landscape  :begin        widget_control  event top  get_uvalue   top_uvalue       options   extractatt top_uvalue   options        index   where options EQ  Portrait Landscape    index   index 0        optionsflag   extractatt top_uvalue   optionsflag        key_portrait   1 optionsflag index  0         top_uvalue 1  findline top_uvalue   optionsflag index      key_portrait   fenetre separee ou fenetre collee au widget         if widget_info event top  find_by_uname    graph  EQ 0 then BEGIN   on tue la fenetre         graphid   extractatt top_uvalue   graphid          widget_control  widget_info graphid   parent   destroy   on la recree         basegraph   widget_base title    xxx window   group_leader   event top  uvalue   event top   uname    basegraph          windsize   givewindowsize          graphid   widget_draw basegraph  uname    graph                                    uvalue    name: graph  press:0  click:0  x: 0  0  y: 0  0                                     button_events  retain   2                                   xsize   windsize 0  ysize   windsize 1          widget_control  basegraph   realize         xmanager   xxx  basegraph   no_block   on redessine ce qu il y avait dedans   on recupere la liste des instructions         globalcommand   extractatt top_uvalue   globalcommand    on complete par le premiere et les dernieres lignes du programme         createpro  globalcommand  filename   myuniquetmpdir    xxx2ps pro                         KWDLIST     NOERASE   noerase  POSTSCRIPT   postscript  PORTRAIT   portrait  LANDSCAPE   landscape                         KWDUSED      noerase  PORTRAIT   portrait    on reattribue l element graphid de la top_uvalue          top_uvalue 1  findline top_uvalue   graphid    graphid       ENDIF ELSE BEGIN         extra   extractatt top_uvalue   extra          xxx  CALLERWIDID   event top   redraw  _extra   extra         widget_control  event top   destroy  on ferme le widget       ENDELSE     end      Overlay  :begin        widget_control  event top  get_uvalue   top_uvalue       numdessinin    extractatt top_uvalue   smallin 2 1       options   extractatt top_uvalue   options           flags   extractatt top_uvalue   optionsflag        index   where options EQ  Overlay    on change le flag sur Longitude   x index       flag   1 flags index  numdessinin    flag   flag 0    on le reeatribue        top_uvalue 1  findline top_uvalue   optionsflag index  numdessinin    flag     end      Vecteur :BEGIN       widget_control  event top  get_uvalue   top_uvalue       numdessinin    extractatt top_uvalue   smallin 2 1       options   extractatt top_uvalue   options           flags   extractatt top_uvalue   optionsflag        index   where options EQ  Vecteur    on change le flag sur Longitude   x index       flag   1 flags index  numdessinin    flag   flag 0    on le reeatribue        top_uvalue 1  findline top_uvalue   optionsflag index  numdessinin    flag     end      Longitude   x index :BEGIN       widget_control  event top  get_uvalue   top_uvalue       numdessinin    extractatt top_uvalue   smallin 2 1       options   extractatt top_uvalue   options           flags   extractatt top_uvalue   optionsflag        index   where options EQ  Longitude   x index    on change le flag sur Longitude   x index       flag   1 flags index  numdessinin    flag   flag 0    on le reeatribue        top_uvalue 1  findline top_uvalue   optionsflag index  numdessinin    flag   maintenant on va changer les sliders definissant la boxzoom       domainid   widget_info event top  find_by_uname    domain        boxzoom    extractatt top_uvalue   domaines  numdessinin    on veut retrouver le type de grille qui est utilisee       currentfile   extractatt top_uvalue   currentfile        listgrid    extractatt top_uvalue   fileparameters currentfile listgrid       listvar    extractatt top_uvalue   fileparameters currentfile listvar       vlstid   widget_info event top  find_by_uname    varlist        namevar   widget_info vlstid   combobox_gettext        indexvar   where listvar EQ namevar        vargrid   strupcase listgrid indexvar        if flag EQ 0 then BEGIN     longitudes   on fait un domdef pour retrouver le lon1 lon2 correspondant a la   boxzoom definie sur le widget           domdef  boxzoom  gridtype   vargrid   xindex                     yindex    flags where options EQ  Latitude   y index  numdessinin 0          widget_control  domainid  set_value    lon1  lon2  boxzoom 2:3        ENDIF ELSE BEGIN            xindex   maintenant ion veut retrouver firstx  lastx correspondant a la   boxzoom definie sur le widget          domdef  boxzoom  gridtype   vargrid                     yindex    flags where options EQ  Latitude   y index  numdessinin 0          grille   1   1   1   1  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz         widget_control  domainid  set_value    firstx  lastx  boxzoom 2:3        ENDELSE   on met a jour la top_uvalue       widget_control  domainid  get_value   boxzoom        top_uvalue 1  findline top_uvalue   domaines  numdessinin    boxzoom     end      Latitude   y index :begin        widget_control  event top  get_uvalue   top_uvalue       numdessinin    extractatt top_uvalue   smallin 2 1       options   extractatt top_uvalue   options           flags   extractatt top_uvalue   optionsflag        index   where options EQ  Latitude   y index    on change le flag sur Latitude   y index       flag   1 flags index  numdessinin    flag   flag 0    on le reeatribue        top_uvalue 1  findline top_uvalue   optionsflag index  numdessinin    flag   maintenant on va changer les sliders definissant la boxzoom       domainid   widget_info event top  find_by_uname    domain        boxzoom    extractatt top_uvalue   domaines  numdessinin    on veut retrouver le type de grille qui est utilisee       currentfile   extractatt top_uvalue   currentfile        listgrid    extractatt top_uvalue   fileparameters currentfile listgrid       listvar    extractatt top_uvalue   fileparameters currentfile listvar       vlstid   widget_info event top  find_by_uname    varlist        namevar   widget_info vlstid   combobox_gettext        indexvar   where listvar EQ namevar        vargrid   strupcase listgrid indexvar        if flag EQ 0 then BEGIN     latitudes   on fait un domdef pour retrouver le lat1 lat2 correspondant a la   boxzoom definie sur le widget           domdef  boxzoom  gridtype   vargrid   yindex                     xindex    flags where options EQ  Longitude   x index  numdessinin 0          widget_control  domainid  set_value    boxzoom 0:1  lat1  lat2        ENDIF ELSE BEGIN            yindex   maintenant ion veut retrouver firsty  lasty correspondant a la   boxzoom definie sur le widget          domdef  boxzoom  gridtype   vargrid                     xindex    flags where options EQ  Longitude   x index  numdessinin 0          grille   1   1   1   1  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz         widget_control  domainid  set_value    boxzoom 0:1  firsty  lasty        ENDELSE   on met a jour la top_uvalue       widget_control  domainid  get_value   boxzoom        top_uvalue 1  findline top_uvalue   domaines  numdessinin    boxzoom     END   endcase   return end"); 
    370 a[368] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html", "cw_bgroup.pro", "", "   Id: cw_bgroup pro 69 2006 05 11 10:35:53Z smasson       Copyright  c  1992 2005  Research Systems  Inc   All rights reserved      Unauthorized reproduction prohibited      NAME:     CW_BGROUP     PURPOSE:     CW_BGROUP is a compound widget that simplifies creating     a base of buttons  It handles the details of creating the     proper base  standard  exclusive  or non exclusive  and filling     in the desired buttons  Events for the individual buttons are     handled transparently  and a CW_BGROUP event returned  This     event can return any one of the following:           The Index of the button within the base            The widget ID of the button            The name of the button            An arbitrary value taken from an array of User values      CATEGORY:     Compound widgets      CALLING SEQUENCE:         Widget   CW_BGROUP Parent  Names        To get or set the value of a CW_BGROUP  use the GET_VALUE and     SET_VALUE keywords to WIDGET_CONTROL  The value of a CW_BGROUP     is:                     Type        Value                   normal      None         exclusive       Index of currently set button         non exclusive   Vector indicating the position                 of each button  1 set  0 unset                  INPUTS:         Parent:     The ID of the parent widget      Names:      A string array  containing one string per button              giving the name of each button      KEYWORD PARAMETERS:       BUTTON_UVALUE:  An array of user values to be associated with             each button and returned in the event structure      COLUMN:     Buttons will be arranged in the number of columns             specified by this keyword      EVENT_FUNCT:    The name of an optional user supplied event function             for buttons  This function is called with the return             value structure whenever a button is pressed  and             follows the conventions for user written event             functions      EXCLUSIVE:  Buttons will be placed in an exclusive base  with             only one button allowed to be selected at a time      FONT:       The name of the font to be used for the button             titles  If this keyword is not specified  the default             font is used      FRAME:      Specifies the width of the frame to be drawn around             the base      IDS:        A named variable into which the button IDs will be             stored  as a longword vector      LABEL_LEFT: Creates a text label to the left of the buttons      LABEL_TOP:  Creates a text label above the buttons      MAP:        If set  the base will be mapped when the widget             is realized  the default      NONEXCLUSIVE:   Buttons will be placed in an non exclusive base              The buttons will be independent      NO_RELEASE: If set  button release events will not be returned      RETURN_ID:  If set  the VALUE field of returned events will be             the widget ID of the button      RETURN_INDEX:   If set  the VALUE field of returned events will be             the zero based index of the button within the base              THIS IS THE DEFAULT      RETURN_NAME:    If set  the VALUE field of returned events will be             the name of the button within the base      ROW:        Buttons will be arranged in the number of rows             specified by this keyword      SCROLL:     If set  the base will include scroll bars to allow             viewing a large base through a smaller viewport      SET_VALUE:  The initial value of the buttons  This is equivalent             to the later statement:               WIDGET_CONTROL  widget  set_value value       SPACE:      The space  in pixels  to be left around the edges             of a row or column major base  This keyword is             ignored if EXCLUSIVE or NONEXCLUSIVE are specified      UVALUE:     The user value to be associated with the widget      UNAME:      The user name to be associated with the widget      XOFFSET:    The X offset of the widget relative to its parent      XPAD:       The horizontal space  in pixels  between children             of a row or column major base  Ignored if EXCLUSIVE             or NONEXCLUSIVE are specified      XSIZE:      The width of the base      X_SCROLL_SIZE:  The width of the viewport if SCROLL is specified      YOFFSET:    The Y offset of the widget relative to its parent      YPAD:       The vertical space  in pixels  between children of             a row or column major base  Ignored if EXCLUSIVE             or NONEXCLUSIVE are specified      YSIZE:      The height of the base      Y_SCROLL_SIZE:  The height of the viewport if SCROLL is specified      OUTPUTS:         The ID of the created widget is returned      SIDE EFFECTS:     This widget generates event structures with the following definition:           event     ID:0L  TOP:0L  HANDLER:0L  SELECT:0  VALUE:0         The SELECT field is passed through from the button event  VALUE is     either the INDEX  ID  NAME  or BUTTON_UVALUE of the button      depending on how the widget was created      RESTRICTIONS:     Only buttons with textual names are handled by this widget      Bitmaps are not understood      MODIFICATION HISTORY:     15 June 1992  AB     7 April 1993  AB  Removed state caching      6 Oct  1994  KDB  Font keyword is not applied to the label          10 FEB 1995  DJC  fixed bad bug in event procedure  getting                           id of stash widget      11 April 1995  AB Removed Motif special cases      pro CW_BGROUP_SETV  id  value   compile_opt hidden  idl2  strictarrsubs    ON_ERROR  2                        return to caller    stash   WIDGET_INFO id   CHILD    WIDGET_CONTROL  stash  GET_UVALUE state   NO_COPY    case state type of     0: message unable to set plain button group value      1: begin       WIDGET_CONTROL  SET_BUTTON 0  state ids state excl_pos        state excl_pos   value       WIDGET_CONTROL   SET_BUTTON  state ids value      end     2: begin       n   n_elements value 1       for i   0  n do begin         state nonexcl_curpos i    value i          WIDGET_CONTROL  state ids i  SET_BUTTON value i        endfor     end   endcase    WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY end    function CW_BGROUP_GETV  id  value    compile_opt hidden  idl2  strictarrsubs   ON_ERROR  2                        return to caller    stash   WIDGET_INFO id   CHILD    WIDGET_CONTROL  stash  GET_UVALUE state   NO_COPY    case state type of     0: message   unable to get plain button group value       1: ret   state excl_pos     1: ret   state ret_arr state excl_pos       2: ret   state nonexcl_curpos     2: BEGIN        index   where state nonexcl_curpos NE 0        if index 0  EQ  1 then begin         if size state ret_arr   type  EQ 7 then ret     ELSE ret    1       ENDIF ELSE ret   state ret_arr index      END   endcase      WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY    return  ret  end    function CW_BGROUP_EVENT  ev   compile_opt hidden  idl2  strictarrsubs   WIDGET_CONTROL  ev handler  GET_UVALUE stash   WIDGET_CONTROL  stash  GET_UVALUE state   NO_COPY   WIDGET_CONTROL  ev id  get_uvalue uvalue    ret   1            Assume we return a struct   case state type of     0:     1: if  ev select eq 1  then begin       state excl_pos   uvalue     ENDIF else begin       if  state no_release ne 0  then ret   0     ENDELSE     2: begin         Keep track of the current state       state nonexcl_curpos uvalue    ev select           if  state no_release ne 0  and  ev select eq 0  then ret   0     end   endcase    if ret then begin      Return a struct        ret     ID:state base  TOP:ev top  HANDLER:0L  SELECT:ev select               VALUE:state ret_arr uvalue          efun   state efun       WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY       if efun ne   then return  CALL_FUNCTION efun  ret          else return  ret   endif else begin       Trash the event       WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY       return  0   endelse end        function CW_BGROUP  parent  names        BUTTON_UVALUE   button_uvalue  COLUMN column  EVENT_FUNCT   efun        EXCLUSIVE excl  FONT font  FRAME frame  IDS ids  LABEL_TOP label_top        LABEL_LEFT label_left  MAP map        NONEXCLUSIVE nonexcl  NO_RELEASE no_release  RETURN_ID return_id        RETURN_INDEX return_index  RETURN_NAME return_name        ROW row  SCROLL scroll  SET_VALUE sval  SPACE space        TAB_MODE tab_mode  UVALUE uvalue        XOFFSET xoffset  XPAD xpad  XSIZE xsize  X_SCROLL_SIZE x_scroll_size      YOFFSET yoffset  YPAD ypad  YSIZE ysize  Y_SCROLL_SIZE y_scroll_size        UNAME uname     IF  N_PARAMS  ne 2  THEN MESSAGE   Incorrect number of arguments     ON_ERROR  2                        return to caller      Set default values for the keywords   version   WIDGET_INFO version    if  version toolkit eq  OLIT  then def_space_pad   4 else def_space_pad   3   IF  N_ELEMENTS column  eq 0       then column   0   IF  N_ELEMENTS excl  eq 0         then excl   0   IF  N_ELEMENTS frame  eq 0        then frame   0   IF  N_ELEMENTS map  eq 0      then map 1   IF  N_ELEMENTS nonexcl  eq 0      then nonexcl   0   IF  N_ELEMENTS no_release  eq 0   then no_release   0   IF  N_ELEMENTS row  eq 0      then row   0   IF  N_ELEMENTS scroll  eq 0       then scroll   0   IF  N_ELEMENTS space  eq 0        then space   def_space_pad   IF  N_ELEMENTS uname  eq 0       then uname    CW_BGROUP_UNAME    IF  N_ELEMENTS uvalue  eq 0       then uvalue   0   IF  N_ELEMENTS xoffset  eq 0      then xoffset 0   IF  N_ELEMENTS xpad  eq 0         then xpad   def_space_pad   IF  N_ELEMENTS xsize  eq 0        then xsize   0   IF  N_ELEMENTS x_scroll_size  eq 0    then x_scroll_size   0   IF  N_ELEMENTS yoffset  eq 0      then yoffset 0   IF  N_ELEMENTS ypad  eq 0         then ypad   def_space_pad   IF  N_ELEMENTS ysize  eq 0        then ysize   0   IF  N_ELEMENTS y_scroll_size  eq 0    then y_scroll_size   0       top_base   0L   if  n_elements label_top  ne 0  then begin     next_base   WIDGET_BASE parent  XOFFSET xoffset  YOFFSET yoffset   COLUMN      if keyword_set font then          junk   WIDGET_LABEL next_base  value label_top font font        else    junk   WIDGET_LABEL next_base  value label_top      top_base   next_base   endif else next_base   parent    if  n_elements label_left  ne 0  then begin     next_base   WIDGET_BASE next_base  XOFFSET xoffset  YOFFSET yoffset   ROW      if keyword_set font then          junk   WIDGET_LABEL next_base  value label_left  font font        else junk   WIDGET_LABEL next_base  value label_left      if  top_base eq 0L  then top_base   next_base   endif     We need some kind of outer base to hold the users UVALUE   if  top_base eq 0L  then begin     top_base   WIDGET_BASE parent  XOFFSET xoffset  YOFFSET yoffset      next_base   top_base   endif   If  top_base EQ next_base  THEN        next_base   WIDGET_BASE top_base  Xpad 1  Ypad 1  Space 1       Set top level base attributes   WIDGET_CONTROL  top_base  MAP map        FUNC_GET_VALUE CW_BGROUP_GETV  PRO_SET_VALUE CW_BGROUP_SETV        SET_UVALUE uvalue  SET_UNAME uname      Tabbing   if  n_elements tab_mode  ne 0  then begin     WIDGET_CONTROL  top_base  TAB_MODE tab_mode     WIDGET_CONTROL  next_base  TAB_MODE tab_mode   end      The actual button holding base   base   WIDGET_BASE next_base  COLUMN column  EXCLUSIVE excl  FRAME frame        NONEXCLUSIVE nonexcl  ROW row  SCROLL scroll  SPACE space        XPAD xpad  XSIZE xsize  X_SCROLL_SIZE x_scroll_size        YPAD ypad  YSIZE ysize  Y_SCROLL_SIZE y_scroll_size        EVENT_FUNC CW_BGROUP_EVENT        UVALUE WIDGET_INFO top_base   child      n   n_elements names    ids   lonarr n    for i   0  n 1 do begin     if  n_elements font  eq 0  then begin       ids i    WIDGET_BUTTON base  value names i  UVALUE i          UNAME uname _BUTTON STRTRIM i 2      endif else begin       ids i    WIDGET_BUTTON base  value names i  FONT font          UVALUE i  UNAME uname _BUTTON STRTRIM i 2      endelse   endfor      Keep the state info in the real  inner  base UVALUE      Pick an event value type:     0   Return ID     1   Return INDEX     2   Return NAME   ret_type   1   if KEYWORD_SET RETURN_ID  then ret_type   0   if KEYWORD_SET RETURN_NAME  then ret_type   2   if KEYWORD_SET BUTTON_UVALUE  then ret_type   3     case ret_type of       0: ret_arr   ids       1: ret_arr   indgen n        2: ret_arr   names       3: ret_arr   button_uvalue     endcase   type   0   if  excl ne 0  then type   1    if  nonexcl ne 0  then type   2   if n_elements efun  le 0 then efun       state     type:type         0 Standard  1 Exclusive  2 Non exclusive         base: top_base        cw_bgroup base          ret_arr:ret_arr       Vector of event values         efun : efun       Name of event fcn         nonexcl_curpos:intarr n      If non exclus  tracks state         excl_pos:0                If exclusive  current button         ids:ids               Ids of buttons         no_release:no_release     WIDGET_CONTROL  WIDGET_INFO top_base   CHILD  SET_UVALUE state   NO_COPY    if  n_elements sval  ne 0  then CW_BGROUP_SETV  top_base  sval    return  top_base END"); 
     370a[368] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html", "cw_bgroup.pro", "", "   Id: cw_bgroup pro 114 2006 06 19 14:14:56Z smasson       Copyright  c  1992 2005  Research Systems  Inc   All rights reserved      Unauthorized reproduction prohibited      NAME:     CW_BGROUP     PURPOSE:     CW_BGROUP is a compound widget that simplifies creating     a base of buttons  It handles the details of creating the     proper base  standard  exclusive  or non exclusive  and filling     in the desired buttons  Events for the individual buttons are     handled transparently  and a CW_BGROUP event returned  This     event can return any one of the following:           The Index of the button within the base            The widget ID of the button            The name of the button            An arbitrary value taken from an array of User values      CATEGORY:     Compound widgets      CALLING SEQUENCE:         Widget   CW_BGROUP Parent  Names        To get or set the value of a CW_BGROUP  use the GET_VALUE and     SET_VALUE keywords to WIDGET_CONTROL  The value of a CW_BGROUP     is:                     Type        Value                   normal      None         exclusive       Index of currently set button         non exclusive   Vector indicating the position                 of each button  1 set  0 unset                  INPUTS:         Parent:     The ID of the parent widget      Names:      A string array  containing one string per button              giving the name of each button      KEYWORD PARAMETERS:       BUTTON_UVALUE:  An array of user values to be associated with             each button and returned in the event structure      COLUMN:     Buttons will be arranged in the number of columns             specified by this keyword      EVENT_FUNCT:    The name of an optional user supplied event function             for buttons  This function is called with the return             value structure whenever a button is pressed  and             follows the conventions for user written event             functions      EXCLUSIVE:  Buttons will be placed in an exclusive base  with             only one button allowed to be selected at a time      FONT:       The name of the font to be used for the button             titles  If this keyword is not specified  the default             font is used      FRAME:      Specifies the width of the frame to be drawn around             the base      IDS:        A named variable into which the button IDs will be             stored  as a longword vector      LABEL_LEFT: Creates a text label to the left of the buttons      LABEL_TOP:  Creates a text label above the buttons      MAP:        If set  the base will be mapped when the widget             is realized  the default      NONEXCLUSIVE:   Buttons will be placed in an non exclusive base              The buttons will be independent      NO_RELEASE: If set  button release events will not be returned      RETURN_ID:  If set  the VALUE field of returned events will be             the widget ID of the button      RETURN_INDEX:   If set  the VALUE field of returned events will be             the zero based index of the button within the base              THIS IS THE DEFAULT      RETURN_NAME:    If set  the VALUE field of returned events will be             the name of the button within the base      ROW:        Buttons will be arranged in the number of rows             specified by this keyword      SCROLL:     If set  the base will include scroll bars to allow             viewing a large base through a smaller viewport      SET_VALUE:  The initial value of the buttons  This is equivalent             to the later statement:               WIDGET_CONTROL  widget  set_value value       SPACE:      The space  in pixels  to be left around the edges             of a row or column major base  This keyword is             ignored if EXCLUSIVE or NONEXCLUSIVE are specified      UVALUE:     The user value to be associated with the widget      UNAME:      The user name to be associated with the widget      XOFFSET:    The X offset of the widget relative to its parent      XPAD:       The horizontal space  in pixels  between children             of a row or column major base  Ignored if EXCLUSIVE             or NONEXCLUSIVE are specified      XSIZE:      The width of the base      X_SCROLL_SIZE:  The width of the viewport if SCROLL is specified      YOFFSET:    The Y offset of the widget relative to its parent      YPAD:       The vertical space  in pixels  between children of             a row or column major base  Ignored if EXCLUSIVE             or NONEXCLUSIVE are specified      YSIZE:      The height of the base      Y_SCROLL_SIZE:  The height of the viewport if SCROLL is specified      OUTPUTS:         The ID of the created widget is returned      SIDE EFFECTS:     This widget generates event structures with the following definition:           event     ID:0L  TOP:0L  HANDLER:0L  SELECT:0  VALUE:0         The SELECT field is passed through from the button event  VALUE is     either the INDEX  ID  NAME  or BUTTON_UVALUE of the button      depending on how the widget was created      RESTRICTIONS:     Only buttons with textual names are handled by this widget      Bitmaps are not understood      MODIFICATION HISTORY:     15 June 1992  AB     7 April 1993  AB  Removed state caching      6 Oct  1994  KDB  Font keyword is not applied to the label          10 FEB 1995  DJC  fixed bad bug in event procedure  getting                           id of stash widget      11 April 1995  AB Removed Motif special cases      pro CW_BGROUP_SETV  id  value   compile_opt hidden  idl2  strictarrsubs    ON_ERROR  2                        return to caller    stash   WIDGET_INFO id   CHILD    WIDGET_CONTROL  stash  GET_UVALUE state   NO_COPY    case state type of     0: message unable to set plain button group value      1: begin       WIDGET_CONTROL  SET_BUTTON 0  state ids state excl_pos        state excl_pos   value       WIDGET_CONTROL   SET_BUTTON  state ids value      end     2: begin       n   n_elements value 1       for i   0  n do begin         state nonexcl_curpos i    value i          WIDGET_CONTROL  state ids i  SET_BUTTON value i        endfor     end   endcase    WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY end    function CW_BGROUP_GETV  id  value    compile_opt hidden  idl2  strictarrsubs   ON_ERROR  2                        return to caller    stash   WIDGET_INFO id   CHILD    WIDGET_CONTROL  stash  GET_UVALUE state   NO_COPY    case state type of     0: message   unable to get plain button group value       1: ret   state excl_pos     1: ret   state ret_arr state excl_pos       2: ret   state nonexcl_curpos     2: BEGIN        index   where state nonexcl_curpos NE 0        if index 0  EQ  1 then begin         if size state ret_arr   type  EQ 7 then ret     ELSE ret    1       ENDIF ELSE ret   state ret_arr index      END   endcase      WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY    return  ret  end    function CW_BGROUP_EVENT  ev   compile_opt hidden  idl2  strictarrsubs   WIDGET_CONTROL  ev handler  GET_UVALUE stash   WIDGET_CONTROL  stash  GET_UVALUE state   NO_COPY   WIDGET_CONTROL  ev id  get_uvalue uvalue    ret   1            Assume we return a struct   case state type of     0:     1: if  ev select eq 1  then begin       state excl_pos   uvalue     ENDIF else begin       if  state no_release ne 0  then ret   0     ENDELSE     2: begin         Keep track of the current state       state nonexcl_curpos uvalue    ev select           if  state no_release ne 0  and  ev select eq 0  then ret   0     end   endcase    if ret then begin      Return a struct        ret     ID:state base  TOP:ev top  HANDLER:0L  SELECT:ev select               VALUE:state ret_arr uvalue          efun   state efun       WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY       if efun ne   then return  CALL_FUNCTION efun  ret          else return  ret   endif else begin       Trash the event       WIDGET_CONTROL  stash  SET_UVALUE state   NO_COPY       return  0   endelse end        function CW_BGROUP  parent  names        BUTTON_UVALUE   button_uvalue  COLUMN column  EVENT_FUNCT   efun        EXCLUSIVE excl  FONT font  FRAME frame  IDS ids  LABEL_TOP label_top        LABEL_LEFT label_left  MAP map        NONEXCLUSIVE nonexcl  NO_RELEASE no_release  RETURN_ID return_id        RETURN_INDEX return_index  RETURN_NAME return_name        ROW row  SCROLL scroll  SET_VALUE sval  SPACE space        TAB_MODE tab_mode  UVALUE uvalue        XOFFSET xoffset  XPAD xpad  XSIZE xsize  X_SCROLL_SIZE x_scroll_size      YOFFSET yoffset  YPAD ypad  YSIZE ysize  Y_SCROLL_SIZE y_scroll_size        UNAME uname     IF  N_PARAMS  ne 2  THEN MESSAGE   Incorrect number of arguments     ON_ERROR  2                        return to caller      Set default values for the keywords   version   WIDGET_INFO version    if  version toolkit eq  OLIT  then def_space_pad   4 else def_space_pad   3   IF  N_ELEMENTS column  eq 0       then column   0   IF  N_ELEMENTS excl  eq 0         then excl   0   IF  N_ELEMENTS frame  eq 0        then frame   0   IF  N_ELEMENTS map  eq 0      then map 1   IF  N_ELEMENTS nonexcl  eq 0      then nonexcl   0   IF  N_ELEMENTS no_release  eq 0   then no_release   0   IF  N_ELEMENTS row  eq 0      then row   0   IF  N_ELEMENTS scroll  eq 0       then scroll   0   IF  N_ELEMENTS space  eq 0        then space   def_space_pad   IF  N_ELEMENTS uname  eq 0       then uname    CW_BGROUP_UNAME    IF  N_ELEMENTS uvalue  eq 0       then uvalue   0   IF  N_ELEMENTS xoffset  eq 0      then xoffset 0   IF  N_ELEMENTS xpad  eq 0         then xpad   def_space_pad   IF  N_ELEMENTS xsize  eq 0        then xsize   0   IF  N_ELEMENTS x_scroll_size  eq 0    then x_scroll_size   0   IF  N_ELEMENTS yoffset  eq 0      then yoffset 0   IF  N_ELEMENTS ypad  eq 0         then ypad   def_space_pad   IF  N_ELEMENTS ysize  eq 0        then ysize   0   IF  N_ELEMENTS y_scroll_size  eq 0    then y_scroll_size   0       top_base   0L   if  n_elements label_top  ne 0  then begin     next_base   WIDGET_BASE parent  XOFFSET xoffset  YOFFSET yoffset   COLUMN      if keyword_set font then          junk   WIDGET_LABEL next_base  value label_top font font        else    junk   WIDGET_LABEL next_base  value label_top      top_base   next_base   endif else next_base   parent    if  n_elements label_left  ne 0  then begin     next_base   WIDGET_BASE next_base  XOFFSET xoffset  YOFFSET yoffset   ROW      if keyword_set font then          junk   WIDGET_LABEL next_base  value label_left  font font        else junk   WIDGET_LABEL next_base  value label_left      if  top_base eq 0L  then top_base   next_base   endif     We need some kind of outer base to hold the users UVALUE   if  top_base eq 0L  then begin     top_base   WIDGET_BASE parent  XOFFSET xoffset  YOFFSET yoffset      next_base   top_base   endif   If  top_base EQ next_base  THEN        next_base   WIDGET_BASE top_base  Xpad 1  Ypad 1  Space 1       Set top level base attributes   WIDGET_CONTROL  top_base  MAP map        FUNC_GET_VALUE CW_BGROUP_GETV  PRO_SET_VALUE CW_BGROUP_SETV        SET_UVALUE uvalue  SET_UNAME uname      Tabbing   if  n_elements tab_mode  ne 0  then begin     WIDGET_CONTROL  top_base  TAB_MODE tab_mode     WIDGET_CONTROL  next_base  TAB_MODE tab_mode   end      The actual button holding base   base   WIDGET_BASE next_base  COLUMN column  EXCLUSIVE excl  FRAME frame        NONEXCLUSIVE nonexcl  ROW row  SCROLL scroll  SPACE space        XPAD xpad  XSIZE xsize  X_SCROLL_SIZE x_scroll_size        YPAD ypad  YSIZE ysize  Y_SCROLL_SIZE y_scroll_size        EVENT_FUNC CW_BGROUP_EVENT        UVALUE WIDGET_INFO top_base   child      n   n_elements names    ids   lonarr n    for i   0  n 1 do begin     if  n_elements font  eq 0  then begin       ids i    WIDGET_BUTTON base  value names i  UVALUE i          UNAME uname _BUTTON STRTRIM i 2      endif else begin       ids i    WIDGET_BUTTON base  value names i  FONT font          UVALUE i  UNAME uname _BUTTON STRTRIM i 2      endelse   endfor      Keep the state info in the real  inner  base UVALUE      Pick an event value type:     0   Return ID     1   Return INDEX     2   Return NAME   ret_type   1   if KEYWORD_SET RETURN_ID  then ret_type   0   if KEYWORD_SET RETURN_NAME  then ret_type   2   if KEYWORD_SET BUTTON_UVALUE  then ret_type   3     case ret_type of       0: ret_arr   ids       1: ret_arr   indgen n        2: ret_arr   names       3: ret_arr   button_uvalue     endcase   type   0   if  excl ne 0  then type   1    if  nonexcl ne 0  then type   2   if n_elements efun  le 0 then efun       state     type:type         0 Standard  1 Exclusive  2 Non exclusive         base: top_base        cw_bgroup base          ret_arr:ret_arr       Vector of event values         efun : efun       Name of event fcn         nonexcl_curpos:intarr n      If non exclus  tracks state         excl_pos:0                If exclusive  current button         ids:ids               Ids of buttons         no_release:no_release     WIDGET_CONTROL  WIDGET_INFO top_base   CHILD  SET_UVALUE state   NO_COPY    if  n_elements sval  ne 0  then CW_BGROUP_SETV  top_base  sval    return  top_base END"); 
    371371a[369] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html", "cw_calendar.pro", "", "  IDL  testwid julday 1 1 1980 lindgen 100 5     PRO testwid_event  event       ComboboxId   widget_info event top find_by_uname    c est lui       widget_control  event id  get_uvalue uval      if n_elements uval  EQ 0 then return      case uval of          done :widget_control  event top   destroy          set :BEGIN             widget_control  event id  get_value   value            widget_control  ComboboxId  set_value   value         END          get :BEGIN             widget_control  ComboboxId  get_value   value            help   value   struct         END         ELSE:      endcase      return   end   PRO testwid  calendar  date0  _extra   ex      base widget_base COLUMN    print   base  base      nothing   widget_label base  value    beginning of the test           nothing   cw_calendar base calendar  date0  _extra   ex  uname    c est lui  uvalue    c est lui      print   cw_calendar ID   nothing          nothing   widget_label base  value    end of the test        nothing   widget_text base  value   string calendar 0  uvalue    set   editable        nothing   widget_button base  value    get  uvalue    get        nothing   widget_button base  value    done  uvalue    done       widget_control  base   REALIZE      xmanager testwid  base      return   END       PRO cw_calendar_set_value  id  value     compile_opt strictarr  strictarrsubs       cm_4cal   get back the calendar and its related informations   winfo_id   widget_info id  find_by_uname    infocal    widget_control  winfo_id  get_uvalue   infowid   key_caltype   infowid caltype      high freqeuncy calendar   IF keyword_set infowid fakecal  THEN BEGIN     value2   date2jul long value    infowid fakecal     IF value2 LT n_elements infowid calendar  AND value2 GE 0 THEN BEGIN         stepid   widget_info id  find_by_uname    step        widget_control  stepid  set_value    combobox_select:value2        infowid date   jul2date value2   infowid fakecal        widget_control  winfo_id  set_uvalue   infowid     ENDIF   ENDIF ELSE BEGIN        value   long value 0    define year month day     year   value 10000l     month    value MOD 10000L 100L     day   value MOD 100L   make sure the values correspond to real dates     if year EQ 0 then year    1      if month EQ 0 then month   6     if day EQ 0 then day   15   check that the date exists in the calendar   if  where infowid calendar EQ julday month  day  year 0  EQ   1 then return   update the value of infocal     infowid date   value     widget_control  winfo_id  set_uvalue   infowid   update the combobox if needed      possiblecase    day   month   year      for name   2  0   1 do BEGIN   call set_cal_combobox with out   2 to specify that the call is coming   from cw_calendar_set_value       if widget_info id  find_by_uname   possiblecase name  NE 0 then            set_cal_combobox   handler:id  out:2  possiblecase name  value     ENDFOR   ENDELSE     return end   FUNCTION cw_calendar_get_value  id     compile_opt strictarr  strictarrsubs      winfo_id   widget_info id  find_by_uname    infocal    widget_control  winfo_id  get_uvalue   infowid   return  infowid date END   FUNCTION get_cal_value  id  winfoid      compile_opt strictarr  strictarrsubs      winfo_id   widget_info id  find_by_uname    infocal    widget_control  winfo_id  get_uvalue   infowid   oldate   infowid date  day    wid_id   widget_info id  find_by_uname    day    if wid_id NE 0 then BEGIN     widget_control  wid_id  get_value   wid_value     date   long wid_value combobox_gettext    ENDIF ELSE date   oldate MOD 100L  month    wid_id   widget_info id  find_by_uname    month    if wid_id NE 0 then BEGIN     widget_control  wid_id  get_value   wid_value     allmonths   string format    C CMoA  31 indgen 12      month    where allmonths EQ wid_value combobox_gettext 0    1      date   date   100L   long month    ENDIF ELSE date   date    oldate MOD 10000L 100L 100L  year    wid_id   widget_info id  find_by_uname    year    widget_control  wid_id  get_value   wid_value   date   date   10000L   long wid_value combobox_gettext      IF arg_present winfoid  NE 0 THEN BEGIN     winfoid   winfo_id     infowid date   date     return  infowid   ENDIF ELSE return  date end     redefine the value and index position of the combobox PRO set_cal_combobox  event  casename  date0     compile_opt strictarr  strictarrsubs      casename: Which widget shall we move:  day   month  or  year      wid_id   widget_info event handler  find_by_uname   casename    we get back the calendar    winfo_id   widget_info event handler  find_by_uname    infocal    widget_control  winfo_id  get_uvalue   infowid   caldat  infowid calendar  monthcal  daycal  yearcal     and the current date   IF n_elements date0  EQ 0 then date0   get_cal_value event handler    year0   date0 10000L   month0    date0 MOD 10000L 100L   day0   date0 MOD 100L   index of days months years according to date0   case casename of      day :BEGIN    list of days corresponding to month0 and year0       index   where monthcal EQ month0 AND yearcal EQ year0        current   daycal index      END      month :BEGIN    list of months corresponding to year0       index   where yearcal EQ year0        current   monthcal index    keep only the uniq values       indexbis   uniq current        index   index indexbis        current   current indexbis      END      year :BEGIN    keep only the uniq years       index   uniq yearcal        current   yearcal index      END   ENDCASE   we update the uvalue of the widget   widget_control  wid_id  set_uvalue    name:casename    for event out   0  we store the previous position of the combobox to use   it as the default position    IF event out EQ 0 THEN widget_control  wid_id  get_value   oldselect   we redefine the new list   if casename EQ  month  then begin     widget_control  wid_id  set_value   string format    C CMoA  31 current 1    ENDIF ELSE BEGIN      widget_control  wid_id  set_value   strtrim current  1    ENDELSE   specify the index position within the new list of values    widget_control  wid_id  get_value   combobox   CASE event out OF    1: we put to the biggest position      1:selected   combobox combobox_number   1   0: same as the previous position is the best choice      0:selected   oldselect combobox_index    combobox combobox_number   1    1: we put to the smallest position     1:selected   0   2: a new date has been specified      2:BEGIN        case casename of          day :selected    where current EQ day0 0           month :selected    where current EQ month0 0           year :selected    where current EQ year0 0        ENDCASE     END   ENDCASE   widget_control  wid_id  set_value    combobox_select:selected    update the date    infowid date   get_cal_value event handler    widget_control  winfo_id  set_uvalue   infowid   return end     move cyclicly the calendar to the   value 0 if event out 1 or combobox_number 1 if event out 1 PRO move  event  casename     compile_opt strictarr  strictarrsubs       possiblecase    day   month   year   impossiblecase     id   widget_info event handler  find_by_uname   casename     widget_control  id  get_value   wvalue   we try to move but we are already at the beginning end of the combobox   wvalue combobox_index EQ  wvalue combobox_number 1  and event out EQ 1   wvalue combobox_index EQ 0 and event out EQ  1  move is not called when out eq 0     whichcase    where possiblecase EQ casename 0     if wvalue combobox_index EQ  wvalue combobox_number 1 event out EQ 1  THEN BEGIN       if widget_info event handler  find_by_uname   possiblecase whichcase 1  EQ 0 then begin   it is impossible to move the  next  combobox           widget_control  id  get_value   widvalue   we set to  widvalue combobox_number 1  when event out EQ  1   and to 0 when event out EQ 1          selected    widvalue combobox_number 1 event out EQ  1           widget_control  id  set_value    combobox_select:selected    we call move for the next combobox       ENDIF ELSE move  event  possiblecase whichcase 1    it is possible to move from   1    ENDIF ELSE widget_control  id  set_value    combobox_select:wvalue combobox_index event out     set_cal_combobox  event  possiblecase whichcase 1     return end   FUNCTION cw_calendar_event  event    cm_4cal   compile_opt strictarr  strictarrsubs      winfo_id   widget_info event handler  find_by_uname    infocal    widget_control  winfo_id  get_uvalue   infowid   key_caltype   infowid caltype     widget_control  event id  get_uvalue   uval   high frequency calendar   IF uval name EQ  step  THEN BEGIN      infowid date   jul2date event index   infowid fakecal    ENDIF ELSE BEGIN       possiblecase    day   month   year   impossiblecase      whichcase    where possiblecase EQ uval name 0      if event out NE 0 then BEGIN   we use the   button and we want to go out of the combobox:   to index    1  event out 1  or to index   combobox_number  event out 1    we try to move the combobox just right  with name: possiblecase whichcase 1        if widget_info event handler  find_by_uname   possiblecase whichcase 1  EQ 0 then BEGIN   this widget do not exist we set cyclicly the current widget to the   value 0 if event out 1 or combobox_number 1 if event out 1         widget_control  event id  get_value   widvalue         selected    widvalue combobox_number 1 event out EQ  1          widget_control  event id  set_value    combobox_select:selected        ENDIF ELSE move  event  possiblecase whichcase 1      ENDIF   if we changed month year  we need to update the day  and month  list     if uval name NE  day  then begin       event out   0       for name   whichcase 1  0   1 do BEGIN         if widget_info event handler  find_by_uname   possiblecase name  NE 0 then              set_cal_combobox  event  possiblecase name        endfor     ENDIF   we update the date     infowid   get_cal_value event handler  winfo_id    ENDELSE      widget_control  winfo_id  set_uvalue   infowid   return   CW_CALENDAR  ID:event handler  TOP:event top  HANDLER:0L                VALUE:infowid date  FAKECAL: infowid fakecal  end     FUNCTION cw_calendar  parent  calendar  jdate0  CALTYPE   CALTYPE  FAKECAL   fakecal  UVALUE   uvalue  UNAME   uname  _extra   ex    cm_4cal     compile_opt strictarr  strictarrsubs      if keyword_set caltype  then key_caltype   caltype   months days years found in the calendar   caldat  calendar  monthcal  daycal  yearcal  hourcal  mincal  scdcal   starting date   if n_elements jdate0  EQ 0 then jdate0   calendar 0    if  where calendar EQ jdate0 0  EQ  1 then jdate0   calendar 0      caldat  jdate0  month0  day0  year0   test the type of calendar   if n_elements calendar  GT 1 then BEGIN   each day have the same value     if n_elements uniq daycal  sort daycal  EQ 1 then monthly   1   each month and each day have the same value     if keyword_set monthly  AND n_elements uniq monthcal  sort monthcal  EQ 1 then yearly   1   endif     if NOT keyword_set uvalue  then uvalue    dummy:    if NOT keyword_set uname  then uname       base0   widget_base parent   ROW                           EVENT_FUNC    cw_calendar_event                            FUNC_GET_VALUE    cw_calendar_get_value                            PRO_SET_VALUE    cw_calendar_set_value                            UVALUE   uvalue  UNAME   uname  space   0  _extra   ex       if n_elements fakecal  eq 0 then fakecal   0   base   widget_base base0  space   0  uname    infocal                           uvalue    calendar:calendar  date:jul2date jdate0  fakecal:fakecal  caltype: key_caltype      IF keyword_set fakecal  THEN BEGIN      cmbbid   cw_combobox_pm base  UVALUE    name: step  UNAME    step                                  value   strtrim indgen n_elements calendar  1      widget_control  cmbbid  set_value    combobox_select: where calendar EQ jdate0 0    ENDIF ELSE BEGIN        vallen   widget_info base  string_size    m   day      if NOT keyword_set monthly   then begin       dayindex   where monthcal EQ month0 AND yearcal EQ year0        currentday   daycal dayindex        currentday   strtrim currentday  1        cmbbid   cw_combobox_pm base  UVALUE    name: day  UNAME    day  value   currentday        widget_control  cmbbid  set_value    combobox_select: where long currentday  EQ day0 0      endif  month      if NOT keyword_set yearly   then BEGIN       monthindex   where yearcal EQ year0        currentmonth   long monthcal monthindex    we suppress the repeted months       monthindexbis   uniq currentmonth  sort currentmonth        monthindex   monthindex monthindexbis        currentmonth   currentmonth monthindexbis        xoff    34   2 vallen 0 1 keyword_set monthly        cmbbid   cw_combobox_pm base  UVALUE    name: month  UNAME    month  value   string format    C CMoA  31 currentmonth 1  xoffset   xoff        widget_control  cmbbid  set_value    combobox_select: where long currentmonth  EQ month0 0      endif  year      yearindex   uniq yearcal  sort yearcal      currentyear   strtrim yearcal yearindex  1      xoff    34   2 vallen 0 1 keyword_set monthly     33   3 vallen 0 1 keyword_set yearly      cmbbid   cw_combobox_pm base  UVALUE    name: year  UNAME    year  value   currentyear  xoffset   xoff      widget_control  cmbbid  set_value    combobox_select: where long currentyear  EQ year0 0      ENDELSE     return  base end"); 
    372372a[370] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html", "cw_combobox_pm.pro", "", "          NAME: cw_combobox_pm     PURPOSE: widget equivalent a WIDGET_COMBOBOX sauf qu en plus on   dispose de 2 bouttons   et   pour deplacer le widget de   1      CATEGORY: compound widget  aide a l ecriture des widgets      CALLING SEQUENCE: id cw_combobox_pm parent       INPUTS:           Parent: The widget ID of the parent widget      KEYWORD PARAMETERS:tous ceux de WIDGET_COMBOBOX     OUTPUTS:           The returned value of this function is the widget ID of the           newly created animation widget      COMMON BLOCKS: none     SIDE EFFECTS:         Widget Events Returned by Combobox Widgets       Pressing the mouse button while the mouse cursor is over an     element of a combobox widget causes the widget to change the label     on the combobox button and to generate an event  The appearance of     any previously selected element is restored to normal at the same     time  The event structure returned by the WIDGET_EVENT function is     defined by the following statement:         CW_COMBOBOX_PM  ID:0L  TOP:0L  HANDLER:0L  INDEX:0L  OUT:0         The first three fields are the standard fields found in every     widget event      INDEX returns the index of the selected item  This can be used to     index the array of names originally used to set the widget s     value     OUT:c est un entier qui peut prendre 3 valeurs:         1 : si on appuie sur   alors que l index est deja aux max  rq:         ds ce cas l index reste au max          1: si on appuie sur   alors que l index est deja aux min  rq:         ds ce cas l index reste au min         0 : ds les autres cas        Keywords to WIDGET_CONTROL       A number of keywords to the WIDGET_CONTROL procedure affect the     behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE          1  GET_VALUE     widget_control wid_id get_value resultat     retourne ds la variable resultat une structure de 3 elements dont     les noms sont inspires des mots cles que l on peut passer a     widget_control qd on utilise WIDGET_COMBOBOX:              COMBOBOX_NUMBER: the number of elements currently              contained in the specified combobox widget               COMBOBOX_SELECT: the zero based number of the              currently selected element  i e  the currently displayed              element  in the specified combobox widget               DYNAMIC_RESIZE: a True value  1  if the widget specified              by Widget_ID is a button  combobox  or label widget that              has had its DYNAMIC_RESIZE attribute set  Otherwise               False  0  is returned          2  SET_VALUE     widget_control wid_id set_value impose     permet de modifier l etat de la combobox comme on peut le faire     pour WIDGET_COMBOBOX Impose peut etre:         a  The contents of the list widget  string or string array          b  une structure qui peut avoir comme elements  de 1 a 3 :              DYNAMIC_RESIZE:Set this keyword to activate  if set to 1               or deactivate  if set to 0  dynamic resizing of the              specified CW_COMBOBOX_PM widget  see the documentation              for the DYNAMIC_RESIZE keyword to WIDGET_COMBOBOX              procedure for more information about dynamic widget              resizing               COMBOBOX_SELECT:Set this keyword to return the zero based              number of the currently selected element  i e  the              currently displayed element  in the specified combobox              widget               VALUE: The contents of the list widget  string or string              array      RESTRICTIONS:     EXAMPLE: cf utiliser le programme founit i dessous: testwid et la   procedure associee  testwid_event      MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         6 9 1999             testwid  value strtrim indgen 10 2    PRO testwid_event  event       help  event   STRUCT      ComboboxId   widget_info event top find_by_uname    c est lui       widget_control  event id  get_uvalue uval      if n_elements uval  EQ 0 then return      case uval of          done :widget_control  event top   destroy          dynamic_resize :BEGIN             widget_control  event id  get_value   value            widget_control  ComboboxId  set_value    dynamic_resize:value          END          combobox_select :BEGIN             widget_control  event id  get_value   value            widget_control  ComboboxId  set_value    combobox_select:value          END          value :BEGIN             widget_control  event id  get_value   value            widget_control  ComboboxId  set_value   value         END          get :BEGIN             widget_control  ComboboxId  get_value   value            help   value   struct         END         ELSE:      endcase      return   end   PRO testwid  _extra   ex      base widget_base COLUMN    print   base  base      nothing   widget_label base  value    beginning of the test           nothing   cw_combobox_pm base  _extra   ex  uname    c est lui  uvalue    c est lui    print   cw_combobox_pm ID   nothing          nothing   widget_label base  value    end of the test       nothing   widget_text base  value    0  uvalue    dynamic_resize   editable       nothing   widget_text base  value    10  uvalue    combobox_select   editable       nothing   widget_text base  value    5  uvalue    value   editable       nothing   widget_button base  value    get  uvalue    get       nothing   widget_button base  value    done  uvalue    done       widget_control  base   REALIZE      xmanager testwid  base      return   end   PRO cw_combobox_pm_set_value  id  value     compile_opt idl2  strictarrsubs      ComboboxId   widget_info id find_by_uname    Combobox     if size value   type  eq 8 then BEGIN   this is a structure       tagnames   tag_names value        for tag   0  n_tags value 1 do begin          case strtrim strlowcase tagnames tag  2  of              dynamic_resize :widget_control  ComboboxId  dynamic_resize   value dynamic_resize   for compatibility              droplist_select :widget_control  ComboboxId  set_combobox_select   value droplist_select              combobox_select :widget_control  ComboboxId  set_combobox_select   value combobox_select              value :widget_control  ComboboxId  set_value   value value             ELSE:ras   report wrong tag name in argument  value  of cw_combobox_pm_set_value           endcase       endfor    ENDIF ELSE widget_control  ComboboxId  set_value   value    return end   FUNCTION cw_combobox_pm_get_value  id     compile_opt idl2  strictarrsubs      ComboboxId   widget_info id find_by_uname    Combobox     widget_control  ComboboxId  get_value   cmbbval    cmbbtxt   widget_info ComboboxId   combobox_gettext     cmbbnumb   widget_info ComboboxId   combobox_number     index    where cmbbval EQ cmbbtxt 0     return   combobox_number:cmbbnumb  combobox_gettext:cmbbtxt                 combobox_index:index  combobox_value:cmbbval                 dynamic_resize:widget_info ComboboxId   dynamic_resize  end   FUNCTION cw_combobox_pm_event  event     compile_opt idl2  strictarrsubs      widget_control  event id  get_uvalue uval      if uval EQ  Combobox  then       return   CW_COMBOBOX_PM  ID:event handler  TOP:event top  HANDLER:0L                  INDEX:event index  STR:event str  OUT:0       ComboboxId   widget_info event handler find_by_uname    Combobox     widget_control  ComboboxId  get_value   cmbbval    cmbbtxt   widget_info ComboboxId   combobox_gettext     cmbbnumb   widget_info ComboboxId   combobox_number     index    where cmbbval EQ cmbbtxt 0     out   0    case uval OF        plus :BEGIN          if index LT  cmbbnumb   1  then BEGIN             index   index   1            widget_control  ComboboxId  set_combobox_select   index          ENDIF ELSE out   1       END        minus :BEGIN          if index GT 0 then BEGIN             index   index   1            widget_control  ComboboxId  set_combobox_select   index          ENDIF ELSE out    1       END    endcase    return   CW_COMBOBOX_PM  ID:event handler  TOP:event top  HANDLER:0L                       INDEX:index  STR:cmbbtxt  OUT:out  end   FUNCTION cw_combobox_pm  parent  VALUE   value  UVALUE   uvalue  UNAME   uname  ROW   row  COLUMN   column  _extra   ex     compile_opt idl2  strictarrsubs       IF  N_PARAMS  NE 1  THEN MESSAGE   Incorrect number of arguments     ON_ERROR  2                   return to caller   cheking for row and column keywords    row   keyword_set row 1 keyword_set column      column   keyword_set column 1 keyword_set row keyword_set column  EQ row      if NOT keyword_set uvalue  then uvalue        if NOT keyword_set uname  then uname          base   widget_base parent  space   0                           EVENT_FUNC    cw_combobox_pm_event                            FUNC_GET_VALUE cw_combobox_pm_get_value                            PRO_SET_VALUE cw_combobox_pm_set_value                            UVALUE   uvalue  UNAME   uname  _extra   ex          vallen   widget_info base  string_size    m     vallen   35    vallen 0 1 max strlen value     if keyword_set row  THEN BEGIN       nothing   widget_button base  value     uvalue    minus  xoffset   0                                  yoffset   5  xsize   15  ysize   15       nothing   widget_combobox base  VALUE   value  UVALUE    Combobox  UNAME    Combobox                                     xoffset   13  yoffset   0  xsize   vallen       nothing   widget_button base  value     uvalue    plus                                   xoffset   vallen 11  yoffset   5                                  xsize   15  ysize   15     ENDIF ELSE BEGIN       nothing   widget_combobox base  VALUE   value  UVALUE    Combobox  UNAME    Combobox                                     xoffset   0  yoffset   0  xsize   vallen       nothing   widget_button base  value     uvalue    minus                                   xoffset   vallen 2 15                                  yoffset   24  xsize   15  ysize   15       nothing   widget_button base  value     uvalue    plus                                   xoffset   vallen 2                                  yoffset   24  xsize   15  ysize   15     ENDELSE        widget_control base realize      return  base end"); 
     
    383383a[381] = new Array("./ToBeReviewed/WIDGET/xx.html", "xx.pro", "", " PRO xx   JOUR   jour  MESHFILENAME   meshfilename   LISTVAR   listvar  LISTGRID   listgrid  FUNCLEC_NAME   funclec_name  CALENDAR   calendar  _extra   ex       compile_opt idl2  strictarrsubs    common        partie a changer       nom de la fonction de lecture:    if NOT keyword_set funclec_name  then funclec_name    slec     varexp    INF    liste des variables    if NOT keyword_set listvar  then listvar    tn sn un vn   taux   tauy hdep20 hdep28 hdep15 hturb hpycn htoth emp qn qs   smltot11   smltot12   smltot13   smltot14   smltot15   smltot16   tmltot11   tmltot12   tmltot13   tmltot14   tmltot15   tmltot16    liste des grilles auxquelles elles se rapportent les variables    if NOT keyword_set listgrid  then BEGIN        listgrid   replicate T  n_elements listvar        listgrid 2  4     U        listgrid 3  5     V     ENDIF   calendrier a utiliser  en jours juliens d IDL         if NOT keyword_set calendar  then BEGIN          if keyword_set jour  then calendar   calendriertotem julian_day  ELSE calendar   calendriertotem julian_day   mensuel       ENDIF   nom du fichier se rapportant au masque    if NOT keyword_set meshfilename  then meshfilename    usr1 com smasson IDL INIT inittotem pro      meshparameters   whichgrid meshfilename    parameteres specifiant comment doit etre lu le champ    readparameters   funclec_name: funclec_name                         jpidta: jpidta  jpjdta: jpjdta  jpkdta: jpkdta                         ixmindta: ixmindta  ixmaxdta: ixmaxdta                         iymindta: iymindta  iymaxdta: iymaxdta                         izmindta: izmindta  izmaxdta: izmaxdta           fin de la partie a changer            fileparameters    filename:  many                            time_counter: calendar                          listvar: listvar                          listgrid: strupcase listgrid       multistructure    fileparameters: temporary fileparameters                    readparameters: temporary readparameters                    meshparameters: temporary meshparameters       xxx  multistructure   temporary multistructure  _extra   ex     return end"); 
    384384a[382] = new Array("./ToBeReviewed/WIDGET/xxx.html", "xxx.pro", "", "          NAME:xxx     PURPOSE:un maximum de possibilites avec un minimum de clics     CATEGORY:super widget     CALLING SEQUENCE:xxx      INPUTS:none     KEYWORD PARAMETERS:           SEPARATE: pour separer la partie boutons de la partie dessin        en 2 fenetres  Utile pour les petits ecrans  mais attention        peut saturer la memoire video de certains Tx un peu vetustes           RESTORE toto dat  ou toto dat est un fichier cree lors d une        precedente utilisation de xxx grace a la commande  Widget  du        menu  save as      OUTPUTS:     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr             PRO xxx_event  event       compile_opt idl2  strictarrsubs    common          widget_info event top find_by_uname       quel est le type d evenement      if event id EQ 622 then help   event    struct    widget_control  event id  get_uvalue uval    if  tag_names event   structure_name 0  EQ  WIDGET_TRACKING  then uval    name: ActiverFenetre     if keyword_set uval  EQ 0 then return  help   event   struct  help  uval    struct   case sur le type d evenement    widget_control  event top  get_uvalue   top_uvalue   si on a active le mot cles separate a l appelle de xxx    if size top_uvalue   type  EQ 3 then begin       event top   top_uvalue       widget_control  event top  get_uvalue   top_uvalue    endif   on tue le petit widget cree par notice pro si il existe    noticebase   extractatt top_uvalue   noticebase     if noticebase NE 0 then BEGIN       widget_control  noticebase   destroy        top_uvalue 1  findline top_uvalue   noticebase    0l    endif      options   extractatt top_uvalue   options     case uval name OF        menubar :xxxmenubar_event  event        ok :nouveaudessin   1        specifie :        action :        calendar1 :BEGIN          date2id   widget_info event top  find_by_uname    calendar2           widget_control  date2id  get_value   date2          if event value GT date2 then widget_control  date2id  set_value   event value       END        calendar2 :BEGIN          date1id   widget_info event top  find_by_uname    calendar1           widget_control  date1id  get_value   date1          if event value LT date1 then widget_control  date1id  set_value   event value       END        domain :        varlist :BEGIN          currentfile    extractatt top_uvalue   currentfile           listvar    extractatt top_uvalue   fileparameters currentfile listvar          name   listvar event index           changefield  event top  name       END        txtcmd :        filelist :BEGIN          changefile  event top  event index       END        ActiverFenetre :BEGIN          if event enter EQ 1 AND  d name NE  PS  then BEGIN              graphid   widget_info event top find_by_uname    graph              graphid   extractatt top_uvalue   graphid              widget_control graphid get_value win             wset  win             widget_control event top get_uvalue top_uvalue             numdessinin    extractatt top_uvalue   smallin 2 1              p    extractatt top_uvalue   penvs numdessinin               x    extractatt top_uvalue   xenvs numdessinin               y    extractatt top_uvalue   yenvs numdessinin           endif       END        graph :BEGIN          quelclick   identifyclick event           case quelclick type of              inutile :return              long :longclickaction  event              single :singleclickaction  event              double :doubleclickaction  event          endcase       END    endcase    if keyword_set nouveaudessin  then letsdraw  event top    return end             PRO xxx  datafilename  idlfile  argspro  CALLERWIDID   CallerWidId              REDRAW   redraw  SEPARATE   separate  UVALUE   uvalue              RESTORE   restore  _EXTRA   ex       compile_opt idl2  strictarrsubs    all_cm     reinitialize the  p   x   y   z variables     reinitplt     we get back the uvalue of the widget that called xxx to create a new widget   if keyword_set restore  then BEGIN     restore   isafile filename   restore  iodir   homedir  _extra   ex      if size restore   type  NE 7 then restore   0 ELSE BEGIN        restore  isafile file   restore  iodir   homedir  _extra   ex        newgrid    extractatt uvalue   meshparameters 0        change   changegrid newgrid      ENDELSE    endif   if n_elements CallerWidId  NE 0 THEN        widget_control  CallerWidId  get_uvalue   uvalue ELSE CallerWidId   0       liste des fichiers que l on veut regarder     if keyword_set uvalue  then BEGIN      currentfile   extractatt uvalue   currentfile      filelist   extractatt uvalue   filelist      fileparameters   extractatt uvalue   fileparameters      readparameters   extractatt uvalue   readparameters      meshparameters   extractatt uvalue   meshparameters    ENDIF ELSE BEGIN     newfile   selectfile datafilename  idlfile  argspro  _extra   ex      if size newfile   type  NE 8 then return     fileparameters   ptrarr 1   allocate_heap       fileparameters 0    newfile fileparameters     readparameters   ptrarr 1   allocate_heap       readparameters 0    newfile readparameters     meshparameters   ptrarr 1   allocate_heap       meshparameters 0    newfile meshparameters     currentfile   0     filelist   newfile fileparameters filename   ENDELSE     if keyword_set uvalue  THEN BEGIN      smallin   extractatt uvalue   smallin      smallout   extractatt uvalue   smallout    ENDIF ELSE BEGIN      smallin    1  1  1      smallout    1  1  1    ENDELSE    nbredessin   smallin 0 smallin 1    numdessinin   smallin 2 1   warning flg definition must be consistent with cw_pdmenu argument   see also flag definition in cw_pagelayout   if keyword_set uvalue  then BEGIN      flag   extractatt uvalue   optionsflag      key_portrait   flag 0  numdessinin    ENDIF ELSE flag    key_portrait  0  0  0  0 replicate 1  nbredessin         We start the widget definition         widget and screen size   scrsize   get_screen_size 0 95   windsize   givewindowsize    xxxsize    windsize 0     1 keyword_set separate    350  windsize 1        The top base     IF xxxsize 0  LE scrsize 0  AND xxxsize 1  LE scrsize 1  THEN BEGIN      base   widget_base title    xxx  GROUP_LEADER   group   tracking_events                            uname    base  space   0    ENDIF ELSE BEGIN      base   widget_base title    xxx  GROUP_LEADER   group   tracking_events                            uname    base  space   0                            xsize   xxxsize 0  ysize   xxxsize 1                             x_scroll_size    xxxsize 0   selectact    ENDIF ELSE selectfile   0      menu options     xoff   xoff   110   if keyword_set uvalue  then begin     options   extractatt uvalue   options    ENDIF ELSE options    Portrait Landscape   Overlay   Vecteur                               Longitude   x index   Latitude   y index      desc      1 File                 0 Open                   0 New xxx                   2 Quit                 1 Save as                   0 PostScript                   0 Animated gif                   0 Gif                   0 IDL procedure                 0 RESTORE kwd of xxx                 2 Print to prompt                 1 Flag options     descsuite   options    if n_elements descsuite  GE 2 then       descsuite 0:n_elements descsuite 2     0 descsuite 0:n_elements descsuite 2     descsuite n_elements descsuite 1     2 descsuite n_elements descsuite 1     desc    desc  descsuite       menu   cw_pdmenu base  desc   RETURN_NAME  uname    menubar  uvalue    name: menubar                          xoffset   xoff  yoffset   yoff       Ok button     yoff   yoff   37   xoff   5   boutton  OK    baseok   widget_button base  value     OK   uvalue    name: ok  uname    ok button                                frame  xoffset   xoff  yoffset   yoff       Page Layout     page layout   xoff   xoff   65   dummyid   cw_pagelayout base  smallin   row   frame  xoffset   xoff  yoffset   yoff        List of Variables     xoff   xoff   140   currentlistvar    fileparameters currentfile listvar   vlstid   widget_combobox base  value   currentlistvar  uvalue    name: varlist                                 uname    varlist  xoffset   xoff  yoffset   yoff 1    if keyword_set uvalue  then BEGIN     selectvar    extractatt uvalue   varinfo 1  numdessinin      selectvar    where currentlistvar EQ selectvar 0      widget_control  vlstid  set_combobox_select   0   selectvar    ENDIF ELSE selectvar   0     List of files     yoff   yoff   35   flstid   widget_combobox base  value   file_basename filelist  uname    filelist                                 xsize   345  yoffset   yoff  uvalue    name: filelist    if keyword_set uvalue  then BEGIN     selectfile    extractatt uvalue   varinfo 0  numdessinin      selectfile    where file_basename filelist  EQ selectfile 0      widget_control  flstid  set_combobox_select   0   selectfile    ENDIF ELSE selectfile   0     Text for computation     yoff   yoff   32   computation done on the files    if keyword_set uvalue  then txtvalue    extractatt uvalue   txtcmd numdessinin      ELSE txtvalue   varexp   dummyid   widget_text base  value   txtvalue  uvalue    name: txtcmd  uname    txtcmd                               editable  yoffset   yoff  xsize   54   frame      Calendar     yoff   yoff   40   currentcalendar    fileparameters currentfile time_counter   key_caltype    fileparameters currentfile caltype   fakecal    fileparameters currentfile fakecal   if keyword_set uvalue  then begin     dates    extractatt uvalue   dates  numdessinin      date1   date2jul dates 0      date2   date2jul dates 1    ENDIF   basecalid   widget_base base  column   2  space   0  yoffset   yoff  uname    basecal    dummyid   cw_calendar basecalid  currentcalendar  date1  FAKECAL   fakecal  uname    calendar1  uvalue    name: calendar1   frame    dummyid   cw_calendar basecalid  currentcalendar  date2  FAKECAL   fakecal  uname    calendar2  uvalue    name: calendar2   frame      Domain      yoff   yoff   60   vargrid   strupcase fileparameters currentfile listgrid selectvar    IF vargrid EQ  W  then zgrid    W  ELSE zgrid    T    if keyword_set uvalue  then boxzoom    extractatt uvalue   domaines  numdessinin    dummyid   cw_domain base  uname    domain  uvalue    name: domain   unzoom   frame                           boxzoom   boxzoom  yoffset   yoff  xoffset   15      Plots specifications     yoff   yoff   230   speid   cw_specifie base  uname    specifie  uvalue    name: specifie   frame   column                            forxxx  yoffset   yoff    if keyword_set uvalue  then BEGIN     exextra    extractatt uvalue   exextra numdessinin      IF n_elements exextra  NE 0 THEN widget_control  speid  set_value   exextra   ENDIF     drawing part     if keyword_set separate  then        basegraph   widget_base title    xxx window   group_leader   base  uvalue   base      ELSE basegraph   base      graphid   widget_draw basegraph  uname    graph   button_events  retain   2                             uvalue    name: graph  press:0  click:0  x: 0  0  y: 0  0                              xoffset   350 1 keyword_set separate                              xsize   windsize 0  ysize   windsize 1    tooltip    toto      realize the widget     widget_control  base   realize   if keyword_set separate  then begin     widget_control  basegraph   realize     xmanager   xxx  basegraph   no_block   endif      if keyword_set uvalue  then BEGIN     on recopie le pointeur uvalue dans top_uvalue    Attention  il faut completement redefinir top_uvalue a partir des   variables pointees par uvalue  Sinon si on fait simplement   top_uvalue   uvalue  qd on detruit par uvalue et les variables   surlesquelles il pointe on detruit aussi les variables sur   lesquelles pointent top_uvalue      case 1 of       keyword_set redraw :BEGIN         top_uvalue   uvalue         widget_control  base  set_uvalue   top_uvalue   we find homedir         homedir   isadirectory io   homedir  title    Bad definition of homedir    on recupere la liste des instructions         globalcommand   extractatt top_uvalue   globalcommand    on complete par le premiere et les dernieres lignes du programme         createpro  globalcommand  filename   myuniquetmpdir    xxx2ps pro                         KWDLIST     NOERASE   noerase  POSTSCRIPT   postscript                         PORTRAIT   portrait  LANDSCAPE   landscape                          noerase       END       keyword_set restore :begin         top_uvalue   uvalue         widget_control  base  set_uvalue   top_uvalue         widget_control  graphid  get_value   win         wshow  win         wset  win         tv  image   true   etat des widgets         updatewidget  base   menage       END       ELSE:BEGIN         top_uvalue   ptrarr 2  29   allocate_heap          FOR i    0  28 do  top_uvalue 0  i     uvalue 0  i          FOR i    0  14 do  top_uvalue 1  i     uvalue 1  i          FOR i   18  27 do  top_uvalue 1  i     uvalue 1  i          numfile   n_elements extractatt uvalue   filelist            top_uvalue 1  15    ptrarr numfile   allocate_heap           top_uvalue 1  16    ptrarr numfile   allocate_heap           top_uvalue 1  17    ptrarr numfile   allocate_heap          for i   0  numfile 1 do begin            top_uvalue 1  15 i     uvalue 1  15 i              top_uvalue 1  16 i     uvalue 1  16 i              top_uvalue 1  17 i     uvalue 1  17 i           endfor          top_uvalue 1  28    ptrarr nbredessin   allocate_heap          for i   0  nbredessin 1 do  top_uvalue 1  28 i     uvalue 1  28 i           widget_control  base  set_uvalue   top_uvalue   copie l ecran du widget de uvalue dans celui de top_uvalue         if keyword_set CallerWidId   then begin           widget_control  extractatt uvalue   graphid  get_value   win           wshow  win           wset  win           image   tvrd true            widget_control  graphid  get_value   win           wshow  win           wset  win           tv  image   true         ENDIF       END     endcase      top_uvalue 1  findline top_uvalue   graphid    graphid     ENDIF ELSE BEGIN   sinon on va definit tous les elements que l on acroche au widget   grace a la top_uvalue qui est un tableau de pointeurs a 2 colonnes:   les noms et des variables   on initialie tous ces elements    variables concernant le widget ds sa generalite     if NOT keyword_set ex   then ex    nothing:0    variables se rapportant aux differents fichiers que l on peut lire   variables specifiques a chaque dessin                creation du pointeur que l on va attache au widget      top_uvalue   ptrarr 2  29   allocate_heap    variables se rapportant au widget en general      top_uvalue 0  0     options     top_uvalue 1  0    options      top_uvalue 0  1     smallin     top_uvalue 1  1    smallin      top_uvalue 0  2     smallout     top_uvalue 1  2    smallout      top_uvalue 0  3     graphid     top_uvalue 1  3    graphid      top_uvalue 0  4     alreadyvector     top_uvalue 1  4     1      top_uvalue 0  5     alreadyover     top_uvalue 1  5     1      top_uvalue 0  6     alreadyread     top_uvalue 1  6     1      top_uvalue 0  7     currentreadcmd     top_uvalue 1  7           top_uvalue 0  8     globalcommand     top_uvalue 1  8           top_uvalue 0  9     globaloldcommand     top_uvalue 1  9           top_uvalue 0  10     no more used     top_uvalue 1  10    9999      top_uvalue 0  11     noticebase     top_uvalue 1  11    0l      top_uvalue 0  12     extra     top_uvalue 1  12    ex   variables se rapportant aux differents fichiers que l on peut lire      top_uvalue 0  13     currentfile     top_uvalue 1  13    currentfile      top_uvalue 0  14     filelist     top_uvalue 1  14    filelist      top_uvalue 0  15     fileparameters     top_uvalue 1  15    fileparameters      top_uvalue 0  16     readparameters     top_uvalue 1  16    readparameters      top_uvalue 0  17     meshparameters     top_uvalue 1  17    meshparameters   variables se rapportant aux differents dessins que l on peut faire      top_uvalue 0  18     penvs     top_uvalue 1  18    replicate p  nbredessin       top_uvalue 0  19     xenvs     top_uvalue 1  19    replicate x  nbredessin       top_uvalue 0  20     yenvs     top_uvalue 1  20    replicate y  nbredessin       top_uvalue 0  21     nameprocedures     top_uvalue 1  21    strarr nbredessin       top_uvalue 0  22     types     top_uvalue 1  22    strarr nbredessin       top_uvalue 0  23     varinfo     top_uvalue 1  23    strarr 2  nbredessin           top_uvalue 0  24     domaines     top_uvalue 1  24    fltarr 6  nbredessin       top_uvalue 0  25     dates     top_uvalue 1  25    lonarr 2  nbredessin       top_uvalue 0  26     txtcmd     top_uvalue 1  26    strarr nbredessin       top_uvalue 0  27     optionsflag     top_uvalue 1  27    flag      top_uvalue 0  28     exextra     top_uvalue 1  28    ptrarr nbredessin   allocate_heap        widget_control  base  set_uvalue   top_uvalue     createhistory  base  smallin     ENDELSE      xmanager   xxx  base   no_block        return end"); 
    385 a[383] = new Array("./Utilities/createfunc.html", "createfunc.pro", "", "           file_comments write an idl function  compile it and execute it    usefull to avoid the use of execute      param command  in required  a scalar string defining the result to be byven back by the function   see examples       keyword FILENAMEIN  in  name of the funccedure to be created          for_createfunc pro  by default    keyword KWDLIST  in  a vector string  to specify a list of keywords that        must be included in the function definition  Warning: the string        must start with a   for example: KWDLIST     TOTO   toto       keyword _EXTRA used to pass your keywords to the created function      SIDE EFFECTS: ends the function name with  pro  if needed      restrictions arguments can be given only through keywords      examples         IDL  print  createfunc 3 2  filename test         IDL  print  createfunc 3 two  filename    test                                           kwdlist  two   two  two   2       history Sebastien Masson  smasson lodyc jussieu fr                         May 2005         FUNCTION createfunc  command  FILENAMEIN   filenamein                    KWDLIST   kwdlist  _extra   ex     compile_opt idl2  hidden  strictarrsubs     IF n_elements command  NE 1 THEN stop   define filename if needed   if NOT keyword_set filenamein  then filename    for_createfunc pro      ELSE filename   filenamein    get the name of the function  not the name of the file containing the function     shortfilename    file_basename filename   pro    check if the directory exists    dirname   isadirectory file_dirname filename                                title    Redefine  shortfilename pro directory     IF size dirname   type  NE 7 THEN return   1      filename   dirname   shortfilename    pro    create the file    if NOT keyword_set kwdlist  then kwdlist        kwdlist   kwdlist     _extra   ex     IF strmid kwdlist  0  1  NE   THEN kwdlist          kwdlist    putfile  filename   function     shortfilename   kwdlist                             compile_opt idl2  hidden  strictarrsubs                              res       command                             return  res                              end    go in dirname directory    cd  dirname  current   old_dir   compile it    resolve_routine  shortfilename   is_function    cd  old_dir   execute it    res   call_function shortfilename  _extra   ex       return  res end"); 
    386 a[384] = new Array("./Utilities/createpro.html", "createpro.pro", "", "           file_comments write an idl procedure  compile it and execute it       param command  in required  a string array defining the procedure to be created  each element will be a line of the created procedure        keyword FILENAMEIN name of the procedure to be created          for_createpro pro  by default      keyword KWDLIST a vector string  to specify a list of keywords that        must be included in the procedure definition  Warning: the string        must start with a   for example: KWDLIST     TOTO   toto       keyword _EXTRA used to pass your keywords to the created procedure      SIDE EFFECTS: ends the procedure name with  pro  if needed      restrictions is not working with functions  use createfunc instead                 arguments can be given only through keywords      examples         IDL  createpro   print OK  filename test         IDL  createpro   if keyword_set ok  then print OK  else print   No           IDL      filename    test  kwdlist   ok   ok          IDL  createpro   if keyword_set ok  then print OK  else print   No           IDL      filename    test  kwdlist     ok   ok   ok         history Sebastien Masson  smasson lodyc jussieu fr    cleaning   new keywords: October 2005   Feb  2006: supress keyword  kwdused  and use call_procedure instead of execute         PRO createpro  command  FILENAMEIN   filenamein                    KWDLIST   kwdlist  KWDUSED   kwdused  _extra   ex     compile_opt idl2  hidden  strictarrsubs     IF keyword_set kwdused  THEN BEGIN     dummy   report keyword KWDUSED has been suppressed                           please pass directly your keywords through _extra                           see exaemples in createpro header      return   ENDIF   define filename if needed   if NOT keyword_set filenamein  then filename    for_createpro pro      ELSE filename   filenamein    get the name of the procedure  not the name of the file containing the procedure     shortfilename    file_basename filename   pro    check if the directory exists    dirname   isadirectory file_dirname filename                                title    Redefine  shortfilename pro directory     IF size dirname   type  NE 7 THEN return      filename   dirname   shortfilename    pro    create the file    if NOT keyword_set kwdlist  then kwdlist        kwdlist   kwdlist     _extra   ex     kwdlist   strtrim kwdlist  2     IF strmid kwdlist  0  1  NE   THEN kwdlist          kwdlist    for i   0  n_elements command 1 do print  command i     putfile  filename   pro     shortfilename   kwdlist                             compile_opt idl2  hidden  strictarrsubs  command   return   end    go in dirname directory    cd  dirname  current   old_dir   compile it    resolve_routine  shortfilename    cd  old_dir   execute it    call_procedure  shortfilename  _extra   ex      return end"); 
    387 a[385] = new Array("./Utilities/def_myuniquetmpdir.html", "def_myuniquetmpdir.pro", "", "     file_comments if needed  define and create myuniquetmpdir    common variable from cm_general  and add it to  path      categories utilities      examples    IDL  def_myuniquetmpdir      uses cm_general      history Sebastien Masson  smasson lodyc jussieu fr                         June 2005     PRO def_myuniquetmpdir     compile_opt idl2  strictarrsubs    cm_general    IF n_elements myuniquetmpdir  EQ 0 THEN BEGIN   define a new and unique directory in getenv IDL_TMPDIR  by using systime 1    look for the login if we use  unix  system     IF  d name EQ  X  THEN spawn   whoami  login   noshell ELSE login    idl      myuniquetmpdir   file_search getenv IDL_TMPDIR   mark_directory      myuniquetmpdir   myuniquetmpdir 0    login 0                            strtrim long systime 1  1         create it     file_mkdir  myuniquetmpdir   add it to  path      path    path   :    expand_path myuniquetmpdir    ENDIF      return end"); 
    388 a[386] = new Array("./Utilities/demomode_compatibility.html", "demomode_compatibility.pro", "", "     categories utilities    uses cm_general   PRO demomode_compatibility     compile_opt idl2  strictarrsubs       cm_general     1  remove all cm_demomode_used pro found in  path   to_rm   find cm_demomode_used    IF to_rm 0  NE  NOT FOUND  THEN file_delete  to_rm     2  copy oldcm_full _empty  to myuniquetmpdir oldcm_used pro    select which file should be copied to oldcm_used pro   IF lmgr demo  EQ 1 THEN BEGIN       democm   find cm_demomode       file_copy  democm  myuniquetmpdir    cm_demomode_used pro   overwrite     ENDIF ELSE BEGIN    create an empty file    close the journal if already open     IF  journal NE 0 THEN journal   open a new one     journal  myuniquetmpdir    cm_demomode_used pro    close it   it will be empty      journal      ENDELSE     return END"); 
    389 a[387] = new Array("./Utilities/find.html", "find.pro", "", "           file_comments based on file_search  but it is possible to speficy            a set of possibles names and a different set of            possibles directories names             By defaut look for files included in  path      categories find a file      param filein  in required  A scalar or array variable of string type  containing       file names to match  Input names specifications may contain       wildcard characters  enabling them to match multiple files        see file_search for more informations  By defaut and if       necessary  find is looking for filename and also for filename       completed with  pro       keyword FIRSTFOUND activate this keyword to stop looking for the file as          soon as we found one       keyword IODIRECTORY A scalar or array variable of string type  containing          directories names where we are looking for the file  by defaut          we use  path  Different directories can be separated by          path_sep search_path   :  on unix type machine  as it is done          to define  path           Note that if filename s dirname is different from   this          keyword is not taken into account       keyword LOOKALLDIR activate to look for the file with a recursive search          in iodir  homedir   path   the DATA:TestsData directory if it exists       keyword NOPRO activate to avoid the automatic search of filename          completed with  pro       keyword ONLYPRO force to look only at file ending with  pro      keyword ONLYNC force to look only at file ending with  nc      keyword RECURSIVE performs recursive searching of directory hierarchies           In a recursive search  find looks recursively for any and all           subdirectories in the file hierarchy rooted at the IODIRECTORY          argument        keyword REPERTOIRE obsolete  keep for compatibility  use directory keyword      keyword UNIQUE activate to make sure that each element of the output          vector is unique       file_comments all file_search keywords can be used       returns A scalar or array variable of string type  containing the         name  with the full path of the matching files  If no files         exist with names matching the input arguments  find returns         the scalar string :  NOT FOUND       examples        IDL  print  find loadct         usr local rsi idl_6 0 lib utilities xloadct pro      usr local rsi idl_6 0 lib loadct pro     IDL  print  find loadct  iodir dir recursive       usr local rsi idl_6 0 lib loadct pro      usr local rsi idl_6 0 lib utilities xloadct pro     IDL  print  find loadct pro         usr local rsi idl_6 0 lib utilities xloadct pro      usr local rsi idl_6 0 lib loadct pro     IDL  print  find loadct nopro        NOT FOUND     IDL  print  find loadct  iodir    usr local rsi idl_6 0 lib         usr local rsi idl_6 0 lib loadct pro     IDL  print  find loadct  iodir    usr local rsi idl_6 0 lib   test_write        NOT FOUND     IDL  print  find loadct  iodir    usr local rsi idl_6 0 lib   recursive         usr local rsi idl_6 0 lib loadct pro      usr local rsi idl_6 0 lib utilities xloadct pro     IDL  print  find mesh  iodirectory    iodir   path       Users sebastie DATA ORCA2 meshmaskORCA2closea nc      Users sebastie IDL meshmaskclosesea pro      Users sebastie IDL meshmaskclosesea pro       Users sebastie SAXO_RD Obsolete meshlec pro      usr local rsi idl_6 0 lib mesh_obj pro      history Sebastien Masson  smasson lodyc jussieu fr                          28 4 1999                         6 7 1999: compatibilite mac et windows   June 2005: Sebastien Masson: cleaning  use for file_  functions         FUNCTION find  filein  IODIRECTORY   iodirectory  RECURSIVE   recursive                    REPERTOIRE   repertoire  NOPRO   nopro  ONLYPRO   onlypro                    ONLYNC   onlync  UNIQUE   unique  FIRSTFOUND   firstfound                    LOOKALLDIR   LOOKALLDIR  _extra   ex   define where we look for the file     compile_opt idl2  strictarrsubs     CASE 1 OF     keyword_set lookalldir :BEGIN   cm_general       dirnames    iodir  homedir   path        tstdtadir  file_dirname find find   onlypro   mark_directory        tstdtadir    file_search tstdtadir DATA TestsData 0        IF tstdtadir NE   THEN dirnames    tstdtadir  dirnames      END     keyword_set iodirectory : dirnames   iodirectory     keyword_set repertoire : dirnames   repertoire     ELSE: dirnames    path   ENDCASE   tmp   dirnames   dirnames    dummy    FOR i   0  n_elements tmp 1 DO       dirnames    dirnames  strsplit tmp i  path_sep search_path   extract    dirnames   dirnames 1:      fileout    dummy    FOR i   0  n_elements filein 1 DO BEGIN     dir   file_dirname filein i      base   file_basename filein i    try to complete the file name with  pro or  nc if needed      CASE 1 OF       keyword_set onlypro :BEGIN         promiss   strpos base   pro   reverse_search          promiss   promiss    strlen base    4          bad   where promiss NE 0 OR strlen base  LE 4  cnt          IF cnt NE 0 THEN base bad    base bad     pro        end       keyword_set onlync :BEGIN         ncmiss   strpos base   nc   reverse_search          ncmiss   ncmiss    strlen base    3          bad   where ncmiss NE 0 OR strlen base  LE 3  cnt          IF cnt NE 0 THEN base bad    base bad     nc        END       ELSE:if strmid base  0  1   reverse_offset  NE             AND NOT keyword_set nopro  THEN base   base    pro      ENDCASE   use dirnames only if dir eq       IF dir EQ    THEN BEGIN        if keyword_set recursive  THEN           found   file_search dirnames  base  _extra   ex            ELSE found   file_search dirnames       base  _extra   ex      ENDIF ELSE found   file_search dir       base  _extra   ex      IF found 0  NE   THEN BEGIN        IF keyword_set firstfound  THEN BEGIN          IF keyword_set unique  THEN return  found uniq found  sort found            ELSE return  found       ENDIF       fileout    fileout  found      ENDIF   ENDFOR   IF n_elements fileout  EQ 1 THEN fileout    NOT FOUND      ELSE fileout   fileout 1:      IF n_elements fileout  GT 1 THEN BEGIN      IF keyword_set unique  THEN fileout   fileout uniq fileout  sort fileout    ENDIF ELSE fileout   fileout 0      RETURN  fileout END"); 
    390 a[388] = new Array("./Utilities/isadirectory.html", "isadirectory.pro", "", "           file_comments check if a directory exists and make sure that it ends            with the directory separator mark       categories io      param directoryin  in optional  a proposed directory  If neither dirname           input parameter of IODIRECTORY keyword are defined           the ask the user to choose a directory       keyword IODIRECTORY a proposed directory      keyword TITLE the title of the window      file_comments all dialog_pickfile keywords  like filter  can be used       returns the directory name      examples         IDL  print   dir       usr local rsi idl_6 0      IDL  print  isadirectory dir        usr local rsi idl_6 0       IDL  print  isadirectory dir notgood       history Sebastien Masson  smasson lodyc jussieu fr                         June 28  2000   June 2005: Sebastien Masson: cleaning  use for file_  functions         FUNCTION isadirectory  directoryin  TITLE   title  IODIRECTORY   iodirectory  _extra   ex       compile_opt idl2  strictarrsubs     CASE 1 OF      size directoryin   type 0  EQ 7:directory   directoryin     keyword_set iodirectory :directory   iodirectory     ELSE:directory    directory that is not existing    ENDCASE   testfile   file_test directory   directory    if directory doesn t exist  we ask the user to provide a directory name   IF total testfile  NE n_elements directory  THEN BEGIN     IF NOT keyword_set title  THEN title    choose a directory      FOR i   0  n_elements directory 1 DO BEGIN       IF testfile i  EQ 0 THEN BEGIN         directory i    dialog_pickfile directory  title   title                                             must_exist  _extra   ex          if directory i  EQ   THEN RETURN  report check find directory canceled        ENDIF     ENDFOR   ENDIF     directory   file_search directory   mark_directory    IF n_elements directory  EQ 1 THEN RETURN  directory 0      ELSE RETURN  directory   END"); 
    391 a[389] = new Array("./Utilities/isafile.html", "isafile.pro", "", "           file_comments same as find pro except that as long as the file is  NOT FOUND             isafile calls dialog_pickfile  to ask the user to select a file       categories io         param filein  in optional  a proposed name  If neither filein          input parameter of filename keyword are defined           the ask the user to choose a file       keyword FILENAME a proposed filename       keyword IODIRECTORY a directory where we look for the file  this             keyword is taken into account only if the dirmame             of filein or filename is        keyword  NEW to specify that filename is a new file and that          we should check only its path      keyword ONLYPRO force to look only at file ending with  pro      keyword ONLYNC force to look only at file ending with  nc      keyword RECURSIVE performs recursive searching of directory hierarchies           In a recursive search  find looks recursively for any and all           subdirectories in the file hierarchy rooted at the IODIRECTORY          argument        file_comments all find  file_search and dialog_pickfile keywords  like title  can be used      returns the filename with its path      examples       IDL  print  isafile Users sebastie SAXO_RD Commons cm_4mesh pro      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir    Users sebastie SAXO_RD Commons      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir    path      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir    Users sebastie SAXO_RD   recursive      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir   getenv HOME   recursive      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile fake_file pro       history Sebastien Masson  smasson lodyc jussieu fr                         11 2 2000   June 2005: Sebastien Masson: cleaning  use for file_  functions         FUNCTION isafile  filein  FILENAME   filename  IODIRECTORY   iodirectory                       NEW   new  RECURSIVE   RECURSIVE  ONLYPRO   onlypro                       ONLYNC   onlync  _extra   ex       compile_opt idl2  strictarrsubs     CASE 1 OF      size filein   type 0  EQ 7:fileout   filein     keyword_set filename :fileout   filename 0      ELSE:fileout    file that is not existing    ENDCASE   if size fileout   type  NE 7 THEN return   1     CASE 1 OF     keyword_set onlypro : filter    pro      keyword_set onlync : filter    nc      else: filter       ENDCASE     basename   file_basename fileout    dirname   file_dirname fileout    should we redefine dirname    if keyword_set iodirectory  AND dirname EQ   then dirname   iodirectory     if keyword_set new  then return  dirname   path_sep    basename     fileout   find basename  iodirectory   dirname                      recursive   recursive   unique   firstfound  ONLYPRO   onlypro                      ONLYNC   onlync  _extra   ex    WHILE fileout 0  EQ  NOT FOUND  DO BEGIN     fileout   dialog_pickfile path   dirname 0  filter   filter  _extra   ex      if fileout EQ   THEN RETURN  report check find file canceled    check again everything      basename   file_basename fileout      dirname   file_dirname fileout    check if the name of the dirname is ok     dirname   isadirectory dirname  title    choose a directory for the file                                  basename    if we cancel the check     IF size dirname   type  NE 7 THEN return  report check find file canceled      fileout   find basename  iodirectory   dirname                        recursive   recursive   unique   firstfound  ONLYPRO   onlypro                        ONLYNC   onlync  _extra   ex    ENDWHILE     RETURN  fileout END"); 
    392 a[390] = new Array("./Utilities/protype.html", "protype.pro", "", "           file_comments test is a  pro  file corresponds to an IDL procedure             function or batch file       categories utilities      param file  in  A scalar of string type  the name of the  pro  file to be tested      if necessary  the input name is completed with  pro        and its path found in  path      returns A scalar of string type:  proc   func  or  batch       examples           IDL  print  protype protype         func        IDL  print  protype protype pro         func        IDL  print  protype init         batch        IDL  print  protype plt         proc      history Sebastien Masson  smasson lodyc jussieu fr                          Feb 2006         FUNCTION protype  file       compile_opt idl2  strictarrsubs     filepro    find file 0   onlypro   firstfound 0    if filepro EQ  NOT FOUND  then return   1   name   file_basename filepro   pro      allines   getfile filepro    CASE 1 OF   this is a procedure     max stregex allines     pro     name   fold_case   boolean :RETURN   proc    this is a function     max stregex allines     function     name   fold_case   boolean :RETURN   func    this is an IDL batch file     ELSE:RETURN   batch    ENDCASE      RETURN   1 END"); 
     385a[383] = new Array("./Utilities/createfunc.html", "createfunc.pro", "", "           file_comments write an idl function  compile it and execute it    usefull to avoid the use of execute      param command  in required  a scalar string defining the result to be    given back by the function   see examples       keyword FILENAMEIN  in  name of the funccedure to be created          for_createfunc pro  by default      keyword KWDLIST  in  a vector string  to specify a list of keywords that        must be included in the function definition  Warning: the string        must start with a   for example: KWDLIST     TOTO   toto       keyword _EXTRA used to pass your keywords to the created function       restrictions      arguments can be given only through keywords      ends the function name with  pro  if needed       examples        IDL  print  createfunc 3 2  filename test         IDL  print  createfunc 3 two  filename    test                                           kwdlist  two   two  two   2       history Sebastien Masson  smasson lodyc jussieu fr                         May 2005      version  Id            FUNCTION createfunc  command  FILENAMEIN   filenamein                    KWDLIST   kwdlist  _EXTRA   ex     compile_opt idl2  hidden  strictarrsubs     IF n_elements command  NE 1 THEN stop   define filename if needed   if NOT keyword_set filenamein  then filename    for_createfunc pro      ELSE filename   filenamein   get the name of the function  not the name of the file containing the function     shortfilename    file_basename filename   pro    check if the directory exists    dirname   isadirectory file_dirname filename                                title    Redefine  shortfilename pro directory     IF size dirname   type  NE 7 THEN return   1      filename   dirname   shortfilename    pro    create the file    if NOT keyword_set kwdlist  then kwdlist        kwdlist   kwdlist     _EXTRA   ex     IF strmid kwdlist  0  1  NE   THEN kwdlist          kwdlist    putfile  filename   function     shortfilename   kwdlist                             compile_opt idl2  hidden  strictarrsubs                              res       command                             return  res                              end    go in dirname directory    cd  dirname  current   old_dir   compile it    resolve_routine  shortfilename   is_function    cd  old_dir   execute it    res   call_function shortfilename  _EXTRA   ex       return  res end"); 
     386a[384] = new Array("./Utilities/createpro.html", "createpro.pro", "", "           file_comments write an idl procedure  compile it and execute it       param command  in required  a string array defining the procedure to be created  each element will be a line of the created procedure       keyword FILENAMEIN  in  name of the procedure to be created          for_createpro pro  by default      keyword KWDLIST  in  a vector string  to specify a list of keywords that        must be included in the procedure definition  Warning: the string        must start with a   for example: KWDLIST     TOTO   toto       keyword KWDUSED obsolote  please pass directly your keywords through _extra      keyword _EXTRA used to pass your keywords to the created procedure       restrictions     is not working with functions  use createfunc instead      arguments can be given only through keywords      ends the procedure name with  pro  if needed       examples        IDL  createpro   print OK  filename test         IDL  createpro   if keyword_set ok  then print OK  else print   No           IDL      filename    test  kwdlist   ok   ok         IDL  createpro   if keyword_set ok  then print OK  else print   No           IDL      filename    test  kwdlist     ok   ok   ok        history Sebastien Masson  smasson lodyc jussieu fr    cleaning   new keywords: October 2005   Feb  2006: supress keyword  kwdused  and use call_procedure instead of execute      version  Id          PRO createpro  command  FILENAMEIN   filenamein                    KWDLIST   kwdlist  KWDUSED   kwdused  _extra   ex     compile_opt idl2  hidden  strictarrsubs     IF keyword_set kwdused  THEN BEGIN     dummy   report keyword KWDUSED has been suppressed                           please pass directly your keywords through _extra                           see exaemples in createpro header      return   ENDIF   define filename if needed   if NOT keyword_set filenamein  then filename    for_createpro pro      ELSE filename   filenamein   get the name of the procedure  not the name of the file containing the procedure     shortfilename    file_basename filename   pro    check if the directory exists    dirname   isadirectory file_dirname filename                                title    Redefine  shortfilename pro directory     IF size dirname   type  NE 7 THEN return      filename   dirname   shortfilename    pro    create the file    if NOT keyword_set kwdlist  then kwdlist        kwdlist   kwdlist     _extra   ex     kwdlist   strtrim kwdlist  2     IF strmid kwdlist  0  1  NE   THEN kwdlist          kwdlist    for i   0  n_elements command 1 do print  command i     putfile  filename   pro     shortfilename   kwdlist                             compile_opt idl2  hidden  strictarrsubs  command   return   end    go in dirname directory    cd  dirname  current   old_dir   compile it    resolve_routine  shortfilename    cd  old_dir   execute it    call_procedure  shortfilename  _extra   ex      return end"); 
     387a[385] = new Array("./Utilities/def_myuniquetmpdir.html", "def_myuniquetmpdir.pro", "", "     file_comments if needed  define and create myuniquetmpdir    common variable from cm_general  and add it to  path      categories utilities      examples    IDL  def_myuniquetmpdir      uses cm_general      history Sebastien Masson  smasson lodyc jussieu fr                         June 2005      version  Id      PRO def_myuniquetmpdir     compile_opt idl2  strictarrsubs    cm_general    IF n_elements myuniquetmpdir  EQ 0 THEN BEGIN   define a new and unique directory in getenv IDL_TMPDIR  by using systime 1    look for the login if we use  unix  system     IF  d name EQ  X  THEN spawn   whoami  login   noshell ELSE login    idl      myuniquetmpdir   file_search getenv IDL_TMPDIR   mark_directory      myuniquetmpdir   myuniquetmpdir 0    login 0                            strtrim long systime 1  1         create it     file_mkdir  myuniquetmpdir   add it to  path      path    path   :    expand_path myuniquetmpdir    ENDIF      return end"); 
     388a[386] = new Array("./Utilities/demomode_compatibility.html", "demomode_compatibility.pro", "", "     categories utilities    uses cm_general    version  Id    PRO demomode_compatibility     compile_opt idl2  strictarrsubs       cm_general     1  remove all cm_demomode_used pro found in  path   to_rm   find cm_demomode_used    IF to_rm 0  NE  NOT FOUND  THEN file_delete  to_rm     2  copy oldcm_full _empty  to myuniquetmpdir oldcm_used pro    select which file should be copied to oldcm_used pro   IF lmgr demo  EQ 1 THEN BEGIN       democm   find cm_demomode       file_copy  democm  myuniquetmpdir    cm_demomode_used pro   overwrite     ENDIF ELSE BEGIN    create an empty file    close the journal if already open     IF  journal NE 0 THEN journal   open a new one     journal  myuniquetmpdir    cm_demomode_used pro    close it   it will be empty      journal      ENDELSE     return END"); 
     389a[387] = new Array("./Utilities/find.html", "find.pro", "", "           file_comments based on file_search  but it is possible to speficy            a set of possibles names and a different set of            possibles directories names             By defaut look for files included in  path      categories find a file      param filein  in required  A scalar or array variable of string type  containing       file names to match  Input names specifications may contain       wildcard characters  enabling them to match multiple files        see file_search for more informations  By defaut and if       necessary  find is looking for filename and also for filename       completed with  pro       keyword FIRSTFOUND activate this keyword to stop looking for the file as          soon as we found one       keyword IODIRECTORY A scalar or array variable of string type  containing          directories names where we are looking for the file  by defaut          we use  path  Different directories can be separated by          path_sep search_path   :  on unix type machine  as it is done          to define  path           Note that if filename s dirname is different from   this          keyword is not taken into account       keyword LOOKALLDIR activate to look for the file with a recursive search          in iodir  homedir   path   the DATA:TestsData directory if it exists       keyword NOPRO activate to avoid the automatic search of filename          completed with  pro       keyword ONLYPRO force to look only at file ending with  pro      keyword ONLYNC force to look only at file ending with  nc      keyword RECURSIVE performs recursive searching of directory hierarchies           In a recursive search  find looks recursively for any and all           subdirectories in the file hierarchy rooted at the IODIRECTORY          argument        keyword REPERTOIRE obsolete  keep for compatibility  use directory keyword      keyword UNIQUE activate to make sure that each element of the output          vector is unique       keyword _EXTRA used to pass your keywords      file_comments all file_search keywords can be used       returns A scalar or array variable of string type  containing the         name  with the full path of the matching files  If no files         exist with names matching the input arguments  find returns         the scalar string :  NOT FOUND       examples        IDL  print  find loadct         usr local rsi idl_6 0 lib utilities xloadct pro      usr local rsi idl_6 0 lib loadct pro     IDL  print  find loadct  iodir dir recursive       usr local rsi idl_6 0 lib loadct pro      usr local rsi idl_6 0 lib utilities xloadct pro     IDL  print  find loadct pro         usr local rsi idl_6 0 lib utilities xloadct pro      usr local rsi idl_6 0 lib loadct pro     IDL  print  find loadct nopro        NOT FOUND     IDL  print  find loadct  iodir    usr local rsi idl_6 0 lib         usr local rsi idl_6 0 lib loadct pro     IDL  print  find loadct  iodir    usr local rsi idl_6 0 lib   test_write        NOT FOUND     IDL  print  find loadct  iodir    usr local rsi idl_6 0 lib   recursive         usr local rsi idl_6 0 lib loadct pro      usr local rsi idl_6 0 lib utilities xloadct pro     IDL  print  find mesh  iodirectory    iodir   path       Users sebastie DATA ORCA2 meshmaskORCA2closea nc      Users sebastie IDL meshmaskclosesea pro      Users sebastie IDL meshmaskclosesea pro       Users sebastie SAXO_RD Obsolete meshlec pro      usr local rsi idl_6 0 lib mesh_obj pro      history Sebastien Masson  smasson lodyc jussieu fr                          28 4 1999                         6 7 1999: compatibilite mac et windows   June 2005: Sebastien Masson: cleaning  use for file_  functions      version  Id          FUNCTION find  filein  IODIRECTORY   iodirectory  RECURSIVE   recursive                    REPERTOIRE   repertoire  NOPRO   nopro  ONLYPRO   onlypro                    ONLYNC   onlync  UNIQUE   unique  FIRSTFOUND   firstfound                    LOOKALLDIR   LOOKALLDIR  _extra   ex   define where we look for the file     compile_opt idl2  strictarrsubs     CASE 1 OF     keyword_set lookalldir :BEGIN   cm_general       dirnames    iodir  homedir   path        tstdtadir  file_dirname find find   onlypro   mark_directory        tstdtadir    file_search tstdtadir DATA TestsData 0        IF tstdtadir NE   THEN dirnames    tstdtadir  dirnames      END     keyword_set iodirectory : dirnames   iodirectory     keyword_set repertoire : dirnames   repertoire     ELSE: dirnames    path   ENDCASE   tmp   dirnames   dirnames    dummy    FOR i   0  n_elements tmp 1 DO       dirnames    dirnames  strsplit tmp i  path_sep search_path   extract    dirnames   dirnames 1:      fileout    dummy    FOR i   0  n_elements filein 1 DO BEGIN     dir   file_dirname filein i      base   file_basename filein i    try to complete the file name with  pro or  nc if needed      CASE 1 OF       keyword_set onlypro :BEGIN         promiss   strpos base   pro   reverse_search          promiss   promiss    strlen base    4          bad   where promiss NE 0 OR strlen base  LE 4  cnt          IF cnt NE 0 THEN base bad    base bad     pro        end       keyword_set onlync :BEGIN         ncmiss   strpos base   nc   reverse_search          ncmiss   ncmiss    strlen base    3          bad   where ncmiss NE 0 OR strlen base  LE 3  cnt          IF cnt NE 0 THEN base bad    base bad     nc        END       ELSE:if strmid base  0  1   reverse_offset  NE             AND NOT keyword_set nopro  THEN base   base    pro      ENDCASE   use dirnames only if dir eq       IF dir EQ    THEN BEGIN        if keyword_set recursive  THEN           found   file_search dirnames  base  _extra   ex            ELSE found   file_search dirnames       base  _extra   ex      ENDIF ELSE found   file_search dir       base  _extra   ex      IF found 0  NE   THEN BEGIN        IF keyword_set firstfound  THEN BEGIN          IF keyword_set unique  THEN return  found uniq found  sort found            ELSE return  found       ENDIF       fileout    fileout  found      ENDIF   ENDFOR   IF n_elements fileout  EQ 1 THEN fileout    NOT FOUND      ELSE fileout   fileout 1:      IF n_elements fileout  GT 1 THEN BEGIN      IF keyword_set unique  THEN fileout   fileout uniq fileout  sort fileout    ENDIF ELSE fileout   fileout 0      RETURN  fileout END"); 
     390a[388] = new Array("./Utilities/isadirectory.html", "isadirectory.pro", "", "           file_comments check if a directory exists and make sure that it ends            with the directory separator mark       categories io      param directoryin  in optional  a proposed directory  If neither dirname           input parameter of IODIRECTORY keyword are defined           the ask the user to choose a directory       keyword IODIRECTORY a proposed directory      keyword TITLE the title of the window      keyword _EXTRA used to pass your keywords      file_comments all dialog_pickfile keywords  like filter  can be used       returns the directory name      examples         IDL  print   dir       usr local rsi idl_6 0      IDL  print  isadirectory dir        usr local rsi idl_6 0       IDL  print  isadirectory dir notgood       history Sebastien Masson  smasson lodyc jussieu fr                         June 28  2000   June 2005: Sebastien Masson: cleaning  use for file_  functions      version  Id          FUNCTION isadirectory  directoryin  TITLE   title  IODIRECTORY   iodirectory  _extra   ex       compile_opt idl2  strictarrsubs     CASE 1 OF      size directoryin   type 0  EQ 7:directory   directoryin     keyword_set iodirectory :directory   iodirectory     ELSE:directory    directory that is not existing    ENDCASE   testfile   file_test directory   directory    if directory doesn t exist  we ask the user to provide a directory name   IF total testfile  NE n_elements directory  THEN BEGIN     IF NOT keyword_set title  THEN title    choose a directory      FOR i   0  n_elements directory 1 DO BEGIN       IF testfile i  EQ 0 THEN BEGIN         directory i    dialog_pickfile directory  title   title                                             must_exist  _extra   ex          if directory i  EQ   THEN RETURN  report check find directory canceled        ENDIF     ENDFOR   ENDIF     directory   file_search directory   mark_directory    IF n_elements directory  EQ 1 THEN RETURN  directory 0      ELSE RETURN  directory   END"); 
     391a[389] = new Array("./Utilities/isafile.html", "isafile.pro", "", "           file_comments same as find pro except that as long as the file is  NOT FOUND             isafile calls dialog_pickfile  to ask the user to select a file       categories io         param filein  in optional  a proposed name  If neither filein          input parameter of filename keyword are defined           the ask the user to choose a file       keyword FILENAME a proposed filename       keyword IODIRECTORY a directory where we look for the file  this             keyword is taken into account only if the dirmame             of filein or filename is        keyword  NEW to specify that filename is a new file and that          we should check only its path      keyword ONLYPRO force to look only at file ending with  pro      keyword ONLYNC force to look only at file ending with  nc      keyword RECURSIVE performs recursive searching of directory hierarchies           In a recursive search  find looks recursively for any and all           subdirectories in the file hierarchy rooted at the IODIRECTORY          argument        keyword _EXTRA used to pass your keywords      file_comments all find  file_search and dialog_pickfile keywords  like title  can be used      returns the filename with its path      examples       IDL  print  isafile Users sebastie SAXO_RD Commons cm_4mesh pro      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir    Users sebastie SAXO_RD Commons      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir    path      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir    Users sebastie SAXO_RD   recursive      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile cm_4mesh pro  iodir   getenv HOME   recursive      Users sebastie SAXO_RD Commons cm_4mesh pro    IDL  print  isafile fake_file pro       history Sebastien Masson  smasson lodyc jussieu fr                         11 2 2000   June 2005: Sebastien Masson: cleaning  use for file_  functions      version  Id          FUNCTION isafile  filein  FILENAME   filename  IODIRECTORY   iodirectory                       NEW   new  RECURSIVE   RECURSIVE  ONLYPRO   onlypro                       ONLYNC   onlync  _extra   ex       compile_opt idl2  strictarrsubs     CASE 1 OF      size filein   type 0  EQ 7:fileout   filein     keyword_set filename :fileout   filename 0      ELSE:fileout    file that is not existing    ENDCASE   if size fileout   type  NE 7 THEN return   1     CASE 1 OF     keyword_set onlypro : filter    pro      keyword_set onlync : filter    nc      else: filter       ENDCASE     basename   file_basename fileout    dirname   file_dirname fileout    should we redefine dirname    if keyword_set iodirectory  AND dirname EQ   then dirname   iodirectory     if keyword_set new  then return  dirname   path_sep    basename     fileout   find basename  iodirectory   dirname                      recursive   recursive   unique   firstfound  ONLYPRO   onlypro                      ONLYNC   onlync  _extra   ex    WHILE fileout 0  EQ  NOT FOUND  DO BEGIN     fileout   dialog_pickfile path   dirname 0  filter   filter  _extra   ex      if fileout EQ   THEN RETURN  report check find file canceled    check again everything      basename   file_basename fileout      dirname   file_dirname fileout    check if the name of the dirname is ok     dirname   isadirectory dirname  title    choose a directory for the file                                  basename    if we cancel the check     IF size dirname   type  NE 7 THEN return  report check find file canceled      fileout   find basename  iodirectory   dirname                        recursive   recursive   unique   firstfound  ONLYPRO   onlypro                        ONLYNC   onlync  _extra   ex    ENDWHILE     RETURN  fileout END"); 
     392a[390] = new Array("./Utilities/protype.html", "protype.pro", "", "           file_comments test is a  pro  file corresponds to an IDL procedure             function or batch file       categories utilities      param file  in  A scalar of string type  the name of the  pro  file to be tested      if necessary  the input name is completed with  pro        and its path found in  path      returns A scalar of string type:  proc   func  or  batch       examples           IDL  print  protype protype         func        IDL  print  protype protype pro         func        IDL  print  protype init         batch        IDL  print  protype plt         proc      history Sebastien Masson  smasson lodyc jussieu fr                          Feb 2006      version  Id          FUNCTION protype  file       compile_opt idl2  strictarrsubs     filepro    find file 0   onlypro   firstfound 0    if filepro EQ  NOT FOUND  then return   1   name   file_basename filepro   pro      allines   getfile filepro    CASE 1 OF   this is a procedure     max stregex allines     pro     name   fold_case   boolean :RETURN   proc    this is a function     max stregex allines     function     name   fold_case   boolean :RETURN   func    this is an IDL batch file     ELSE:RETURN   batch    ENDCASE      RETURN   1 END"); 
    393393a[391] = new Array("./buildinit.html", "buildinit.pro", "", "    NAME:         PURPOSE:         CATEGORY:         CALLING SEQUENCE:         INPUTS:         OPTIONAL INPUTS:         KEYWORD PARAMETERS:         OUTPUTS:         OPTIONAL OUTPUTS:         COMMON BLOCKS:         SIDE EFFECTS:         RESTRICTIONS:         PROCEDURE:         EXAMPLE:         MODIFICATION HISTORY:               slightly mofified version of cw_field  FUNCTION CW_FIELD2  Parent  COLUMN Column  ROW Row        EVENT_FUNC   efun        FLOATING Float  INTEGER Int  LONG Long  STRING String        FONT LabelFont  FRAME Frame  TITLE Title  UVALUE UValue  VALUE TextValueIn        RETURN_EVENTS ReturnEvents  ALL_EVENTS AllUpdates        FIELDFONT FieldFont  NOEDIT NoEdit  TEXT_FRAME Text_Frame        XSIZE XSize  YSIZE YSize  UNAME uname     FLOOR vmin  CEILING vmax      compile_opt idl2  strictarrsubs     resolve_routine   cw_field   compile_full_file   is_function         Examine our keyword list and set default values         for keywords that are not explicitly set       Column        KEYWORD_SET Column      Row           1   Column     AllEvents         1   KEYWORD_SET NoEdit         Enum Update   None  All  CRonly       Update        0     IF KEYWORD_SET AllUpdates  THEN Update    1     IF KEYWORD_SET ReturnEvents  THEN Update      2      IF N_ELEMENTS efun  LE 0 THEN efun         IF N_ELEMENTS Title  EQ 0 THEN Title Input Field:      TextValue    N_ELEMENTS TextValueIn  gt 0    TextValueIn :         Convert non string values to strings      if  SIZE TextValue   TNAME  ne  STRING  then           TextValue   STRTRIM TextValue 2      IF N_ELEMENTS YSize  EQ 0 THEN YSize 1     IF N_ELEMENTS uname  EQ 0 THEN uname CW_FIELD_UNAME       Type      0   string is default     IF KEYWORD_SET Float  THEN  Type      1     IF KEYWORD_SET Int  THEN    Type      2     IF KEYWORD_SET Long  THEN   Type      3          Don t allow multiline non string widgets     if  Type ne 0  then           YSize 1     YSize   YSize   1          Build Widget      Base      WIDGET_BASE Parent  ROW Row  COLUMN Column  UVALUE UValue                EVENT_FUNC CW_FIELD_EVENT                PRO_SET_VALUE CW_FIELD_SET                FUNC_GET_VALUE CW_FIELD_GET                FRAME Frame  UNAME uname       FOR i   0  n_elements title 1 DO         Label     WIDGET_LABEL Base  VALUE   Title i  FONT   LabelFont                                 UNAME   uname _LABEL   align_left      Text      WIDGET_TEXT Base  VALUE   TextValue                XSIZE XSize  YSIZE YSize  FONT FieldFont                ALL_EVENTS AllEvents                EDITABLE AllEvents AND TYPE EQ 0                FRAME Text_Frame                 UNAME uname _TEXT                 NO_ECHO AllEvents AND  TYPE NE 0         Save our internal state in the first child widget     State                 efun: efun                TextId:Text               Title:Title               Update:Update             Type:Type                   WIDGET_CONTROL  WIDGET_INFO Base   CHILD  SET_UVALUE State   NO_COPY     RETURN  Base   END         PRO printerdef_event  event   get back the ids of the cw_field widgets     compile_opt idl2  strictarrsubs     widget_control  event id  get_uvalue   cwids   IF size cwids   n_dimensions  EQ 1 THEN cwids   reform cwids  3  1  help  cwids   dims   size cwids   dimensions  help   dims print   dims   results   strarr dims    FOR i   0  dims 1 1 DO BEGIN     widget_control  cwids 0  i  get_value   res   results 0  i    res     widget_control  cwids 1  i  get_value   res   results 1  i    res     widget_control  cwids 2  i  get_value   res   results 2  i    res   ENDFOR   nothing   where results EQ   count    IF count NE 0 THEN BEGIN     nothing   dialog_message Some of the text box are still empty  dialog_parent   event top   information      return   ENDIF   now we give the result to buildinit pro by using the pointer uvalue    widget_control  event top  get_uvalue   ptresult     ptresult   temporary results    we destroy the widget    widget_control  event top   destroy   RETURN END         PRO papsize_event  event   get back the ids of the cw_field widgets     compile_opt idl2  strictarrsubs     widget_control  event id  get_uvalue   uvalue   IF uvalue 0  NE  ok  THEN return   idist   widget_info event top  find_by_uname    list    id   widget_info idist   list_select    widget_control  idist  get_uvalue   selected   selected   selected id    selected   strsplit selected   extract    now we give the result to buildinit pro by using the pointer uvalue    widget_control  event top  get_uvalue   ptresult     ptresult    float selected 3  float selected 4    we destroy the widget    widget_control  event top   destroy   RETURN END         PRO xask_event  event   now we give the answer to buildinit pro by using the pointer uvalue     compile_opt idl2  strictarrsubs      widget_control  event top  get_uvalue   ptranswer     ptranswer   event value   we destroy the widget    widget_control  event top   destroy   RETURN END         FUNCTION xask  _extra   ex     compile_opt idl2  strictarrsubs     base   widget_base     field   cw_field2 base   frame   return_events   column  _extra   ex     ptranswer   ptr_new allocate_heap    we realize the widget and wait for an answer   widget_control  base   realize  set_uvalue   ptranswer   xmanager   xask  base   we get the answer   answer    ptranswer   we freeing the pointer   ptr_free  ptranswer   RETURN  answer END         FUNCTION getdir  title   title  nomark   nomark  nowrite   nowrite     compile_opt idl2  strictarrsubs        REPEAT BEGIN     dir   dialog_pickfile directory   must_exist  title   title    make sure dir is ok  check read write access and directory separator mark     dir   file_search dir   test_directory   test_read                           test_write   1   keyword_set nowrite                            mark_directory   1   keyword_set nomark      dir   dir 0    ENDREP UNTIL dir NE      RETURN  dir END         PRO buildinit       compile_opt idl2  strictarrsubs     IF fix strmid version release  0  1  LT 6 THEN BEGIN      print                                print                        ERROR       print                                print   This version of SAXO needs at least IDL version 6 0      print                                print                        ERROR       print                                return   ENDIF   IF lmgr demo  EQ 1 THEN BEGIN     print   impossible to use buildinit in demo mode      return   ENDIF     init                     This is the initialisation file                  it defines the  path and the defaut values of some of the common variables                                  this is supposed to speed up IDL                                  a   fltarr 1000 1000 100                  a   0                                  path definition                      define  myIDL  directory   myIDL   getdir title    Select the home directory  my IDL   nomark    define  SAXO  directory   saxodir   getdir title    Select SAXO directory   nomark   nowrite    define the  path   init    init   path   expand_path     myIDL                            :    expand_path     saxodir                            :    expand_path     dir      should we keep the compatibility with the old version      yes   dialog_message shall we keep the compatibility                               with the old version    question   default_no    yes   strlowcase yes       init    init                                 compatibility with the old version                                 keep_compatibility      strtrim fix yes EQ  yes  2       define all the commons     init    init                                 define all the commons                                 all_cm      define default directories     init    init                                 define default directories                                 homedir   isadirectory myIDL  title    Select the default HOME directory    iodir   getdir title    Select the default IO directory    init    init                iodir   isadirectory iodir  title    Select the default IO directory    psdir   getdir title    Select the default postscripts directory    init    init                psdir   isadirectory psdir  title    Select the default postscripts directory    imagedir   getdir title    Select the default images directory    init    init                imagedir   isadirectory imagedir  title    Select the default images directory    animdir   getdir title    Select the default animations directory    init    init                animdir   isadirectory animdir  title    Select the default animations directory      number of printer     ptnumb   xask title    Number of accessible printers  value   0   long      define all the printer parameters      init    init                                 define printer parameters                        IF ptnumb NE 0 THEN BEGIN     base   widget_base column   frame       cwids   lonarr 3  ptnumb      FOR i   0  ptnumb 1 DO BEGIN       subbase   widget_base base   row        cwids 0  i    cw_field subbase   string                                  Title    printer_human_names strtrim i  2             cwids 1  i    cw_field subbase   string                                  Title    printer_machine_names strtrim i  2             cwids 2  i    cw_field subbase   string  value    lpr  P                                   Title    printer_machine_names strtrim i  2           ENDFOR     trash   widget_button base  value    ok  uvalue   cwids      ptresult   ptr_new allocate_heap    we realize the widget and wait for an answer     widget_control  base   realize  set_uvalue   ptresult     xmanager   printerdef  base       init    init                  printer_human_names   strarr strtrim ptnumb  2                   printer_machine_names   strarr strtrim ptnumb  2                   print_command   strarr strtrim ptnumb  2      FOR i   0  ptnumb 1 DO BEGIN       init    init                    printer_human_names strtrim i  2                         ptresult 0  i                     printer_machine_names strtrim i  2                         ptresult 1  i                     print_command strtrim i  2                         ptresult 2  i      ENDFOR   we freeing the pointer     ptr_free  ptresult   ENDIF ELSE BEGIN     init    init                  printer_human_names                      printer_machine_names                      print_command       ENDELSE      Colors     init    init                                 colors                                  device  decomposed   0                 device  retain   2      default color tables     loadct  get_names   names    ntables   40   title                                                                      Choose the default color table                                                                        the following lines come from loadct procedure    nlines    ntables   2    3  of lines to print   nend   nlines    nlines 3    ntables    for i   0  nend 1 do           Print each line     title    title                  string format    i2   a17  3x  i2   a17  3x  i2   a17                            i  names i  i nlines  names i nlines                            i 2 nlines  xask title   title  value   39   long   xask title   title  value   0   long    2   init    init                archive_ps    strtrim archive_ps  2                                                  end of the part that should be modified by the users                                                  if needed  keep compatibility with the old version                                 updateold                       filename   xask title    name of the init file   written in homedir:     myIDL     value    init pro   string    journal  myIDL       filename   FOR i   0  n_elements init 1 DO journal  init i    journal    RETURN END"); 
    394394 
Note: See TracChangeset for help on using the changeset viewer.