Changeset 143


Ignore:
Timestamp:
07/21/06 14:57:51 (18 years ago)
Author:
navarro
Message:

english and nicer header (2b)

Location:
trunk/SRC/Documentation/idldoc_html_output
Files:
1 added
157 edited

Legend:

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

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/curl.html

    r142 r143  
    770770           
    771771          <h4>Version</h4><div class="preformat"> 
    772  $Id$ 
     772 $Id: curl.pro 142 2006-07-21 12:47:49Z navarro $ 
    773773</div> 
    774774          <h4>History</h4><div class="preformat"> </div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/depth2floatlevel.html

    r142 r143  
    780780           
    781781          <h4>Version</h4><div class="preformat"> 
    782  $Id$ 
     782 $Id: depth2floatlevel.pro 142 2006-07-21 12:47:49Z navarro $ 
    783783</div> 
    784784          <h4>History</h4><div class="preformat"> </div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/depth2level.html

    r142 r143  
    832832           
    833833          <h4>Version</h4><div class="preformat"> 
    834  $Id$</div> 
     834 $Id: depth2level.pro 142 2006-07-21 12:47:49Z navarro $</div> 
    835835          <h4>History</h4><div class="preformat"></div> 
    836836           
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/depth2mask.html

    r142 r143  
    776776           
    777777          <h4>Version</h4><div class="preformat"> 
    778  $Id$ 
     778 $Id: depth2mask.pro 142 2006-07-21 12:47:49Z navarro $ 
    779779</div> 
    780780          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/determ2.html

    r142 r143  
    810810           
    811811          <h4>Version</h4><div class="preformat"> 
    812  $Id$ 
     812 $Id: determ2.pro 142 2006-07-21 12:47:49Z navarro $ 
    813813</div> 
    814814          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/determ3.html

    r142 r143  
    894894           
    895895          <h4>Version</h4><div class="preformat"> 
    896  $Id$ 
     896 $Id: determ3.pro 142 2006-07-21 12:47:49Z navarro $ 
    897897</div> 
    898898          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/div.html

    r142 r143  
    770770           
    771771          <h4>Version</h4><div class="preformat"> 
    772  $Id$ 
     772 $Id: div.pro 142 2006-07-21 12:47:49Z navarro $ 
    773773</div> 
    774774          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/floatlevel2depth.html

    r142 r143  
    779779           
    780780          <h4>Version</h4><div class="preformat"> 
    781  $Id$ 
     781 $Id: floatlevel2depth.pro 142 2006-07-21 12:47:49Z navarro $ 
    782782</div> 
    783783          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/grossemoyenne.html

    r142 r143  
    911911           
    912912          <h4>Version</h4><div class="preformat"> 
    913  $Id$</div> 
     913 $Id: grossemoyenne.pro 142 2006-07-21 12:47:49Z navarro $</div> 
    914914          <h4>History</h4><div class="preformat"> </div> 
    915915           
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/hdyn.html

    r142 r143  
    877877           
    878878          <h4>Version</h4><div class="preformat"> 
    879  $Id$ 
     879 $Id: hdyn.pro 142 2006-07-21 12:47:49Z navarro $ 
    880880</div> 
    881881          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/level2depth.html

    r142 r143  
    774774           
    775775          <h4>Version</h4><div class="preformat"> 
    776  $Id$ 
     776 $Id: level2depth.pro 142 2006-07-21 12:47:49Z navarro $ 
    777777</div> 
    778778          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/level2index.html

    r142 r143  
    759759           
    760760          <h4>Version</h4><div class="preformat"> 
    761  $Id$ 
     761 $Id: level2index.pro 142 2006-07-21 12:47:49Z navarro $ 
    762762</div> 
    763763          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/level2mask.html

    r142 r143  
    756756           
    757757          <h4>Version</h4><div class="preformat"> 
    758  $Id$ 
     758 $Id: level2mask.pro 142 2006-07-21 12:47:49Z navarro $ 
    759759</div> 
    760760          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/moyenne.html

    r142 r143  
    872872           
    873873          <h4>Version</h4><div class="preformat"> 
    874  $Id$ 
     874 $Id: moyenne.pro 142 2006-07-21 12:47:49Z navarro $ 
    875875</div> 
    876876          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/norme.html

    r142 r143  
    830830           
    831831          <h4>Version</h4><div class="preformat"> 
    832  $Id$ 
     832 $Id: norme.pro 142 2006-07-21 12:47:49Z navarro $ 
    833833</div> 
    834834          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALCULS/projectondepth.html

    r142 r143  
    782782           
    783783          <h4>Version</h4><div class="preformat"> 
    784  $Id$ 
     784 $Id: projectondepth.pro 142 2006-07-21 12:47:49Z navarro $ 
    785785</div> 
    786786          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALENDRIER/caldat.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALENDRIER/julday.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/color24.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/colorbar.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/getcolor.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/lct.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/newpalette.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/xlct.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/xpal.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/decoupeterre.html

    r142 r143  
    925925           
    926926          <h4>Version</h4><div class="preformat"> 
    927  $Id$ 
     927 $Id: decoupeterre.pro 142 2006-07-21 12:47:49Z navarro $ 
    928928</div> 
    929929          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/domdef.html

    r142 r143  
    10211021           
    10221022          <h4>Version</h4><div class="preformat"> 
    1023  $Id$ 
     1023 $Id: domdef.pro 142 2006-07-21 12:47:49Z navarro $ 
    10241024</div> 
    10251025          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/f2v.html

    r142 r143  
    757757           
    758758          <h4>Version</h4><div class="preformat"> 
    759  $Id$ 
     759 $Id: f2v.pro 142 2006-07-21 12:47:49Z navarro $ 
    760760</div> 
    761761          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/fmask.html

    r142 r143  
    738738           
    739739          <h4>Version</h4><div class="preformat"> 
    740  $Id$ 
     740 $Id: fmask.pro 142 2006-07-21 12:47:49Z navarro $ 
    741741</div> 
    742742          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/grille.html

    r142 r143  
    10961096           
    10971097          <h4>Version</h4><div class="preformat"> 
    1098  $Id$  
     1098 $Id: grille.pro 142 2006-07-21 12:47:49Z navarro $  
    10991099</div> 
    11001100          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/t2v.html

    r142 r143  
    756756           
    757757          <h4>Version</h4><div class="preformat"> 
    758  $Id$ 
     758 $Id: t2v.pro 142 2006-07-21 12:47:49Z navarro $ 
    759759</div> 
    760760          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/tracegrille.html

    r142 r143  
    875875           
    876876          <h4>Version</h4><div class="preformat"> 
    877  $Id$ 
     877 $Id: tracegrille.pro 142 2006-07-21 12:47:49Z navarro $ 
    878878                  </div> 
    879879          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/u2t.html

    r142 r143  
    757757           
    758758          <h4>Version</h4><div class="preformat"> 
    759  $Id$ 
     759 $Id: u2t.pro 142 2006-07-21 12:47:49Z navarro $ 
    760760</div> 
    761761          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/umask.html

    r142 r143  
    738738           
    739739          <h4>Version</h4><div class="preformat"> 
    740  $Id$ 
     740 $Id: umask.pro 142 2006-07-21 12:47:49Z navarro $ 
    741741</div> 
    742742           
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/v2t.html

    r142 r143  
    757757           
    758758          <h4>Version</h4><div class="preformat"> 
    759  $Id$ 
     759 $Id: v2t.pro 142 2006-07-21 12:47:49Z navarro $ 
    760760</div> 
    761761          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/GRILLE/vmask.html

    r142 r143  
    738738           
    739739          <h4>Version</h4><div class="preformat"> 
    740  $Id$ 
     740 $Id: vmask.pro 142 2006-07-21 12:47:49Z navarro $ 
    741741</div> 
    742742          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/HOPE/computehopegrid.html

    r142 r143  
    867867           
    868868          <h4>Version</h4><div class="preformat"> 
    869  $Id$ 
     869 $Id: computehopegrid.pro 142 2006-07-21 12:47:49Z navarro $ 
    870870</div> 
    871871          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/HOPE/read_hope.html

    r142 r143  
    10201020           
    10211021          <h4>Version</h4><div class="preformat"> 
    1022  $Id$ 
     1022 $Id: read_hope.pro 142 2006-07-21 12:47:49Z navarro $ 
    10231023</div> 
    10241024          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/animgif.html

    r142 r143  
    754754           
    755755          <h4>Version</h4><div class="preformat">  
    756  $Id: animgif.pro 134 2006-07-07 10:19:08Z navarro $ 
     756 $Id: animgif.pro 142 2006-07-21 12:47:49Z navarro $ 
    757757</div> 
    758758          <h4>History</h4><div class="preformat"> </div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/image_viewer.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/imdisp.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/saveimage.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/showimage.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/INIT/initncdf.html

    r142 r143  
    945945           
    946946          <h4>Version</h4><div class="preformat"> 
    947  $Id$ 
     947 $Id: initncdf.pro 142 2006-07-21 12:47:49Z navarro $ 
    948948</div> 
    949949          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/binary.html

    r142 r143  
    769769           
    770770          <h4>Version</h4><div class="preformat"> 
    771  $Id$ 
     771 $Id: binary.pro 142 2006-07-21 12:47:49Z navarro $ 
    772772</div> 
    773773          <h4>History</h4><div class="preformat">: 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/inverse_binary.html

    r142 r143  
    789789           
    790790          <h4>Version</h4><div class="preformat"> 
    791  $Id$ 
     791 $Id: inverse_binary.pro 142 2006-07-21 12:47:49Z navarro $ 
    792792</div> 
    793793          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/litchamp.html

    r142 r143  
    915915           
    916916          <h4>Version</h4><div class="preformat"> 
    917  $Id$ 
     917 $Id: litchamp.pro 142 2006-07-21 12:47:49Z navarro $ 
    918918</div> 
    919919          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/ncdf_lec.html

    r142 r143  
    838838           
    839839          <h4>Version</h4><div class="preformat"> 
    840  $Id$ 
     840 $Id: ncdf_lec.pro 142 2006-07-21 12:47:49Z navarro $ 
    841841</div> 
    842842          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/read_ftp.html

    r142 r143  
    11371137           
    11381138          <h4>Version</h4><div class="preformat"> 
    1139  $Id$ 
     1139 $Id: read_ftp.pro 142 2006-07-21 12:47:49Z navarro $ 
    11401140</div> 
    11411141          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/cmapply.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/cmset_op.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/colle.html

    r142 r143  
    10601060          <h3>Version history</h3> 
    10611061           
    1062           <h4>Version</h4><div class="preformat"> $Id: colle.pro 134 2006-07-07 10:19:08Z navarro $ 
     1062          <h4>Version</h4><div class="preformat"> $Id: colle.pro 142 2006-07-21 12:47:49Z navarro $ 
    10631063</div> 
    10641064          <h4>History</h4><div class="preformat"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/congridseb.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/different.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/extrait.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/inter.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/make_selection.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/union.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/zeroun.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/bar_plot.html

    r142 r143  
    10541054        spacing the bars slightly. 
    10551055 
    1056  $Id: bar_plot.pro 134 2006-07-07 10:19:08Z navarro $ 
     1056 $Id: bar_plot.pro 142 2006-07-21 12:47:49Z navarro $ 
    10571057</div> 
    10581058           
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/plt.html

    r142 r143  
    12871287           
    12881288          <h4>Version</h4><div class="preformat"> 
    1289  $Id$ 
     1289 $Id: plt.pro 142 2006-07-21 12:47:49Z navarro $ 
    12901290 </div> 
    12911291          <h4>History</h4><div class="preformat"> </div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/plt1d.html

    r142 r143  
    10821082           
    10831083          <h4>Version</h4><div class="preformat">  
    1084  $Id$ 
     1084 $Id: plt1d.pro 142 2006-07-21 12:47:49Z navarro $ 
    10851085</div> 
    10861086          <h4>History</h4><div class="preformat">  
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltbase.html

    r142 r143  
    13871387           
    13881388          <h4>Version</h4><div class="preformat"> 
    1389  $Id$ 
     1389 $Id: pltbase.pro 142 2006-07-21 12:47:49Z navarro $ 
    13901390</div> 
    13911391          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltt.html

    r142 r143  
    13421342           
    13431343          <h4>Version</h4><div class="preformat">  
    1344  $Id$ 
     1344 $Id: pltt.pro 142 2006-07-21 12:47:49Z navarro $ 
    13451345</div> 
    13461346          <h4>History</h4><div class="preformat"> </div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltz.html

    r142 r143  
    12961296           
    12971297          <h4>Version</h4><div class="preformat"> 
    1298  $Id$ 
     1298 $Id: pltz.pro 142 2006-07-21 12:47:49Z navarro $ 
    12991299</div> 
    13001300          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/sbar_plot.html

    r142 r143  
    813813           
    814814          <h4>Version</h4><div class="preformat"> 
    815  $Id$ 
     815 $Id: sbar_plot.pro 142 2006-07-21 12:47:49Z navarro $ 
    816816</div> 
    817817          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/scontour.html

    r142 r143  
    817817           
    818818          <h4>Version</h4><div class="preformat"> 
    819  $Id$ 
     819 $Id: scontour.pro 142 2006-07-21 12:47:49Z navarro $ 
    820820</div> 
    821821          <h4>History</h4><div class="preformat"> Sebastien Masson (smasson@lodyc.jussieu.fr) 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/splot.html

    r142 r143  
    805805           
    806806          <h4>Version</h4><div class="preformat"> 
    807  $Id$ 
     807 $Id: splot.pro 142 2006-07-21 12:47:49Z navarro $ 
    808808</div> 
    809809          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/tvplus.html

    r142 r143  
    971971           
    972972          <h4>Version</h4><div class="preformat"> 
    973  $Id$ 
     973 $Id: tvplus.pro 142 2006-07-21 12:47:49Z navarro $ 
    974974</div> 
    975975          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/addaxe.html

    r142 r143  
    802802           
    803803          <h4>Version</h4><div class="preformat"> 
    804  $Id$ 
     804 $Id: addaxe.pro 142 2006-07-21 12:47:49Z navarro $ 
    805805</div> 
    806806          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/autoscale.html

    r142 r143  
    784784           
    785785          <h4>Version</h4><div class="preformat"> 
    786  $Id$ 
     786 $Id: autoscale.pro 142 2006-07-21 12:47:49Z navarro $ 
    787787</div> 
    788788          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/axis4pltz.html

    r142 r143  
    932932           
    933933          <h4>Version</h4><div class="preformat"> 
    934  $Id$ 
     934 $Id: axis4pltz.pro 142 2006-07-21 12:47:49Z navarro $ 
    935935</div> 
    936936          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html

    r142 r143  
    924924           
    925925          <h4>Version</h4><div class="preformat"> 
    926  $Id$ 
     926 $Id: barrecouleur.pro 142 2006-07-21 12:47:49Z navarro $ 
    927927</div> 
    928928          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html

    r142 r143  
    12211221           
    12221222          <h4>Version</h4><div class="preformat"> 
    1223  $Id$ 
     1223 $Id: checkfield.pro 142 2006-07-21 12:47:49Z navarro $ 
    12241224</div> 
    12251225          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/determineminmax.html

    r142 r143  
    917917           
    918918          <h4>Version</h4><div class="preformat"> 
    919  $Id$ 
     919 $Id: determineminmax.pro 142 2006-07-21 12:47:49Z navarro $ 
    920920</div> 
    921921          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/givewindowsize.html

    r142 r143  
    709709         
    710710 
    711         <div class="routine_details" id="_          -1"> 
    712  
    713           <h2><a class="top" href="#container">top</a>          -1 <span class="warning">obsolete</span> <span class="warning">abstract</span> <span class="warning">private</span> <span class="categories">          -1</span></h2> 
     711        <div class="routine_details" id="_givewindowsize"> 
     712 
     713          <h2><a class="top" href="#container">top</a>givewindowsize </h2> 
    714714         
    715715          <p class="header"> 
    716             <span class="result">result = </span>          -1()</p> 
     716            <span class="result">result = </span>givewindowsize()</p> 
    717717         
    718           <div class="comments preformat">          -1</div> 
    719  
    720           <h3>Return value</h3><div class="preformat">          -1</div> 
    721  
    722            
    723  
    724            
    725  
    726           <h3>Examples</h3><div class="preformat">          -1</div> 
    727           <h3>Version history</h3> 
    728           <h4>Author</h4><div class="preformat">          -1</div> 
    729           <h4>Version</h4><div class="preformat">2.0</div> 
    730           <h4>History</h4><div class="preformat">          -1</div> 
    731           <h4>Copyright</h4><div class="preformat">          -1</div> 
    732           <h4>Customer ID</h4><div class="preformat">          -1</div> 
     718          <div class="comments"> 
     719</div> 
     720 
     721           
     722 
     723           
     724 
     725           
     726 
     727           
     728           
     729           
     730           
     731           
     732           
     733           
    733734          <h3>Known issues</h3> 
    734           <h4>Obsolete</h4><div class="preformat">          -1</div> 
    735           <h4>Known bugs</h4><div class="preformat">          -1</div> 
    736           <h4>Todo items</h4><div class="preformat">          -1</div> 
    737           <h4>Restrictions</h4><div class="preformat">          -1</div> 
     735           
     736           
     737          <h4>Todo items</h4><div class="preformat"> seb 
     738</div> 
     739           
    738740         
    739           <h3>Other attributes</h3> 
    740           <h4>Inherits classes</h4><div class="preformat">          -1</div> 
    741           <h4>Requires IDL version</h4><div class="preformat">          -1</div> 
    742           <h4>Uses routines</h4><div class="preformat">          -1</div> 
    743           <h4>Pre-condition</h4><div class="preformat">          -1</div> 
    744           <h4>Post-condition</h4><div class="preformat">          -1</div> 
    745           <h4>Common blocks used</h4><div class="preformat">          -1</div> 
     741           
     742           
     743           
     744           
     745           
     746           
     747           
    746748         
    747           <h3>Statistics</h3> 
    748           <table class="statistics"> 
    749             <tr><td>McCabe cyclic</td><td>          -1</td></tr> 
    750             <tr><td>McCabe essential</td><td>          -1</td></tr> 
    751             <tr><td>McCabe modular design</td><td>          -1</td></tr> 
    752           </table> 
    753749           
    754750         
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/meridienparallele.html

    r142 r143  
    752752           
    753753          <h4>Version</h4><div class="preformat"> 
    754  $Id$ 
     754 $Id: meridienparallele.pro 142 2006-07-21 12:47:49Z navarro $ 
    755755</div> 
    756756          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/placecolor.html

    r142 r143  
    776776           
    777777          <h4>Version</h4><div class="preformat"> 
    778  $Id$ 
     778 $Id: placecolor.pro 142 2006-07-21 12:47:49Z navarro $ 
    779779</div> 
    780780          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/placedessin.html

    r142 r143  
    11431143           
    11441144          <h4>Version</h4><div class="preformat"> 
    1145  $Id$ 
     1145 $Id: placedessin.pro 142 2006-07-21 12:47:49Z navarro $ 
    11461146</div> 
    11471147          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/projsegment.html

    r142 r143  
    803803           
    804804          <h4>Version</h4><div class="preformat"> 
    805  $Id$ 
     805 $Id: projsegment.pro 142 2006-07-21 12:47:49Z navarro $ 
    806806</div> 
    807807          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/restoreatt.html

    r142 r143  
    755755           
    756756          <h4>Version</h4><div class="preformat"> 
    757  $Id$ 
     757 $Id: restoreatt.pro 142 2006-07-21 12:47:49Z navarro $ 
    758758</div> 
    759759          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/rotation.html

    r142 r143  
    811811           
    812812          <h4>Version</h4><div class="preformat"> 
    813  $Id$ 
     813 $Id: rotation.pro 142 2006-07-21 12:47:49Z navarro $ 
    814814</div> 
    815815          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/saveatt.html

    r142 r143  
    736736           
    737737          <h4>Version</h4><div class="preformat"> 
    738  $Id$ 
     738 $Id: saveatt.pro 142 2006-07-21 12:47:49Z navarro $ 
    739739</div> 
    740740          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/terminedessin.html

    r142 r143  
    794794           
    795795          <h4>Version</h4><div class="preformat"> 
    796  $Id$ 
     796 $Id: terminedessin.pro 142 2006-07-21 12:47:49Z navarro $ 
    797797</div> 
    798798          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/LABEL/label.html

    r142 r143  
    877877           
    878878          <h4>Version</h4><div class="preformat">  
    879  $Id$ 
     879 $Id: label.pro 142 2006-07-21 12:47:49Z navarro $ 
    880880</div> 
    881881          <h4>History</h4><div class="preformat"> </div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/LABEL/label_date.html

    r142 r143  
    885885           
    886886          <h4>Version</h4><div class="preformat"> 
    887  $Id: label_date.pro 134 2006-07-07 10:19:08Z navarro $ 
     887 $Id: label_date.pro 142 2006-07-21 12:47:49Z navarro $ 
    888888</div> 
    889889          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/LABEL/lataxe.html

    r142 r143  
    785785           
    786786          <h4>Version</h4><div class="preformat"> 
    787  $Id$ 
     787 $Id: lataxe.pro 142 2006-07-21 12:47:49Z navarro $ 
    788788</div> 
    789789          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/LABEL/lonaxe.html

    r142 r143  
    785785           
    786786          <h4>Version</h4><div class="preformat"> 
    787  $Id$ 
     787 $Id: lonaxe.pro 142 2006-07-21 12:47:49Z navarro $ 
    788788</div> 
    789789          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html

    r142 r143  
    834834           
    835835          <h4>Version</h4><div class="preformat"> 
    836  $Id$  
     836 $Id: ajoutvect.pro 142 2006-07-21 12:47:49Z navarro $  
    837837 </div> 
    838838          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/VECTEUR/vecteur.html

    r142 r143  
    11231123           
    11241124          <h4>Version</h4><div class="preformat"> 
    1125  $Id$  
     1125 $Id: vecteur.pro 142 2006-07-21 12:47:49Z navarro $  
    11261126</div> 
    11271127          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/VECTEUR/velovect.html

    r142 r143  
    941941           
    942942          <h4>Version</h4><div class="preformat"> 
    943  $Id: velovect.pro 134 2006-07-07 10:19:08Z navarro $ 
     943 $Id: velovect.pro 142 2006-07-21 12:47:49Z navarro $ 
    944944</div> 
    945945          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/axe.html

    r142 r143  
    881881           
    882882          <h4>Version</h4><div class="preformat"> 
    883  $Id$ 
     883 $Id: axe.pro 142 2006-07-21 12:47:49Z navarro $ 
    884884</div> 
    885885          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/legende.html

    r142 r143  
    912912           
    913913          <h4>Version</h4><div class="preformat"> 
    914  $Id$ 
     914 $Id: legende.pro 142 2006-07-21 12:47:49Z navarro $ 
    915915</div> 
    916916          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/plotsym.html

    r142 r143  
    857857           
    858858          <h4>Version</h4><div class="preformat"> 
    859  $Id$ 
     859 $Id: plotsym.pro 142 2006-07-21 12:47:49Z navarro $ 
    860860 </div> 
    861861          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/reinitplt.html

    r142 r143  
    830830           
    831831          <h4>Version</h4><div class="preformat"> 
    832  $Id$ 
     832 $Id: reinitplt.pro 142 2006-07-21 12:47:49Z navarro $ 
    833833</div> 
    834834          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/style.html

    r142 r143  
    806806           
    807807          <h4>Version</h4><div class="preformat"> 
    808  $Id$ 
     808 $Id: style.pro 142 2006-07-21 12:47:49Z navarro $ 
    809809</div> 
    810810          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/symbols.html

    r142 r143  
    803803           
    804804          <h4>Version</h4><div class="preformat"> 
    805  $Id$ 
     805 $Id: symbols.pro 142 2006-07-21 12:47:49Z navarro $ 
    806806</div> 
    807807          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/chkeywd.html

    r142 r143  
    847847           
    848848          <h4>Version</h4><div class="preformat"> 
    849  $Id$ 
     849 $Id: chkeywd.pro 142 2006-07-21 12:47:49Z navarro $ 
    850850</div> 
    851851          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/delchr.html

    r142 r143  
    787787           
    788788          <h4>Version</h4><div class="preformat"> 
    789  $Id$ 
     789 $Id: delchr.pro 142 2006-07-21 12:47:49Z navarro $ 
    790790</div> 
    791791          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getfile.html

    r142 r143  
    834834           
    835835          <h4>Version</h4><div class="preformat"> 
    836  $Id$ 
     836 $Id: getfile.pro 142 2006-07-21 12:47:49Z navarro $ 
    837837</div> 
    838838          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getwrd.html

    r142 r143  
    878878           
    879879          <h4>Version</h4><div class="preformat"> 
    880  $Id$ 
     880 $Id: getwrd.pro 142 2006-07-21 12:47:49Z navarro $ 
    881881</div> 
    882882          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/isnumber.html

    r142 r143  
    792792           
    793793          <h4>Version</h4><div class="preformat"> 
    794  $Id$ 
     794 $Id: isnumber.pro 142 2006-07-21 12:47:49Z navarro $ 
    795795</div> 
    796796          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/nwrds.html

    r142 r143  
    787787           
    788788          <h4>Version</h4><div class="preformat"> 
    789  $Id$ 
     789 $Id: nwrds.pro 142 2006-07-21 12:47:49Z navarro $ 
    790790</div> 
    791791          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/putfile.html

    r142 r143  
    800800           
    801801          <h4>Version</h4><div class="preformat"> 
    802  $Id$ 
     802 $Id: putfile.pro 142 2006-07-21 12:47:49Z navarro $ 
    803803</div> 
    804804          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/str_size.html

    r142 r143  
    824824           
    825825          <h4>Version</h4><div class="preformat"> 
    826  $Id: str_size.pro 134 2006-07-07 10:19:08Z navarro $ 
     826 $Id: str_size.pro 142 2006-07-21 12:47:49Z navarro $ 
    827827</div> 
    828828          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strcnt.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/string2struct.html

    r142 r143  
    851851           
    852852          <h4>Version</h4><div class="preformat"> 
    853  $Id$ 
     853 $Id: string2struct.pro 142 2006-07-21 12:47:49Z navarro $ 
    854854</div> 
    855855          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strkeywd.html

    r142 r143  
    776776           
    777777          <h4>Version</h4><div class="preformat"> 
    778  $Id$ 
     778 $Id: strkeywd.pro 142 2006-07-21 12:47:49Z navarro $ 
    779779</div> 
    780780          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strrepl.html

    r142 r143  
    804804           
    805805          <h4>Version</h4><div class="preformat"> 
    806  $Id: strrepl.pro 134 2006-07-07 10:19:08Z navarro $ 
     806 $Id: strrepl.pro 142 2006-07-21 12:47:49Z navarro $ 
    807807</div> 
    808808          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strright.html

    r142 r143  
    774774           
    775775          <h4>Version</h4><div class="preformat"> 
    776  $Id: strright.pro 134 2006-07-07 10:19:08Z navarro $ 
     776 $Id: strright.pro 142 2006-07-21 12:47:49Z navarro $ 
    777777</div> 
    778778          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strsci.html

    r142 r143  
    854854           
    855855          <h4>Version</h4><div class="preformat"> 
    856  $Id: strsci.pro 134 2006-07-07 10:19:08Z navarro $ 
     856 $Id: strsci.pro 142 2006-07-21 12:47:49Z navarro $ 
    857857</div> 
    858858          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strtok.html

    r142 r143  
    814814           
    815815          <h4>Version</h4><div class="preformat"> 
    816  $Id: strtok.pro 134 2006-07-07 10:19:08Z navarro $ 
     816 $Id: strtok.pro 142 2006-07-21 12:47:49Z navarro $ 
    817817</div> 
    818818          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strtrans.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strwhere.html

    r142 r143  
    790790           
    791791          <h4>Version</h4><div class="preformat"> 
    792  $Id: strwhere.pro 134 2006-07-07 10:19:08Z navarro $ 
     792 $Id: strwhere.pro 142 2006-07-21 12:47:49Z navarro $ 
    793793</div> 
    794794          <h4>History</h4><div class="preformat"> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/tostr.html

    r142 r143  
    766766           
    767767          <h4>Version</h4><div class="preformat"> 
    768  $Id$ 
     768 $Id: tostr.pro 142 2006-07-21 12:47:49Z navarro $ 
    769769</div> 
    770770          <h4>History</h4><div class="preformat"></div> 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/fitintobox.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/linearequation.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/lineintersection.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/pwd.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/report.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/routine_name.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/test.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/testvar.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/text_box.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/undefine.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/xfile.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/xhelp.html

    r142 r143  
    328328table.variables td.image { width: 64px; } 
    329329 
    330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     330div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
    331331  margin: 2em; 
    332332  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-B.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-C.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-D.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-E.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-F.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-G.html

    r142 r143  
    362362table.variables td.image { width: 64px; } 
    363363 
    364 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     364div#file_comments { white-space: pre;  
    365365  margin: 2em; 
    366366  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-H.html

    r142 r143  
    362362table.variables td.image { width: 64px; } 
    363363 
    364 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre;  
     364div#file_comments { white-space: pre;  
    365365  margin: 2em; 
    366366  font-size: 80%; 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-I.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-JK.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-L.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-M.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-N.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-O.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-P.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-Q.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-R.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-S.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-T.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-U.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-V.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-W.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-X.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-Y.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-Z.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index-_.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-index.html

    r142 r143  
    737737      <a href="idldoc-index-F.html?format=raw#_F">F</a> 
    738738       
    739       <a href="idldoc-index-GH.html?format=raw#_G">G</a> 
    740        
    741       <a href="idldoc-index-GH.html?format=raw#_H">H</a> 
     739      <a href="idldoc-index-G.html?format=raw#_G">G</a> 
     740       
     741      <a href="idldoc-index-H.html?format=raw#_H">H</a> 
    742742       
    743743      <a href="idldoc-index-I.html?format=raw#_I">I</a> 
  • trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html

    r142 r143  
    982982</dd> 
    983983 
     984</dl><h3><a href="./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html?format=raw">./ToBeReviewed/PLOTS/DIVERS/givewindowsize.pro</a></h3> 
     985<dl> 
     986 
     987<dt><a href="./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html?format=raw#_givewindowsize">givewindowsize</a></dt> 
     988<dd> seb 
     989</dd> 
     990 
    984991</dl><h3><a href="./ToBeReviewed/STRING/lenstr.html?format=raw">./ToBeReviewed/STRING/lenstr.pro</a></h3> 
    985992<dl> 
     
    19281935</tr> 
    19291936 
     1937</table><a href="./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html?format=raw">./ToBeReviewed/PLOTS/DIVERS/givewindowsize.pro</a> 
     1938<table> 
     1939 
     1940<tr> 
     1941<td class="docroutine"><a href="./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html?format=raw#_givewindowsize">givewindowsize</a></td> 
     1942<td class="docstat partialdoc">partially documented</td> 
     1943</tr> 
     1944 
    19301945</table><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw">./ToBeReviewed/PLOTS/DIVERS/placedessin.pro</a> 
    19311946<table> 
  • trunk/SRC/Documentation/idldoc_html_output/overview.html

    r142 r143  
    980980        <tr> 
    981981          <td>Routines/methods</td> 
    982           <td class="value">         730</td> 
     982          <td class="value">         731</td> 
    983983        </tr> 
    984984        <tr> 
  • trunk/SRC/Documentation/idldoc_html_output/search.js

    r142 r143  
    173173a[171] = 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 134 2006 07 07 10:19:08Z navarro            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 "); 
    174174a[172] = 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 134 2006 07 07 10:19:08Z navarro            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 134 2006 07 07 10:19:08Z navarro            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    "); 
    175 a[173] = new Array("./ToBeReviewed/CALCULS/curl.html", "curl.pro", "", "             file_comments   Calculate the vertical component of the curl of a field of horizontal vectors      categories   Calculation on matrixes       param UU   Matrix representing coordinates of a field of vectors      param VV    Matrix representing coordinates of a field of vectors      returns RES   A 2d matrix      uses   common pro      restrictions   U and V matrixes can be 2 or 4d    Beware  to discern differents configuration of U and V  xy  xyz  xyt  xyzt     we look at the variable of the common            time which contain the calendar in IDL julian days to which U and    V refered to  in the same way as the variable            jpt which is the number of time s step to consider in time    U and V arrays ae cut in the same geographic domain  Because of the gap of    T  U  V and F grids  it is possible that these two arrays hase not the same    size and refered to different indexes  In this case  arrays are recut on    common indexesand the domain is redifined to match with these common    indexes  To avoid these recuts  use the keyword  memeindice in domdef pro       Points on the drawing edge are at  values f_nan       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        version    Id            FUNCTION curl  uu  vv     compile_opt idl2  strictarrsubs    common    tempsun   systime 1            To 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      We find common points between U and V      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 of U and V on the appropriated domain            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     calculation of the curl            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     Edging put at  values f_nan            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     For the graphic drawing            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 of U and V on the appropriated domain            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     Calculation of the curl            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      Calculation of the curl            zu   u temporary coefu           zv   v temporary coefv             psi     shift zv   1  0  0 zv     zu shift zu  0   1  0           psi   tabf psi     extraction of U and V on the appropriated domain            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               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     Calculation of the curl            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      Edging put at  values f_nan            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     for the graphic drawing            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"); 
    176 a[174] = new Array("./ToBeReviewed/CALCULS/depth2floatlevel.html", "depth2floatlevel.pro", "", "           file_comments   Rather comparable to depth2level but here  the calculated level is in float     For example  the level 5 4 correspond to a depth equal    to gdep 5 4 gdep 6 gdep 5       categories    Without loop       param TAB  in required    2d depth array  or a structure respecting litchamp criterions       keyword NOMASK   To do not mask land points      returns   An 2d array of float containing levels s values       uses   common pro      restrictions   Accept values at  values f_nan and mask land points at valmask       examples      IDL  a jpk 1 1 jpi jpj findgen jpi jpj       IDL  plt  1e6 a floatlevel2depth depth2floatlevel a nocontour       champ nul a 1e 6 pres      history    Sebastien Masson  smasson lodyc jussieu fr                         15 06 2000       version    Id            FUNCTION depth2floatlevel  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            for key_performance  common      depthin   litchamp tab       levelup   depth2level depthin   UPPER   nomask     depthup   level2depth levelup   nomask       levellow   depth2level depthin   lower   nomask     depthlow   level2depth levellow   nomask    calculate the distance depthlow depthup and management of the case    of this distance is null or eqal to  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   calculation of the result    res   levelup depthin depthup divi   We mask land point at 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"); 
    177 a[175] = new Array("./ToBeReviewed/CALCULS/depth2level.html", "depth2level.pro", "", "             file_comments    Allows to pass from a 2d depth array to a corresponding 2d level array       categories   Without loop      param TAB    2d depth array  or a structure respecting litchamp critrions       keyword UPPER    activated by default  We select the level just above the depth      keyword LOWER   We select the level just below the depth       keyword CLOSER    We select the depth s closer level       keyword NOMASK    To do not mask land points      returns    It is a 2d array containing level s values       uses   common pro      restrictions    For depthes out of gdep s values  the value  values f_nan is sent back    if the depth is superior to this one of the bottom  we send back jpk 1 in    the upper case  and  values f_nan in the lower case       history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999                         15 6 2000 accepte  values f_nan      version    Id          FUNCTION depth2level  tab  LOWER   lower  UPPER   upper  CLOSER   closer                           NOMASK   nomask  _extra   ex     compile_opt idl2  strictarrsubs      tempsun   systime 1            for key_performance  common      upper   1    if keyword_set lower  THEN upper   0     Reading of the input field and recuperation of the used subdomain s size      in   litchamp tab     grille mask 1 1 gdep nx ny nz firstx firsty firstz lastx lasty lastz     Verification of the coherence between array s size and the defined by domdef domain      IF ny EQ 1 THEN in   reform in  nx  ny   over     taille   size in     if taille 0  NE 2 then return  report le champ en entree doit contenir un tableau 2d     case 1 of       taille 1  eq jpi and taille 2  eq jpj:in in firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du champ     endcase         delete points at  values f_nan    notanumber   where finite in   nan  EQ 1     if notanumber 0  NE  1 then in notanumber    0     We transform the 2d deth value in a 2d array of levels corresponding to depthes     We go on array who have the size of 3d arrays    prof replicate 1 nx ny gdep firstz:lastz      in   in replicate 1  nz       mask01    prof  LT in     mask01   reform mask01  nx  ny  nz     levels   total mask01  3     notvalid   where levels EQ nz     if keyword_set upper  then begin       levels   levels 1       notvalid   where levels EQ  1     ENDIF ELSE notvalid   where levels EQ nz     IF notvalid 0  NE  1 THEN levels notvalid     values f_nan    If closer is activated    if keyword_set closer  then begin       test      litchamp tab level2depth levels                      level2depth   levels 1 jpk 1   litchamp tab          test   test    0 test    1        changer   where test GE 0        if changer 0  NE  1 then levels changer     levels changer 1     jpk 1     endif     We put back points at  values f_nan    if notanumber 0  NE  1 then levels notanumber     values f_nan   We mask land points at valmask    if NOT keyword_set nomask  then begin       if n_elements valmask  EQ 0 then valmask   1e20       terre   where mask    0  EQ 0        if terre 0  NE  1 then levels terre    valmask    endif          if keyword_set key_performance  THEN print   temps depth2level  systime 1 tempsun     return  levels end"); 
    178 a[176] = new Array("./ToBeReviewed/CALCULS/depth2mask.html", "depth2mask.pro", "", "             file_comments    Allows to pass from a 2d depth sill array to a 3d array of mask    with one of levels above the sill depth and 0s below       categories   Without loop      param TAB    2d sill depth array  or a structure respecting litchamp critrions       keyword _EXTRA   used to pass your keywords       returns   It is a 3d array containing the mas associated to the 2d sill depth array   profondeurs seuil      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999      version    Id            FUNCTION depth2mask  tab  _extra   ex       compile_opt idl2  strictarrsubs      tempsun   systime 1            For key_performance  common     We transform the 2d deth value in a 2d array of levels corresponding to depthes      niveaux   depth2level tab  _extra   ex     IF niveaux 0  EQ  1 THEN return    1     We transform the 2d array in a 3d array of mask      mask   level2mask niveaux       if keyword_set key_performance  NE 0 THEN print   temps depth2mask  systime 1 tempsun     return  mask end"); 
    179 a[177] = new Array("./ToBeReviewed/CALCULS/determ2.html", "determ2.pro", "", "      file_comments   computes the determinant of n 2 by 2 arrays   Z2DS is an 2 2 n array      categories    Without loop       param A  in required    n element array   Defined as z2ds 0  0      z1d00      param B  in required    n element array   Defined as z2ds 0  1      z1d01      param C  in required    n element array   Defined as z2ds 1  0      z1d10      param D  in required    n element array   Defined as z2ds 1  1      z1d11      returns    n elements array  the determinent of each 2 2 arrrays      examples   a findgen 2 2 5    print  determ2 a    FOR i 0 4 DO print  determ a i    IDL solution      history             S  Masson  smasson lodyc jussieu fr              July 11th  2002      version    Id      FUNCTION determ2  a  b  c  d     compile_opt idl2  strictarrsubs     CASE n_params  OF     1:res   a 0  0   a 1  1   a 0  1   a 1  0        4:res   a d c b      ELSE:stop   ENDCASE    RETURN  res END"); 
    180 a[178] = new Array("./ToBeReviewed/CALCULS/determ3.html", "determ3.pro", "", "       file_comments   computes the determinant of n 3 by 3 arrays    Z2DS is an 3 3 n array      categories   Without loop      param IN00  in required    It is an n element array   defined by in00   z2ds 0  0         param IN01  in required    It is an n element array   defined by in01   z2ds 0  1         param IN02  in required    It is an n element array   defined by in02   z2ds 0  2         param IN10  in required    It is an n element array   defined by in10   z2ds 1  0           param IN11  in required    It is an n element array   defined by in11   z2ds 1  1           param IN12  in required    It is an n element array   defined by in12   z2ds 1  2           param IN20  in required    It is an n element array   defined by in20   z2ds 2  0           param IN21  in required    It is an n element array   defined by in21   z2ds 2  1           param IN22  in required    It is an n element array   defined by in22   z2ds 2  2         returns    n elements array  the determinent of each 3 3 arrrays      examples   a findgen 3 3 5    print  determ3 a 2    FOR i 0 4 DO print  determ a i 2    IDL solution      history             S  Masson  smasson lodyc jussieu fr              July 11th  2002      version    Id      FUNCTION determ3  in00  in01  in02  in10  in11  in12  in20  in21  in22     compile_opt idl2  strictarrsubs     IF n_params  EQ 1 THEN BEGIN     in00save   temporary in00      in00   in00save 0  0        in01   in00save 0  1        in02   in00save 0  2        in10   in00save 1  0        in11   in00save 1  1        in12   in00save 1  2        in20   in00save 2  0        in21   in00save 2  1        in22   in00save 2  2      ENDIF    a01    determ2 in10  in20                       in12  in22     a11   determ2 in00  in20                      in02  in22     a21    determ2 in00  in10                       in02  in12     res   in01 a01 in11 a11 in21 a21    IF n_params  EQ 1 THEN in00   temporary in00save     RETURN  res END"); 
    181 a[179] = new Array("./ToBeReviewed/CALCULS/div.html", "div.pro", "", "             file_comments   calculation of the divergence of a 2d field      categories   Calculation on matrixes      param UU    Matrix representing coordinates of a field of vectors      param VV    Matrix representing coordinates of a field of vectors      returns RES   A 2d matrix      uses   common pro      restrictions   U and V matrixes can be 2 or 4d    Beware  to discern differents configuration of U and V  xy  xyz  xyt  xyzt     we look at the variable of the common            time which contain the calendar in IDL julian days to which U and    V refered to  in the same way as the variable            jpt which is the number of time s step to consider in time    U and V arrays ae cut in the same geographic domain  Because of the gap of    T  U  V and F grids  it is possible that these two arrays hase not the same    size and refered to different indexes  In this case  arrays are recut on    common indexesand the domain is redifined to match with these common    indexes  To avoid these recuts  use the keyword  memeindice in domdef pro       Points on the drawing edge are at  values f_nan         history   Guillaume Roullet  grlod ipsl jussieu fr                         Creation : printemps 1998                        Sebastien Masson  smasson lodyc jussieu fr                         adaptation pour marcher avec un domaine reduit                        12 1 2000       version    Id            FUNCTION div  uu  vv     compile_opt idl2  strictarrsubs      tempsun   systime 1            For key_performance  common      IF finite glamu 0 finite gphiu 0 finite glamv 0 finite gphiv 0  EQ 0 THEN        return  report This version of div 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      We find common points between U and V      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     case 1 of      xyz          size u 0  EQ 3 AND date1 EQ date2 :BEGIN      extraction of U and V on the appropriated domain            case 1 of              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:BEGIN                 zdiv    1                GOTO  sortie             end                       endcase     calcul de la divergence            zu    e2u indice2d replicate 1  nzt           zu   reform zu  nx  ny  nzt   over           zu   temporary u temporary zu               umask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           terreu   where zu EQ 0           if terreu 0  NE  1 then zu temporary terreu     values f_nan            zv    e1v indice2d replicate 1  nzt           zv   reform zv  nx  ny  nzt   over           zv   temporary v temporary zv               vmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           terrev   where zv EQ 0           if terrev 0  NE  1 then zv temporary terrev     values f_nan            zdiv   1e6 e1t indice2d e2t indice2d           zdiv    zdiv replicate 1  nzt           zdiv   reform zdiv  nx  ny  nzt   over           zdiv   temporary zdiv zu shift zu  1  0  0 zv shift zv  0  1  0               tmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt      Edging put at  values f_nan            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             zdiv 0         values f_nan             zdiv nx 1         values f_nan          endif          zdiv  0       values f_nan          zdiv  ny 1       values f_nan            zdiv   temporary zdiv             if n_elements valmask  EQ 0 THEN valmask   1e20          terre    where tmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt  EQ 0           if terre 0  NE  1 then zdiv temporary terre    valmask     For the graphic drawing            vargrid    T           varname    div           varunits    1e6 s 1           domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t           if keyword_set direc  then  zdiv   moyenne zdiv direc nan        END      xyt           date1 NE date2 AND  size u 0  EQ 3 :BEGIN      extraction of U and V on the appropriated domain            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     Calculation of the divergence            zu   e2u indice2d umask indice2d jpi jpj firstzt           terreu   where zu EQ 0           if terreu 0  NE  1 then zu temporary terreu     values f_nan          zu    zu replicate 1  jpt           zu   reform zu  nx  ny  jpt   over           zu   temporary u temporary zu             zv   e1v indice2d vmask indice2d jpi jpj firstzt           terrev   where zv EQ 0           if terrev 0  NE  1 then zv temporary terrev     values f_nan          zv    zv replicate 1  jpt           zv   reform zv  nx  ny  jpt   over           zv   temporary v temporary zv             zdiv   1e6 tmask indice2d jpi jpj firstzt e1t indice2d e2t indice2d           zdiv    zdiv replicate 1  jpt           zdiv   reform zdiv  nx  ny  jpt   over           terre    where zdiv EQ 0           zdiv   temporary zdiv zu shift zu  1  0  0 zv shift zv  0  1  0      Edging put at  values f_nan            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             zdiv 0         values f_nan             zdiv nx 1         values f_nan          endif          zdiv  0       values f_nan          zdiv  ny 1       values f_nan            if n_elements valmask  EQ 0 THEN valmask   1e20          if terre 0  NE  1 then zdiv temporary terre    valmask     for the graphic drawing            vargrid    T           varname    div           varunits    1e6 s 1           domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t           if keyword_set direc  then  zdiv   grossemoyenne zdiv direc nan        END      xyzt           date1 NE date2 AND  size u 0  EQ 4:BEGIN           return  report non code        END      xy           ELSE:BEGIN                 xy          indice3d   lindgen jpi  jpj  jpk           indice3d   indice3d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt      extraction of U and V on the appropriated domain            case 1 of              size u 0  NE 2 OR  size v 0  NE 2: BEGIN                 zdiv    1                GOTO  sortie             end              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 indice2d                 v   v indice2d              END             ELSE:return    1          endcase     Calculation of the divergence            zu   temporary u e2u indice2d umask indice3d           terreu   where zu EQ 0           if terreu 0  NE  1 then zu temporary terreu     values f_nan          zv   temporary v e1v indice2d vmask indice3d           terrev   where zv EQ 0           if terrev 0  NE  1 then zv temporary terrev     values f_nan          zdiv   zu shift zu  1  0 zv shift zv  0  1           zdiv   temporary zdiv tmask indice3d e1t indice2d e2t indice2d      Edging put at  values f_nan            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             zdiv 0       values f_nan             zdiv nx 1       values f_nan          endif          zdiv  0     values f_nan          zdiv  ny 1     values f_nan            zdiv   temporary zdiv 1e6            if n_elements valmask  EQ 0 THEN valmask   1e20          terre    where tmask indice3d  EQ 0           if terre 0  NE  1 then zdiv temporary terre    valmask     for the graphic drawing            vargrid    T           varname    div           varunits    1e6 s 1           domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t           if keyword_set direc  then  zdiv   moyenne zdiv direc nan         END    endcase       sortie:    if keyword_set key_performance  THEN print   temps div  systime 1 tempsun         return  zdiv end"); 
    182 a[180] = new Array("./ToBeReviewed/CALCULS/floatlevel2depth.html", "floatlevel2depth.pro", "", "             file_comments    Rather comparable to level2depth  It is the invert funcion of depth2floatlevel      categories   Without loop      param TAB   2d array of sill levels  or a structure respecting litchamp criterions       keyword NOMASK   To do not mask land points      returns   2d array containing depthes      uses   common pro      examples      IDL  a gdept jpk 1 1 jpi jpj findgen jpi jpj       IDL  plt  1e6 a floatlevel2depth depth2floatlevel a nocontour       null field at 1e 6 pres      history   Sebastien Masson  smasson lodyc jussieu fr                         15 6 2000      version    Id            FUNCTION floatlevel2depth  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common      flevelin   litchamp tab    We delete points at  values f_nan    notanumber   where finite flevelin   nan  EQ 1     if notanumber 0  NE  1 then flevelin notanumber    0   We sill  delete land points at valmask for example     flevelin   0   flevelin    jpk 1    We caculate the depth     depthup   level2depth floor flevelin   nomask     depthlow  level2depth ceil flevelin   nomask     weight   flevelin floor flevelin     res   depthup weight depthlow depthup    We put back points at  values f_nan    if notanumber 0  NE  1 then res notanumber     values f_nan   We mask land points at 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 floatlevel2depth  systime 1 tempsun       return  res end"); 
     175a[173] = new Array("./ToBeReviewed/CALCULS/curl.html", "curl.pro", "", "             file_comments   Calculate the vertical component of the curl of a field of horizontal vectors      categories   Calculation on matrixes       param UU   Matrix representing coordinates of a field of vectors      param VV    Matrix representing coordinates of a field of vectors      returns RES   A 2d matrix      uses   common pro      restrictions   U and V matrixes can be 2 or 4d    Beware  to discern differents configuration of U and V  xy  xyz  xyt  xyzt     we look at the variable of the common            time which contain the calendar in IDL julian days to which U and    V refered to  in the same way as the variable            jpt which is the number of time s step to consider in time    U and V arrays ae cut in the same geographic domain  Because of the gap of    T  U  V and F grids  it is possible that these two arrays hase not the same    size and refered to different indexes  In this case  arrays are recut on    common indexesand the domain is redifined to match with these common    indexes  To avoid these recuts  use the keyword  memeindice in domdef pro       Points on the drawing edge are at  values f_nan       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        version    Id: curl pro 142 2006 07 21 12:47:49Z navarro             FUNCTION curl  uu  vv     compile_opt idl2  strictarrsubs    common    tempsun   systime 1            To 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      We find common points between U and V      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 of U and V on the appropriated domain            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     calculation of the curl            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     Edging put at  values f_nan            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     For the graphic drawing            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 of U and V on the appropriated domain            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     Calculation of the curl            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      Calculation of the curl            zu   u temporary coefu           zv   v temporary coefv             psi     shift zv   1  0  0 zv     zu shift zu  0   1  0           psi   tabf psi     extraction of U and V on the appropriated domain            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               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     Calculation of the curl            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      Edging put at  values f_nan            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     for the graphic drawing            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"); 
     176a[174] = new Array("./ToBeReviewed/CALCULS/depth2floatlevel.html", "depth2floatlevel.pro", "", "           file_comments   Rather comparable to depth2level but here  the calculated level is in float     For example  the level 5 4 correspond to a depth equal    to gdep 5 4 gdep 6 gdep 5       categories    Without loop       param TAB  in required    2d depth array  or a structure respecting litchamp criterions       keyword NOMASK   To do not mask land points      returns   An 2d array of float containing levels s values       uses   common pro      restrictions   Accept values at  values f_nan and mask land points at valmask       examples      IDL  a jpk 1 1 jpi jpj findgen jpi jpj       IDL  plt  1e6 a floatlevel2depth depth2floatlevel a nocontour       champ nul a 1e 6 pres      history    Sebastien Masson  smasson lodyc jussieu fr                         15 06 2000       version    Id: depth2floatlevel pro 142 2006 07 21 12:47:49Z navarro             FUNCTION depth2floatlevel  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            for key_performance  common      depthin   litchamp tab       levelup   depth2level depthin   UPPER   nomask     depthup   level2depth levelup   nomask       levellow   depth2level depthin   lower   nomask     depthlow   level2depth levellow   nomask    calculate the distance depthlow depthup and management of the case    of this distance is null or eqal to  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   calculation of the result    res   levelup depthin depthup divi   We mask land point at 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"); 
     177a[175] = new Array("./ToBeReviewed/CALCULS/depth2level.html", "depth2level.pro", "", "             file_comments    Allows to pass from a 2d depth array to a corresponding 2d level array       categories   Without loop      param TAB    2d depth array  or a structure respecting litchamp critrions       keyword UPPER    activated by default  We select the level just above the depth      keyword LOWER   We select the level just below the depth       keyword CLOSER    We select the depth s closer level       keyword NOMASK    To do not mask land points      returns    It is a 2d array containing level s values       uses   common pro      restrictions    For depthes out of gdep s values  the value  values f_nan is sent back    if the depth is superior to this one of the bottom  we send back jpk 1 in    the upper case  and  values f_nan in the lower case       history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999                         15 6 2000 accepte  values f_nan      version    Id: depth2level pro 142 2006 07 21 12:47:49Z navarro           FUNCTION depth2level  tab  LOWER   lower  UPPER   upper  CLOSER   closer                           NOMASK   nomask  _extra   ex     compile_opt idl2  strictarrsubs      tempsun   systime 1            for key_performance  common      upper   1    if keyword_set lower  THEN upper   0     Reading of the input field and recuperation of the used subdomain s size      in   litchamp tab     grille mask 1 1 gdep nx ny nz firstx firsty firstz lastx lasty lastz     Verification of the coherence between array s size and the defined by domdef domain      IF ny EQ 1 THEN in   reform in  nx  ny   over     taille   size in     if taille 0  NE 2 then return  report le champ en entree doit contenir un tableau 2d     case 1 of       taille 1  eq jpi and taille 2  eq jpj:in in firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du champ     endcase         delete points at  values f_nan    notanumber   where finite in   nan  EQ 1     if notanumber 0  NE  1 then in notanumber    0     We transform the 2d deth value in a 2d array of levels corresponding to depthes     We go on array who have the size of 3d arrays    prof replicate 1 nx ny gdep firstz:lastz      in   in replicate 1  nz       mask01    prof  LT in     mask01   reform mask01  nx  ny  nz     levels   total mask01  3     notvalid   where levels EQ nz     if keyword_set upper  then begin       levels   levels 1       notvalid   where levels EQ  1     ENDIF ELSE notvalid   where levels EQ nz     IF notvalid 0  NE  1 THEN levels notvalid     values f_nan    If closer is activated    if keyword_set closer  then begin       test      litchamp tab level2depth levels                      level2depth   levels 1 jpk 1   litchamp tab          test   test    0 test    1        changer   where test GE 0        if changer 0  NE  1 then levels changer     levels changer 1     jpk 1     endif     We put back points at  values f_nan    if notanumber 0  NE  1 then levels notanumber     values f_nan   We mask land points at valmask    if NOT keyword_set nomask  then begin       if n_elements valmask  EQ 0 then valmask   1e20       terre   where mask    0  EQ 0        if terre 0  NE  1 then levels terre    valmask    endif          if keyword_set key_performance  THEN print   temps depth2level  systime 1 tempsun     return  levels end"); 
     178a[176] = new Array("./ToBeReviewed/CALCULS/depth2mask.html", "depth2mask.pro", "", "             file_comments    Allows to pass from a 2d depth sill array to a 3d array of mask    with one of levels above the sill depth and 0s below       categories   Without loop      param TAB    2d sill depth array  or a structure respecting litchamp critrions       keyword _EXTRA   used to pass your keywords       returns   It is a 3d array containing the mas associated to the 2d sill depth array   profondeurs seuil      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999      version    Id: depth2mask pro 142 2006 07 21 12:47:49Z navarro             FUNCTION depth2mask  tab  _extra   ex       compile_opt idl2  strictarrsubs      tempsun   systime 1            For key_performance  common     We transform the 2d deth value in a 2d array of levels corresponding to depthes      niveaux   depth2level tab  _extra   ex     IF niveaux 0  EQ  1 THEN return    1     We transform the 2d array in a 3d array of mask      mask   level2mask niveaux       if keyword_set key_performance  NE 0 THEN print   temps depth2mask  systime 1 tempsun     return  mask end"); 
     179a[177] = new Array("./ToBeReviewed/CALCULS/determ2.html", "determ2.pro", "", "      file_comments   computes the determinant of n 2 by 2 arrays   Z2DS is an 2 2 n array      categories    Without loop       param A  in required    n element array   Defined as z2ds 0  0      z1d00      param B  in required    n element array   Defined as z2ds 0  1      z1d01      param C  in required    n element array   Defined as z2ds 1  0      z1d10      param D  in required    n element array   Defined as z2ds 1  1      z1d11      returns    n elements array  the determinent of each 2 2 arrrays      examples   a findgen 2 2 5    print  determ2 a    FOR i 0 4 DO print  determ a i    IDL solution      history             S  Masson  smasson lodyc jussieu fr              July 11th  2002      version    Id: determ2 pro 142 2006 07 21 12:47:49Z navarro       FUNCTION determ2  a  b  c  d     compile_opt idl2  strictarrsubs     CASE n_params  OF     1:res   a 0  0   a 1  1   a 0  1   a 1  0        4:res   a d c b      ELSE:stop   ENDCASE    RETURN  res END"); 
     180a[178] = new Array("./ToBeReviewed/CALCULS/determ3.html", "determ3.pro", "", "       file_comments   computes the determinant of n 3 by 3 arrays    Z2DS is an 3 3 n array      categories   Without loop      param IN00  in required    It is an n element array   defined by in00   z2ds 0  0         param IN01  in required    It is an n element array   defined by in01   z2ds 0  1         param IN02  in required    It is an n element array   defined by in02   z2ds 0  2         param IN10  in required    It is an n element array   defined by in10   z2ds 1  0           param IN11  in required    It is an n element array   defined by in11   z2ds 1  1           param IN12  in required    It is an n element array   defined by in12   z2ds 1  2           param IN20  in required    It is an n element array   defined by in20   z2ds 2  0           param IN21  in required    It is an n element array   defined by in21   z2ds 2  1           param IN22  in required    It is an n element array   defined by in22   z2ds 2  2         returns    n elements array  the determinent of each 3 3 arrrays      examples   a findgen 3 3 5    print  determ3 a 2    FOR i 0 4 DO print  determ a i 2    IDL solution      history             S  Masson  smasson lodyc jussieu fr              July 11th  2002      version    Id: determ3 pro 142 2006 07 21 12:47:49Z navarro       FUNCTION determ3  in00  in01  in02  in10  in11  in12  in20  in21  in22     compile_opt idl2  strictarrsubs     IF n_params  EQ 1 THEN BEGIN     in00save   temporary in00      in00   in00save 0  0        in01   in00save 0  1        in02   in00save 0  2        in10   in00save 1  0        in11   in00save 1  1        in12   in00save 1  2        in20   in00save 2  0        in21   in00save 2  1        in22   in00save 2  2      ENDIF    a01    determ2 in10  in20                       in12  in22     a11   determ2 in00  in20                      in02  in22     a21    determ2 in00  in10                       in02  in12     res   in01 a01 in11 a11 in21 a21    IF n_params  EQ 1 THEN in00   temporary in00save     RETURN  res END"); 
     181a[179] = new Array("./ToBeReviewed/CALCULS/div.html", "div.pro", "", "             file_comments   calculation of the divergence of a 2d field      categories   Calculation on matrixes      param UU    Matrix representing coordinates of a field of vectors      param VV    Matrix representing coordinates of a field of vectors      returns RES   A 2d matrix      uses   common pro      restrictions   U and V matrixes can be 2 or 4d    Beware  to discern differents configuration of U and V  xy  xyz  xyt  xyzt     we look at the variable of the common            time which contain the calendar in IDL julian days to which U and    V refered to  in the same way as the variable            jpt which is the number of time s step to consider in time    U and V arrays ae cut in the same geographic domain  Because of the gap of    T  U  V and F grids  it is possible that these two arrays hase not the same    size and refered to different indexes  In this case  arrays are recut on    common indexesand the domain is redifined to match with these common    indexes  To avoid these recuts  use the keyword  memeindice in domdef pro       Points on the drawing edge are at  values f_nan         history   Guillaume Roullet  grlod ipsl jussieu fr                         Creation : printemps 1998                        Sebastien Masson  smasson lodyc jussieu fr                         adaptation pour marcher avec un domaine reduit                        12 1 2000       version    Id: div pro 142 2006 07 21 12:47:49Z navarro             FUNCTION div  uu  vv     compile_opt idl2  strictarrsubs      tempsun   systime 1            For key_performance  common      IF finite glamu 0 finite gphiu 0 finite glamv 0 finite gphiv 0  EQ 0 THEN        return  report This version of div 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      We find common points between U and V      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     case 1 of      xyz          size u 0  EQ 3 AND date1 EQ date2 :BEGIN      extraction of U and V on the appropriated domain            case 1 of              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:BEGIN                 zdiv    1                GOTO  sortie             end                       endcase     calcul de la divergence            zu    e2u indice2d replicate 1  nzt           zu   reform zu  nx  ny  nzt   over           zu   temporary u temporary zu               umask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           terreu   where zu EQ 0           if terreu 0  NE  1 then zu temporary terreu     values f_nan            zv    e1v indice2d replicate 1  nzt           zv   reform zv  nx  ny  nzt   over           zv   temporary v temporary zv               vmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt           terrev   where zv EQ 0           if terrev 0  NE  1 then zv temporary terrev     values f_nan            zdiv   1e6 e1t indice2d e2t indice2d           zdiv    zdiv replicate 1  nzt           zdiv   reform zdiv  nx  ny  nzt   over           zdiv   temporary zdiv zu shift zu  1  0  0 zv shift zv  0  1  0               tmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt      Edging put at  values f_nan            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             zdiv 0         values f_nan             zdiv nx 1         values f_nan          endif          zdiv  0       values f_nan          zdiv  ny 1       values f_nan            zdiv   temporary zdiv             if n_elements valmask  EQ 0 THEN valmask   1e20          terre    where tmask indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt:lastzt  EQ 0           if terre 0  NE  1 then zdiv temporary terre    valmask     For the graphic drawing            vargrid    T           varname    div           varunits    1e6 s 1           domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t           if keyword_set direc  then  zdiv   moyenne zdiv direc nan        END      xyt           date1 NE date2 AND  size u 0  EQ 3 :BEGIN      extraction of U and V on the appropriated domain            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     Calculation of the divergence            zu   e2u indice2d umask indice2d jpi jpj firstzt           terreu   where zu EQ 0           if terreu 0  NE  1 then zu temporary terreu     values f_nan          zu    zu replicate 1  jpt           zu   reform zu  nx  ny  jpt   over           zu   temporary u temporary zu             zv   e1v indice2d vmask indice2d jpi jpj firstzt           terrev   where zv EQ 0           if terrev 0  NE  1 then zv temporary terrev     values f_nan          zv    zv replicate 1  jpt           zv   reform zv  nx  ny  jpt   over           zv   temporary v temporary zv             zdiv   1e6 tmask indice2d jpi jpj firstzt e1t indice2d e2t indice2d           zdiv    zdiv replicate 1  jpt           zdiv   reform zdiv  nx  ny  jpt   over           terre    where zdiv EQ 0           zdiv   temporary zdiv zu shift zu  1  0  0 zv shift zv  0  1  0      Edging put at  values f_nan            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             zdiv 0         values f_nan             zdiv nx 1         values f_nan          endif          zdiv  0       values f_nan          zdiv  ny 1       values f_nan            if n_elements valmask  EQ 0 THEN valmask   1e20          if terre 0  NE  1 then zdiv temporary terre    valmask     for the graphic drawing            vargrid    T           varname    div           varunits    1e6 s 1           domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t           if keyword_set direc  then  zdiv   grossemoyenne zdiv direc nan        END      xyzt           date1 NE date2 AND  size u 0  EQ 4:BEGIN           return  report non code        END      xy           ELSE:BEGIN                 xy          indice3d   lindgen jpi  jpj  jpk           indice3d   indice3d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1  firstzt      extraction of U and V on the appropriated domain            case 1 of              size u 0  NE 2 OR  size v 0  NE 2: BEGIN                 zdiv    1                GOTO  sortie             end              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 indice2d                 v   v indice2d              END             ELSE:return    1          endcase     Calculation of the divergence            zu   temporary u e2u indice2d umask indice3d           terreu   where zu EQ 0           if terreu 0  NE  1 then zu temporary terreu     values f_nan          zv   temporary v e1v indice2d vmask indice3d           terrev   where zv EQ 0           if terrev 0  NE  1 then zv temporary terrev     values f_nan          zdiv   zu shift zu  1  0 zv shift zv  0  1           zdiv   temporary zdiv tmask indice3d e1t indice2d e2t indice2d      Edging put at  values f_nan            if  NOT keyword_set key_periodic  OR nx NE jpi then begin             zdiv 0       values f_nan             zdiv nx 1       values f_nan          endif          zdiv  0     values f_nan          zdiv  ny 1     values f_nan            zdiv   temporary zdiv 1e6            if n_elements valmask  EQ 0 THEN valmask   1e20          terre    where tmask indice3d  EQ 0           if terre 0  NE  1 then zdiv temporary terre    valmask     for the graphic drawing            vargrid    T           varname    div           varunits    1e6 s 1           domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2  gridtype    t           if keyword_set direc  then  zdiv   moyenne zdiv direc nan         END    endcase       sortie:    if keyword_set key_performance  THEN print   temps div  systime 1 tempsun         return  zdiv end"); 
     182a[180] = new Array("./ToBeReviewed/CALCULS/floatlevel2depth.html", "floatlevel2depth.pro", "", "             file_comments    Rather comparable to level2depth  It is the invert funcion of depth2floatlevel      categories   Without loop      param TAB   2d array of sill levels  or a structure respecting litchamp criterions       keyword NOMASK   To do not mask land points      returns   2d array containing depthes      uses   common pro      examples      IDL  a gdept jpk 1 1 jpi jpj findgen jpi jpj       IDL  plt  1e6 a floatlevel2depth depth2floatlevel a nocontour       null field at 1e 6 pres      history   Sebastien Masson  smasson lodyc jussieu fr                         15 6 2000      version    Id: floatlevel2depth pro 142 2006 07 21 12:47:49Z navarro             FUNCTION floatlevel2depth  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common      flevelin   litchamp tab    We delete points at  values f_nan    notanumber   where finite flevelin   nan  EQ 1     if notanumber 0  NE  1 then flevelin notanumber    0   We sill  delete land points at valmask for example     flevelin   0   flevelin    jpk 1    We caculate the depth     depthup   level2depth floor flevelin   nomask     depthlow  level2depth ceil flevelin   nomask     weight   flevelin floor flevelin     res   depthup weight depthlow depthup    We put back points at  values f_nan    if notanumber 0  NE  1 then res notanumber     values f_nan   We mask land points at 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 floatlevel2depth  systime 1 tempsun       return  res end"); 
    183183a[181] = new Array("./ToBeReviewed/CALCULS/fsfzpt.html", "fsfzpt.pro", "", "     Ice freezing point        fsfzpt: freezing point of seawater in degrees celsius         units : salinity        pfs        ipss 78                  pressure        pfp      decibars                 temperature     fszfpt   degrees celsius                 freezing pt  reference : unesco tech  papers in the marine science no 28 1978                 eigth report jpots                 annex 6 freezing point of seawater F J Millero pp 29 35  checkvalue: fsfzpt 2 588567 deg c for s 40 0 p 500 decibars      todo seb     FUNCTION fsfzpt  pfs  pfp     compile_opt idl2  strictarrsubs     RETURN     0 0575   1 710523e 3   sqrt pfs    2 154996e 4   pfs      pfs   7 53e 4   pfp END"); 
    184184a[182] = new Array("./ToBeReviewed/CALCULS/grad.html", "grad.pro", "", "          NAME:     PURPOSE:     CATEGORY:     CALLING SEQUENCE:      INPUTS:     KEYWORD PARAMETERS:     OUTPUTS:     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr       todo seb: remplir les truc              FUNCTION grad  field  direc     compile_opt idl2  strictarrsubs    common        IF finite glamu 0 finite gphiu 0 finite glamv 0 finite gphiv 0  EQ 0 THEN        return  report This version of grad is based on Arakawa C grid                            U and V grids must therefore be defined       res   litchamp field     taille size res     grille  mask  glam  gphi  gdep  nx  ny nz firstx firsty firstz lastx  lasty  lastz         if n_elements valmask  EQ 0 then valmask   1e20    case strupcase vargrid  of        T :BEGIN          case direc of              x :BEGIN                 divi   e1u firstx:lastx  firsty:lasty                 newmask    umask firstx:lastx  firsty:lasty  firstz:lastz                 vargrid    U                 domdef  glamt firstx  0  glamu lastx  0                      gphit 0  firsty  gphiu 0  lasty  gridtype    T U              END              y :BEGIN                divi   e2v firstx:lastx  firsty:lasty                 newmask    vmask firstx:lastx  firsty:lasty  firstz:lastz                 vargrid    V                 domdef  glamt firstx  0  glamv lastx  0                      gphit 0  firsty  gphiv 0  lasty  gridtype    T V              END              z :BEGIN                divi   e3w firstz:lastz                 newmask   mask                vargrid    W              END             ELSE:return  report Bad definition of direction argument           ENDCASE       END        W :BEGIN          case direc of              x :divi   e1u firstx:lastx  firsty:lasty               y :divi   e2v firstx:lastx  firsty:lasty               z :BEGIN                divi   e3t firstz:lastz                 newmask   mask                vargrid    T              END             ELSE:return  report Bad definition of direction argument           endcase       END        U :BEGIN          case direc of              x :BEGIN                divi    shift e1t   1  0 firstx:lastx  firsty:lasty                 newmask   tmask firstx:lastx  firsty:lasty  firstz:lastz                 vargrid    T                 domdef  glamt firstx  0  glamu lastx                      gphit 0  firsty  gphiu 0  lasty  gridtype    T U              END              y :BEGIN                divi   e2f firstx:lastx  firsty:lasty                 newmask    fmask firstx:lastx  firsty:lasty  firstz:lastz                 vargrid    F                 domdef  glamu firstx  0  glamf lastx  0                      gphiu 0  firsty  gphif 0  lasty  gridtype    U F              END              z :BEGIN                divi   e3w firstz:lastz                 newmask   mask                vargrid    W              END             ELSE:return  report Bad definition of direction argument           endcase       END        V :BEGIN          case direc of              x :BEGIN                divi   e1f firstx:lastx  firsty:lasty                 newmask    fmask firstx:lastx  firsty:lasty  firstz:lastz                 vargrid    F                 domdef  glamv firstx  0  glamf lastx  0                      gphiv 0  firsty  gphif 0  lasty  gridtype    V F              END              y :BEGIN                divi    shift e2t  0   1 firstx:lastx  firsty:lasty                 newmask   tmask firstx:lastx  firsty:lasty  firstz:lastz                 vargrid    T                 domdef  glamt firstx  0  glamv lastx  0                      gphit 0  firsty  gphiv 0  lasty  gridtype    T V              END              z :BEGIN                divi   e3w firstz:lastz                 newmask   mask                vargrid    W              END             ELSE:return  report Bad definition of direction argument           endcase       END          F :BEGIN            case direc of                x :divi    shift e1v   1  0 firstx:lastx  firsty:lasty                 y :divi    shift e2u  0   1 firstx:lastx  firsty:lasty                 z :divi   e3w firstz:lastz                ELSE:return  report Bad definition of direction argument             endcase         END       ELSE:return  report Bad definition of vargrid     ENDCASE    res   fitintobox res     case 1 of    xy         taille 0  EQ 2:BEGIN          earth   where mask    firstz  EQ 0           if earth 0  NE  1 then res earth     values f_nan          case direc of              x :BEGIN                 res    shift res   1  0 res divi                if key_periodic EQ 0 OR nx NE jpi THEN res nx 1       values f_nan                if vargrid EQ  T  OR vargrid EQ  V  then res   shift res  1  0              END              y :BEGIN                 res    shift res  0   1 res divi                res  ny 1     values f_nan                if vargrid EQ  T  OR vargrid EQ  U  then res     shift res  0  1                         END             ELSE:return   report Bad definition of direction argument for the type of array           ENDCASE          earth   where newmask    firstz  EQ 0           if earth 0  NE  1 then res earth    valmask       END    xyt         taille 0  EQ 3 AND jpt NE 1:BEGIN          earth   where mask    firstz  EQ 0           if earth 0  NE  1 then BEGIN             earth   earth replicate 1  jpt replicate 1  n_elements earth nx ny lindgen jpt              res earth     values f_nan          ENDIF          divi   divi replicate 1  jpt           case direc of              x :BEGIN                 res    shift res   1  0  0 res divi                if key_periodic EQ 0 OR nx NE jpi THEN res nx 1         values f_nan                if vargrid EQ  T  OR vargrid EQ  V   then res   shift res  1  0  0              END              y :BEGIN                 res    shift res  0   1  0 res divi                res  ny 1       values f_nan                if vargrid EQ  T  OR vargrid EQ  U   then res   shift res  0  1  0                      END             ELSE:return   report Bad definition of direction argument for the type of array           ENDCASE          earth   where newmask    firstz  EQ 0           if earth 0  NE  1 THEN res earth    valmask       END    xyz         taille 0  EQ 3 AND jpt EQ 1:BEGIN          earth   where mask EQ 0           if earth 0  NE  1 then res earth     values f_nan          case direc OF              x :BEGIN                 divi   divi replicate 1  nz                 res    shift res   1  0  0 res divi                if key_periodic EQ 0 OR nx NE jpi THEN res nx 1         values f_nan                if vargrid EQ  T  OR vargrid EQ  V  then res   shift res  1  0  0              END              y :BEGIN                 divi   divi replicate 1  nz                 res    shift res  0   1  0 res divi                res  ny 1       values f_nan                if vargrid EQ  T  OR vargrid EQ  U   then res   shift res  0  1  0                      END              z :BEGIN                divi   reform replicate 1  nx ny divi  nx  ny  nz                 if nx EQ 1 OR ny EQ 1 then res   reform res  nx  ny  nz                 if vargrid EQ  W  THEN BEGIN                    res    shift res  0  0  1 res divi                   res    0     values f_nan                ENDIF ELSE BEGIN                   res    res shift res  0  0   1 divi                   res    nz 1     values f_nan                ENDELSE                if earth 0  NE  1 then res earth    valmask             END          ENDCASE       END      xyzt         taille 0  EQ 4:BEGIN          earth   where mask replicate 1  jpt  EQ 0           if earth 0  NE  1 then res earth     values f_nan          case direc OF              x :BEGIN                 divi   divi replicate 1  nz jpt                 res    shift res   1  0  0  0 res divi                if key_periodic EQ 0 OR nx NE jpi THEN res nx 1           values f_nan                if vargrid EQ  T  OR vargrid EQ  V  then res   shift res  1  0  0  0              END              y :BEGIN                 divi   divi replicate 1  nz jpt                 res    shift res  0   1  0  0 res divi                res  ny 1         values f_nan                if vargrid EQ  T  OR vargrid EQ  U   then res   shift res  0  1  0  0                      END              z :BEGIN                divi   replicate 1  nx ny divi                divi   reform divi replicate 1  jpt  nx  ny  nz  jpt   over                 if nx EQ 1 OR ny EQ 1 then res   reform res  nx  ny  nz  jpt                 if vargrid EQ  W  THEN BEGIN                    res    shift res  0  0  1  0 res divi                   res    0       values f_nan                ENDIF ELSE BEGIN                   res    res shift res  0  0   1  0 divi                   res    nz 1       values f_nan                ENDELSE             END          ENDCASE          if earth 0  NE  1 then res earth    valmask       END        endcase    varname    grad of  varname    varunit   varunit m         return  res end      "); 
    185 a[183] = new Array("./ToBeReviewed/CALCULS/grossemoyenne.html", "grossemoyenne.pro", "", "             file_comments     averages a 3  or 4 d time serie field over a selected   geographical area or along the time axis  For one ore more   selected axes  x  y  z  t       categories      param TAB  in required    3 or 4d field      param DIREC  in required     x   y   z   t   xy   xz   yz   xyz   xt   yt   zt     xyt   xzt   yzt  or  xyzt        keyword BOXZOOM      xmin xmax ymin ymax  zmin zmax  to more details  see domdef   boxzoom can have 5 forms:     vert2   vert1  vert2 lon1  lon2  lat1  lat2       lon1  lon2  lat1  lat2  vert2 lon1  lon2  lat1  lat2  vert1 vert2                    keyword NAN    not a number  we activate it if we want to average without considerate some masked values of TAB    If masked values of TAB are values consecrated by IDL values f_nan  wr just have to put NAN    If masked values of TAB are valued a  a must be different of 1  corresponding to nan      values f_nan and of 0  which desactivate nan  We have to put NAN a     Comment: In output  rsult points which are NAN will be valued a or  values f_nan                   keyword NODOMDEF   We activate it if we do not want to pass in domdef even if the keyword boxzoom    is present  like when grossemoyenne is called via checkfield       keyword INTEGRATION    To make an integral rather than an average      keyword SPATIALFIRST    when performing at the same time   spatial and temporal mean  grossemoyenne is assuming   that the mask is not changing with the time  In   consequence  grossemoyenne performs temporal mean   first and then call moyenne  Activate  SPATIALFIRST if   you want to perform the spatial mean before the   temporal mean  Note that if NAN is activated  then   SPATIALFIRST is activated automatically       keyword TEMPORALFIRST    to force to perform first temporal   mean even if nan is activated  see SPATIALFIRST   explanations          keyword WDEPTH    to specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W        uses   result:un tableau    common   domdef      restrictions Put values corresponding to land at 1 e20      history    Jerome Vialard  jv lodyc jussieu fr   2 7 98                         Sebastien Masson  smasson lodyc jussieu fr    adaptation array containing a temporal dimension                          14 8 98                         15 1 98                         12 3 99 adaptation for NAN and utilisation of TEMPORARY      version    Id     function grossemoyenne  tab  direc  BOXZOOM   boxzoom  INTEGRATION   integration                             NAN   nan  NODOMDEF   nodomdef  WDEPTH   wdepth                             SPATIALFIRST   spatialfirst  TEMPORALFIRST   temporalfirst                             _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    I  preliminaries     dirt   0   dirx   0   diry   0   dirz   0   dim     aa      I 1  Directions s  we follow to integrate     if   strpos direc   t  ge 0   then dirt   1   if   strpos direc   x  ge 0   then dirx   1   if   strpos direc   y  ge 0   then diry   1   if   strpos direc   z  ge 0   then dirz   1   IF keyword_set NAN  AND  dirx EQ 1 OR diry EQ 1 OR dirz EQ 1        THEN spatialfirst   1   IF keyword_set temporalfirst  THEN spatialfirst   0     I 2  verification of the input array s size     taille   size tab    case 1 of     taille 0  eq 1 :return   report Le tableau n a qu une dimension  cas non traite      taille 0  eq 2 :return   report Le tableau n a qu deux dimension  cas non traite      taille 0  eq 3 :BEGIN        dim    3d        if dirx eq 0 and diry eq 0 and dirt eq 0 then return  tab     END     taille 0  eq 4 :BEGIN        dim    4d        if dirx eq 0 and diry eq 0 and dirz eq 0 and dirt eq 0 then return  tab     END     else : return  report Le tableau d entree doit etre a 3 ou 4 dimensions s il ne contient pas de dim temporelle utiliser moyenne    endcase       I 3  Obtainment of scale s factors and of the mask on the subdomain concernedby the average    Redefinition of the domain ajusted at boxzoom  at 6 elements    This will allowed us to calculate only in the domain concerned by the average    Domdef  followed by grid give us all arrays of the grid on the subdomain      if keyword_set boxzoom  then BEGIN      Case 1 Of       N_Elements Boxzoom  Eq 1: bte    lon1  lon2  lat1  lat2  0  boxzoom 0        N_Elements Boxzoom  Eq 2: bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1        N_Elements Boxzoom  Eq 4: bte    Boxzoom  vert1  vert2        N_Elements Boxzoom  Eq 5: bte    Boxzoom 0:3  0  Boxzoom 4        N_Elements Boxzoom  Eq 6: bte   Boxzoom       Else: return  report Wrong Definition of Boxzoom      endcase     if NOT keyword_set nodomdef  then BEGIN        savedbox   1b       saveboxparam   boxparam4grmoyenne dat        domdef  bte  GRIDTYPE   vargrid  _extra   ex     ENDIF    ENDIF      attribution of the mask and of longitude and latitude arrays      grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz  e1  e2  e3  WDEPTH   wdepth     I 4  if dirt equal 1  we make the temporal average and we send it in moyenne     if dirt EQ 1 AND NOT keyword_set spatialfirst  then begin     if dim EQ 3d then BEGIN        case 1 of         taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpt:             res   tab firstx:firstx nx 1                         firsty:firsty ny 1            taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpt:res   tab         else:BEGIN            if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat            return  report Probleme d adequation entre les tailles du domaine nx ny jpt  strtrim nx  1 strtrim ny  1 strtrim jpt  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1 strtrim taille 3  1          END       ENDCASE       if keyword_set integration  then begin         res   total res  3  nan   nan        ENDIF ELSE BEGIN         if keyword_set nan  then BEGIN           divi   finite res            divi   total temporary divi  3            notanum   where divi EQ 0            res   total res  3  nan   keyword_set nan   1   divi            if notanum 0  NE  1 then res temporary notanum     values f_nan         ENDIF ELSE res   total res  3 1 taille 3         ENDELSE     ENDIF ELSE BEGIN       case 1 of         taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpk and taille 4  eq jpt:             res   tab firstx:lastx  firsty:lasty  firstz:lastz            taille 1  eq jpi and taille 2  eq jpj and taille 3  eq nz and taille 4  eq jpt:             res   tab firstx:lastx  firsty:lasty              taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq nz and taille 4  eq jpt:res   tab         taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpk and taille 4  eq jpt:             res   tab    firstz:lastz            else:BEGIN             if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat            return  report Probleme d adequation entre les tailles du domaine nx ny nz jpt                               strtrim nx  1 strtrim ny  1 strtrim nz  1                              strtrim jpt  1  et du tableau  strtrim taille 1  1                              strtrim taille 2  1 strtrim taille 3  1                              strtrim taille 4  1          END         endcase       if keyword_set integration  then begin         res   total res  4  nan   nan        ENDIF ELSE BEGIN         if keyword_set nan  then begin           divi   finite res            divi   total temporary divi  4            notanum   where divi EQ 0            res   total res  4   nan 1   divi            if notanum 0  NE  1 then res temporary notanum     values f_nan         ENDIF ELSE res   total res  4 1 taille 4        ENDELSE     ENDELSE     if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return   moyenne temporary res  direc  BOXZOOM   boxzoom  NAN   nan  INTEGRATION   integration  NODOMDEF   nodomdef  WDEPTH   wdepth  _extra   ex    ENDIF ELSE res   tab   IF jpt EQ 1 THEN BEGIN     if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return  moyenne reform res   over  direc  BOXZOOM   boxzoom  NAN   nan  INTEGRATION   integration  NODOMDEF   nodomdef  WDEPTH   wdepth  _extra   ex    END       II  Case 2d arrays series  tab3d        if  dim eq  3d  then begin       II 1  verification of the coherence of the array s size to average   Verification of the coherence between the array s size and the domain defined by domdef   The input array must have either the total domain s size  jpi jpj jpt  or this    one of the reduced domain  nx ny jpt        case 1 of       taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpt:           res   tab firstx:firstx nx 1                       firsty:firsty ny 1          taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpt:res   tab       else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny jpt  strtrim nx  1 strtrim ny  1 strtrim jpt  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1 strtrim taille 3  1        enD     endcase     if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      If nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 then BEGIN        res   reform res  nx  ny  jpt   over        e1    reform e1  nx  ny   over        e2    reform e2  nx  ny   over      endif     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN         mask    reform mask  nx  ny  nz   over      II 3  Different types of average       if keyword_set nan  NE 0 then msknan   finite res  ELSE msknan    1     mask   mask    0      case 1 of        dirx eq 1  and  diry eq 0  : begin         e   temporary e1 temporary mask          echelle    temporary e replicate 1  jpt          echelle   reform echelle  nx  ny  jpt   over          if keyword_set integration  then divi   1 ELSE BEGIN            IF msknan 0  NE  1 THEN divi   total echelle msknan  1              ELSE divi   total echelle  1          ENDELSE         res   total temporary res echelle  1  nan   nan divi   1          if msknan 0  NE  1 then BEGIN           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  1                 total temporary echelle  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  : begin         e   temporary e2 temporary mask          if nx EQ 1 OR ny EQ 1 then e   reform e  nx  ny   over          echelle    temporary e replicate 1  jpt          echelle   reform echelle  nx  ny  jpt   over          if keyword_set integration  then divi   1 ELSE BEGIN            IF msknan 0  NE  1 THEN divi   total echelle msknan  2              ELSE divi   total echelle  2          ENDELSE          res   total temporary res echelle  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  2                 total temporary echelle  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  : begin         echelle    temporary e1 temporary e2 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  jpt   over          if keyword_set integration  then divi   1 ELSE BEGIN            IF msknan 0  NE  1 THEN divi   total total echelle msknan  1  1              ELSE divi   total total echelle  1  1          ENDELSE         res   total temporary total temporary res echelle  1  nan   nan  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  1  1                 total total temporary echelle  1  1  EQ 0          endif       end     endcase   endif       III  Case 3d arrays series  tab4d      if  dim eq  4d  then begin     III 1  Verification of the coherence of the array to average size    Verification of the coherence between the array s size and the domain    defind by domdef    The input array must have either the total domain size  jpi jpj jpk jpt     or this one of the reduced domain  nx ny ny jpt        case 1 of       taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpk and taille 4  eq jpt:           res   tab firstx:lastx  firsty:lasty  firstz:lastz          taille 1  eq jpi and taille 2  eq jpj and taille 3  eq nz and taille 4  eq jpt:           res   tab firstx:lastx  firsty:lasty            taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq nz and taille 4  eq jpt:res   tab       taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpk and taille 4  eq jpt:           res   tab    firstz:lastz          else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny nz jpt                             strtrim nx  1 strtrim ny  1 strtrim nz  1                            strtrim jpt  1  et du tableau  strtrim taille 1  1                            strtrim taille 2  1 strtrim taille 3  1                            strtrim taille 4  1        END     endcase     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 OR jpt EQ 1 then res   reform res  nx  ny  nz  jpt   over      if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      if nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 OR nz EQ 1 then BEGIN        res   reform res  nx  ny  nz  jpt   over        mask    reform mask  nx  ny  nz   over      ENDIF     IF keyword_set key_partialstep  THEN BEGIN   the top of the ocean floor is       IF vargrid EQ  T  OR vargrid EQ  W  THEN bottom   total mask  3          ELSE bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3     we suppress columns with only ocean or land        good   where bottom NE 0 AND bottom NE nz    the bottom of the ocean in 3D index is:       bottom   lindgen nx ny temporary bottom 1L nx ny       IF good 0  NE  1 THEN bottom   bottom good          ELSE bottom    1     ENDIF ELSE bottom    1     III 2  different average types       IF keyword_set nan  NE 0 THEN msknan   finite res  ELSE msknan    1     case 1 of        dirx eq 1  and  diry eq 0  and  dirz eq 0  : BEGIN         e13    temporary e1 replicate 1  nz          e13   reform e13  nx  ny  nz   over          echelle    temporary e13 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz  jpt              nan   1           ENDIF           bottom   bottom replicate 1  jpt      4D bottom                replicate 1  n_elements bottom nx ny nz lindgen jpt            msknan bottom    0           res temporary bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total echelle msknan  1              ELSE divi   total echelle  1          endelse         res   temporary res echelle         res   total temporary res  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  1                 total temporary echelle  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 0  : begin         e23   temporary e2 replicate 1  nz          e23   reform e23  nx  ny  nz   over          echelle    temporary e23 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           bottom   bottom replicate 1  jpt      4D bottom                replicate 1  n_elements bottom nx ny nz lindgen jpt            msknan bottom    0           res temporary bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total echelle msknan  2              ELSE divi   total echelle  2          endelse         res   total temporary res echelle  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  2                 total temporary echelle  2  EQ 0          endif       end        dirx eq 0  and  diry eq 0  and  dirz eq 1  : begin         e33   replicate 1  1 nx ny e3         e33   reform e33  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e33 bottom     e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e33 bottom     e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e33 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total echelle msknan  3              ELSE divi   total echelle  3          endelse         res   total temporary res echelle  3  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  3                 total temporary echelle  3  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 0  : begin         e13   e1 replicate 1  nz          e13   reform e13  nx  ny  nz   over          e23   e2 replicate 1  nz          e23   reform e23  nx  ny  nz   over          echelle    temporary e13 temporary e23 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           bottom   bottom replicate 1  jpt      4D bottom                replicate 1  n_elements bottom nx ny nz lindgen jpt            msknan bottom    0           res temporary bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total echelle msknan  1  1              ELSE divi   total total echelle  1  1          endelse         res   total total temporary res echelle  1  nan   nan  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  1  1                 total total temporary echelle  1  1  EQ 0          endif       end        dirx eq 1  and  diry eq 0  and  dirz eq 1  : begin         e133   e1 e3         IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e133 bottom     e1 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e133 bottom     e1 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e133 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total echelle msknan  1  2              ELSE divi   total total echelle  1  2          endelse         res   total total temporary res echelle  1  nan   nan  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  1  2                 total total temporary echelle  1  2  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 1  : begin         e233   e2 e3         IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e233 bottom     e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e233 bottom     e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e233 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total echelle msknan  2  2              ELSE divi   total total echelle  2  2          endelse         res   total total temporary res echelle  2  nan   nan  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  2  2                 total total temporary echelle  2  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 1  : begin         e1233    e1 e2 e3         IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e1233 bottom     e1 e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e1233 bottom     e1 e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e1233 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total total echelle msknan  1  1  1              ELSE divi   total total total echelle  1  1  1          endelse         res   total total total temporary res echelle  1  nan   nan  1  nan   nan  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total total temporary testnan  1  1  1                 total total total temporary echelle  1  1  1  EQ 0          endif       end     endcase   endif     if dirt EQ 1 AND keyword_set spatialfirst  then BEGIN     IF  reverse size res   dimension 0  NE jpt THEN BEGIN       print   the last dimension of res is not equal to jpt:  strtrim jpt  2        if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat        return   1     ENDIF     tdim   size res   n_dimensions      if keyword_set integration  then res   total res  tdim  nan   nan        ELSE BEGIN        if keyword_set nan  then BEGIN          testnan   testnan  divi      ENDELSE    ENDIF      IV   finishing       IV 1  We mask land by a value equal to 1 e 20     valmask   1e 20   terre   where divi EQ 0    IF terre 0  NE  1 THEN BEGIN      res temporary terre    1e 20   ENDIF      IV 2  We replace  when nan equal 1   values f_nan by nan     if keyword_set nan  NE 0 then BEGIN      puttonan   where temporary testnan  EQ 0      if puttonan 0  NE  1 then res temporary puttonan     values f_nan     if nan NE 1 then BEGIN        notanumber   where finite res  eq 0        if notanumber 0  NE  1 then res temporary notanumber    nan     ENDIF   ENDIF     IV 3  We replace in the domain whch was defined at the entry of average     if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat      if keyword_set key_performance  THEN print   temps grossemoyenne  systime 1 tempsun    return  res     end"); 
    186 a[184] = new Array("./ToBeReviewed/CALCULS/hdyn.html", "hdyn.pro", "", "             file_comments   Calculate the height by rapport to a reference state for a depth reference     See keywords for different possibilities  By default  the state reference    is rho 1020 and the depth reference is gdepw ka  with ka the first W level    directly above 1000 m        categories   Post traiment calculation      param TABSN  in required    array representing the salinity      param TABTN  in required    array representing the temperature Has the same size than SN      keyword GILL We activate this key if we want to calculate the dinamic height    like in the GILL page 215  which means by rapport to a reference state which    vary in depth and which is determinated by a reference temperature tref at 0 C    and a reference salinity sref at 35psu      keyword LEVEL   It is the same reference level to take  This level is defined like    that gdepw level  is the reference depth       keyword SREF    Give a value to this keyword to change the reference salinity used in the    calculation when GILL  is activated           keyword TREF   Give a value to this keyword to change the reference temperature used in the    calculation when GILL  is activated        keyword PROFREF   Give a depth to this keyword which will be considerated as the refeence depth     in this case  LEVEL has not any effect  the calculation will be effectuated    until this depth effecting an interpolation between the the last W level above    PROFREF and PROFREF       keyword SURFACE_LEVEL    It is the level where we wan to calculate the dynamic height  By default  it is    the level 0       returns   An array of the same size of sn and tn representing the dynamic height calculated    from a reference depth nd by rapport to a reference state       uses    common pro      restrictions   Points for which we can not calculate the dynamic height  whose the batymetry    is less deep than the reference depth  are put at the value  values f_nan      restrictions   approximation: The pressure in decibars is equal to the depth in meters  the pressure increase of 1bar all 10m       history   Sebastien Masson  smasson lodyc jussieu fr       version    Id            FUNCTION hdyn   tabsn  tabtn  TREF   tref   SREF   sref  PROFREF   profref  LEVEL   level  GILL   gill  SURFACE_LEVEL   surface_level     compile_opt idl2  strictarrsubs      tempsun   systime 1            for key_performance  common     if NOT keyword_set surface_level  then surface_level   0   useful if GILL is activated    if NOT keyword_set tref  then tref   0     if NOT keyword_set sref  then sref   35    If needed  we determinate the reference depth and the W level situated directly above     if keyword_set profref  then begin       rien   where gdepw LE profref  level        level   level 1       za   gdepw level     ENDIF ELSE BEGIN        if NOT keyword_set level  then BEGIN           rien   where gdepw LE 1000  level           level   level 1       ENDIF       profref   gdepw level        za   profref    ENDELSE     tailles   size tabsn     taillet   size tabtn     if total tailles 0:tailles 0  NE taillet 0:taillet 0  NE 0 then       return   report Les tableaux sn et tn doivent avoir la meme taille     if tailles 3  NE jpk then return  report La dim verticale des tableaux sn et tn doit etre egalre a jpk     nx   nxt    ny   nyt    case  size tabsn 0  OF       3:BEGIN           case 1 of             tailles 1  eq jpi and tailles 2  eq jpj: BEGIN                sn   tabsn firstxt:lastxt  firstyt:lastyt                   tn   tabtn firstxt:lastxt  firstyt:lastyt                end             tailles 1  eq  nx and tailles 2  eq  ny:BEGIN                 sn   tabsn                tn   tabtn             end             else:return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if keyword_set gill  then             rhonref   rhon replicate sref nx  ny  jpk replicate tref nx  ny  jpk   insitu             ELSE rhonref   1020           vol rhonref rhon sn tn   insitu rhonref          e33d   replicate 1  nx ny e3t          e33d   reform e33d  nx  ny  jpk   over           terre   where tmask firstxt:lastxt  firstyt:lastyt    EQ 0           if terre 0  NE  1 then vol terre     values f_nan          case level of             0:hdyn  100 profref gdepw 0 vol    0              1:hdyn  100 vol e33d    0 profref gdepw 1 vol    1              ELSE:hdyn  100 total   vol e33d    surface_level: level 1  3                  profref gdepw level vol    level           endcase       END       4:BEGIN           case 1 of             tailles 1  eq jpi and tailles 2  eq jpj AND tailles 4  EQ jpt: BEGIN                sn   tabsn firstxt:lastxt  firstyt:lastyt                     tn   tabtn firstxt:lastxt  firstyt:lastyt                  end             tailles 1  eq  nx and tailles 2  eq  ny AND tailles 4  EQ jpt:BEGIN                 sn   tabsn                tn   tabtn             end             else:return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          if keyword_set gill  then             rhonref   rhon replicate sref nx  ny  jpk  jpt replicate tref nx  ny  jpk  jpt   insitu             ELSE rhonref   1020           vol rhonref rhon sn tn   insitu rhonref          e33d   replicate 1  nx ny e3t          e33d   e33d replicate 1  jpt           e33d   reform e33d  nx  ny  jpk  jpt   over           mask   tmask firstxt:lastxt  firstyt:lastyt             mask   mask replicate 1  jpt           terre   where mask EQ 0           if terre 0  NE  1 then vol terre     values f_nan          case level of             0:hdyn  100 profref gdepw 0 vol    0                1:hdyn  100 vol e33d    0   profref gdepw 1 vol    1                ELSE:hdyn  100 total   vol e33d    surface_level: level 1    3                  profref gdepw level vol    level             endcase       END       ELSE: return   report cas non code     ENDCASE    varunit    cm     varname    Dynamic Height  href strtrim round profref  1 m     IF keyword_set key_performance  THEN print   temps hdyn  systime 1 tempsun      return  hdyn end"); 
    187 a[185] = new Array("./ToBeReviewed/CALCULS/level2depth.html", "level2depth.pro", "", "               file_comments   Allows to pass from a 2d level array to a 2d depth array corresponding o these levels      categories   Without loop      param TAB  in required    2d level array of sill levels  or a structure respecting litchamp criterions       keyword NOMASK   To do not mask land points       returns    2d array containing depthes      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999                         14 6 2000 accepte  values f_nan      version    Id            FUNCTION level2depth  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common     Reading of the input field  and recovery of the used subdomain s size      niveaux   litchamp tab     grille mask   1   1 gdep nx ny nz firstx firsty firstz lastx lasty lastz     verification of the coherence between array s size and the domain definied by domdef      taille   size niveaux     if taille 0  NE 2 then return  report le champ en entree doit contenir un tableau 2d     case 1 of       taille 1  eq jpi and taille 2  eq jpj:niveaux niveaux firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du champ     endcase       wherenan   where finite niveaux   nan  EQ 1     if wherenan 0  NE  1 then niveaux wherenan    0    niveaux   0   niveaux    jpk 1       gdep   replicate 1  nx ny gdep    niveaux   lindgen nx ny nx ny niveaux    gdep   reform gdep niveaux  nx  ny       if wherenan 0  NE  1 then gdep wherenan     values f_nan    if NOT keyword_set nomask  then begin       if n_elements valmask  EQ 0 then valmask   1e20       terre   where mask    0  EQ 0        if terre 0  NE  1 then gdep terre    valmask    endif      if keyword_set key_performance  THEN print   temps level2depth  systime 1 tempsun     return  gdep end"); 
    188 a[186] = new Array("./ToBeReviewed/CALCULS/level2index.html", "level2index.pro", "", "             file_comments    We want  from a 3d matrix  to extract a 2d  x y  array whose each element    has been extract from a level specified by the 2d level array  typically     we want to obtain the salinity along an isopycn we have repered by its level    level2index is a function who give  in function of level  a 2d indexes array    which will allow to extract the 2d array from the 3d array       categories   without loop      param LEVEL  in required    A 2d level array      returns   a 2d indexes array      history   Sebastien Masson  smasson lodyc jussieu fr                         24 11 1999      version    Id            FUNCTION level2index  level   An element of 3d array  whose the two first dimensions are nx and ny  whose    coordinates are i  j and k have for index in the same 3d array i   j nx   k nx ny    level given  for  each point of level  we know i  j et k    so we can calculate the index     compile_opt idl2  strictarrsubs      taille   size level     nx   taille 1     ny   taille 2    array k nx ny     tabknxny    nx ny long level         return  lindgen nx  ny tabknxny end"); 
    189 a[187] = new Array("./ToBeReviewed/CALCULS/level2mask.html", "level2mask.pro", "", "             file_comments   Allow to pass from a 2d sill level array to the 3d mask array with 1s in    levels above the sill level and 0s below  and on it       categories    without loop      param TAB  in required    2d level array of sill level  or a structure respecting litchamp criterions       returns   It is a 3d array containing the mask associated to the 2d sill level array      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999   Setp 2004: boundary level have 0 values and not 1  as it was   explained before in the header  see:   print  array_equal niveau  total level2mask niveau 3         version    Id            FUNCTION level2mask  tab       compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common     Reading of the input field and recovery of the size of the used subdomain      niveaux   litchamp tab     grille maskterre   1   1   1 nx ny nz firstx firsty firstz lastx lasty lastz     verification of the coherence between the array s size and the defined by domdef domain      IF ny EQ 1 THEN niveaux   reform niveaux  nx  ny   over     taille   size niveaux     if taille 0  NE 2 then return  report le champ en entree doit contenir un tableau 2d     case 1 of       taille 1  eq jpi and taille 2  eq jpj:niveaux niveaux firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du champ     endcase       We transform the 2d leval array in 3d mask array      mask   reform  niveaux 1 indgen nz 1  nx  ny  nz      mask   floor temporary mask    1    mask   temporary mask temporary maskterre           if keyword_set key_performance  THEN print   temps level2mask  systime 1 tempsun     return  mask end"); 
    190 a[188] = new Array("./ToBeReviewed/CALCULS/moyenne.html", "moyenne.pro", "", "             file_comments     averages a 2  or 3 d field over a selected             geographical area and along one ore more      selected axes  x  y or z       categories      param TAB  in required    2 or 3d field      param DIREC  in required     x   y   z   xy   xz   yz  or  xyz       keyword BOXZOOM      xmin xmax ymin ymax  zmin zmax  to more details  see domdef   boxzoom can have 5 forms:     vert2   vert1  vert2 lon1  lon2  lat1  lat2       lon1  lon2  lat1  lat2  vert2 lon1  lon2  lat1  lat2  vert1 vert2       keyword NAN    not a number  we activate it if we want to average without considerate some masked values of TAB    If masked values of TAB are values consecrated by IDL values f_nan  wr just have to put NAN    If masked values of TAB are valued a  a must be different of 1  corresponding to nan      values f_nan and of 0  which desactivate nan  We have to put NAN a     Comment: In output  rsult points which are NAN will be valued a or  values f_nan                   keyword NODOMDEF   We activate it if we do not want to pass in domdef even if the keyword boxzoom    is present  like when grossemoyenne is called via checkfield       keyword INTEGRATION    To make an integral rather than an average       keyword WDEPTH    to specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W                    returns   An array       uses   common   domdef      restrictions Put values corresponding to land at 1 e20      history    Jerome Vialard  jv lodyc jussieu fr   2 7 98                         Sebastien Masson  smasson lodyc jussieu fr                          14 8 98                         15 1 98                         11 3 99 adaptation for NAN                         28 7 99 Averages 1d arrays      version    Id       function moyenne  tab  direc  BOXZOOM   boxzoom  INTEGRATION   integration                       NAN   nan  NODOMDEF   nodomdef  WDEPTH   wdepth                       _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             To key_performance    I  preliminaries     dirt   0   dirx   0   diry   0   dirz   0     I 1  Directions s  we follow to integrate     if   strpos direc   t  ge 0   then dirt   1   if   strpos direc   x  ge 0   then dirx   1   if   strpos direc   y  ge 0   then diry   1   if   strpos direc   z  ge 0   then dirz   1   if  dirx eq 0 and diry eq 0 and dirz eq 0  then return  tab     I 2  verification of the input array s size     taille   size tab    case 1 of     taille 0  eq 1 :dim    1d      taille 0  eq 2 :BEGIN       dim    2d        if dirx eq 0 and diry eq 0 then return  tab     END     taille 0  eq 3 :BEGIN       dim    3d        if dirx eq 0 and diry eq 0 and dirz eq 0 then return  tab     END     else : return  report Le tableau d entree doit etre a 2 ou 3 dimensions s il contient une dim temporelle utiliser grossemoyenne    endcase       I 3  Obtainment of scale s factors and of the mask on the subdomain concernedby the average    Redefinition of the domain ajusted at boxzoom  at 6 elements    This will allowed us to calculate only in the domain concerned by the average    Domdef  followed by grid give us all arrays of the grid on the subdomain      if keyword_set boxzoom  then BEGIN      Case 1 Of       N_Elements Boxzoom  Eq 1:bte    lon1  lon2  lat1  lat2  0  boxzoom 0        N_Elements Boxzoom  Eq 2:bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1        N_Elements Boxzoom  Eq 4:bte    Boxzoom  vert1  vert2        N_Elements Boxzoom  Eq 5:bte    Boxzoom 0:3  0  Boxzoom 4        N_Elements Boxzoom  Eq 6:bte   Boxzoom       Else: return  report Mauvaise Definition de Boxzoom      endcase     if NOT keyword_set nodomdef  then BEGIN        savedbox   1b       saveboxparam   boxparam4moyenne dat        domdef  bte  GRIDTYPE   vargrid  _extra   ex     ENDIF    ENDIF      attribution of the mask and of longitude and latitude arrays      IF vargrid EQ  W  THEN wdepth   1   grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz  e1  e2  e3  WDEPTH   wdepth       II  Case of the 1d array       if dim EQ  1d  then BEGIN     if n_elements tab  NE nx ny AND n_elements tab  NE nx ny nz then BEGIN       if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat        return  report Probleme d adequation entre les tailles du domaine et de la boxzoom      ENDIF     case 1 of       nx EQ 1 AND ny EQ 1:BEGIN  vector following z         case n_elements tab  of           jpk:res   tab firstz:lastz            nz:res   tab           ELSE:BEGIN              if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat              return  report Probleme d adequation entre les tailles du domaine et de la boxzoom            END         ENDCASE         if dirz EQ 1 then BEGIN            dim    3d             taille   size reform res  nx  ny  nz          ENDIF ELSE BEGIN           if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat            return  res         ENDELSE        END       ny EQ 1:BEGIN              vector following x         case n_elements tab  of           jpi:res   tab firstx:lastx            nx:res   tab           ELSE:BEGIN              if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat              return  report Probleme d adequation entre les tailles du domaine et de la boxzoom            END         ENDCASE         if dirx EQ 1 then BEGIN            dim    2d             taille   size reform res  nx  ny          ENDIF ELSE BEGIN            if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat            return  res         ENDELSE       END       nx EQ 1:BEGIN              vector following y         case n_elements tab  of           jpj:res   tab firsty:lasty            ny:res   tab           ELSE:BEGIN              if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat              return  report Probleme d adequation entre les tailles du domaine et de la boxzoom            END         ENDCASE         if diry EQ 1 then BEGIN           dim    2d            taille   size reform res  nx  ny          ENDIF ELSE BEGIN            if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat            return  res         ENDELSE        END     endcase   endif       II  Case of the 2d array       if  dim eq  2d  then begin       II 1  verification of the coherence of the array s size to average   Verification of the coherence between the array s size and the domain defined by domdef   The input array must have either the total domain s size  jpi jpj  or this    one of the reduced domain  nx ny        case 1 of       taille 1  eq jpi and taille 2  eq jpj:           res   tab firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:res   tab       else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny  strtrim nx  1 strtrim ny  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1        END     ENDCASE     if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      If nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 then BEGIN        res   reform res  nx  ny   over        e1    reform e1  nx  ny   over        e2    reform e2  nx  ny   over      endif     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN         mask    reform mask  nx  ny  nz   over      II 3  Different types of average       mask   mask    0      if keyword_set nan  NE 0 then msknan   finite res  ELSE msknan    1     case 1 of        dirx eq 1  and  diry eq 0  : begin         e   e1 mask         if keyword_set integration  then divi   1           else begin            divi   e           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if ny EQ 1 then divi   reform divi  nx  ny   over            divi   total divi  1          endelse         res   res e         if ny EQ 1 then res   reform res  nx  ny   over          res   total res  1  nan   nan divi   1          if msknan 0  NE  1 then begin           testnan    msknan mask           if ny EQ 1 then testnan   reform testnan  nx  ny   over            testnan   total testnan  1 total mask  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  : begin         e   e2 mask         if keyword_set integration  then divi   1           else begin            divi   e           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if ny EQ 1 then divi   reform divi  nx  ny   over            divi   total divi  2          endelse         res   res e         if ny EQ 1 then res   reform res  nx  ny   over          res   total res  2  nan   nan divi   1          if msknan 0  NE  1 then begin           testnan    msknan mask           if ny EQ 1 then testnan    reform testnan  nx  ny   over            testnan   total testnan  2 total mask  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  : begin         if keyword_set integration  then divi   1 else BEGIN            IF msknan 0  NE  1 THEN divi   total e1 e2 mask msknan              ELSE divi   total e1 e2 mask          ENDELSE          res   total res e1 e2 mask  nan   nan divi   1          if msknan 0  NE  1 then begin           testnan    msknan mask           testnan   total testnan total mask  EQ 0          endif       end     endcase   endif       III  Case 3d arrays series  tab4d        if  dim eq  3d  then begin     III 1  Verification of the coherence of the array to average size    Verification of the coherence between the array s size and the domain    defind by domdef    The input array must have either the total domain size  jpi jpj jpk     or this one of the reduced domain  nx ny ny        case 1 of       taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpk:           res   tab firstx:lastx  firsty:lasty  firstz:lastz        taille 1  eq jpi and taille 2  eq jpj and taille 3  eq nz:           res   tab firstx:lastx  firsty:lasty          taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq nz :res   tab       taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpk :           res   tab    firstz:lastz        else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny nz  strtrim nx  1 strtrim ny  1 strtrim nz  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1 strtrim taille 3  1        END     endcase     if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      if nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 OR nz EQ 1 then BEGIN        res   reform res  nx  ny  nz   over        e1    reform e1  nx  ny   over        e2    reform e2  nx  ny   over      endif     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN         mask    reform mask  nx  ny  nz   over      IF keyword_set key_partialstep  THEN BEGIN   the top of the ocean floor is       IF vargrid EQ  T  OR vargrid EQ  W  THEN bottom   total mask  3          ELSE bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3     we suppress columns with only ocean or land        good   where bottom NE 0 AND bottom NE nz    the bottom of the ocean in 3D index is:       bottom   lindgen nx ny temporary bottom 1L nx ny       IF good 0  NE  1 THEN bottom   bottom good          ELSE bottom    1     ENDIF ELSE bottom    1     III 2  different average types       if keyword_set nan  NE 0 then msknan   finite res  ELSE msknan    1     case 1 of        dirx eq 1  and  diry eq 0  and  dirz eq 0  : begin         e13   e1 replicate 1  nz          e13   reform e13  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           msknan bottom    0           res bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 else begin           divi   e13 mask           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total divi  1          ENDELSE         res   res e13 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total res  1  nan   nan divi   1          e13   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total testnan  1 total mask  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 0  : begin         e23   e2 replicate 1  nz          e23   reform e23  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           msknan bottom    0           res bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 else begin           divi   e23 mask           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total divi  2          ENDELSE         res   res e23 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total res  2  nan   nan divi   1          e23   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan   reform testnan  nx  ny  nz   over            testnan   total testnan  2 total mask  2  EQ 0          endif       end        dirx eq 0  and  diry eq 0  and  dirz eq 1  : begin         e33   replicate 1  1 nx ny e3         e33   reform e33  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e33 bottom     e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e33 bottom     e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else begin           divi   e33 mask           if msknan 0  NE  1 then divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total divi  3          ENDELSE         res   res e33 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total res  3  nan   nan divi   1          e33   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total testnan  3 total mask  3  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 0  : begin         e123    e1 e2 replicate 1  nz          e123   reform e123  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           msknan bottom    0           res bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 else BEGIN            divi   e123 mask           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total total divi  1  1          ENDELSE         res   res e123 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total total res  1  nan   nan  1  nan   nan     divi   1          e123   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total total testnan  1  1 total total mask  1  1  EQ 0          endif       end        dirx eq 1  and  diry eq 0  and  dirz eq 1  : begin         e133   e1 e3         e133   reform e133  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e133 bottom     e1 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e133 bottom     e1 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else BEGIN            divi   e133 mask           if msknan 0  NE  1 then divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total total divi  1  2          ENDELSE         res   res e133 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total total res  1  nan   nan  2  nan   nan     divi   1          e133   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total total testnan  1  2 total total mask  1  2  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 1  : begin         e233   e2 e3         e233   reform e233  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e233 bottom     e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e233 bottom     e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else BEGIN            divi   e233 mask           if msknan 0  NE  1 then divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total total divi  2  2          ENDELSE         res   res e233 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total total res  2  nan   nan  2  nan   nan     divi   1          e233   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total total testnan  2  2 total total mask  2  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 1  : begin         e1233    e1 e2 e3         e1233   reform e1233  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e1233 bottom     e1 e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e1233 bottom     e1 e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else BEGIN            if msknan 0  NE  1 then divi   total e1233 mask msknan              ELSE divi   total e1233 mask          ENDELSE         res   total res e1233 mask  nan   nan     divi   1          e1233   1         if msknan 0  NE  1 then begin           testnan    msknan mask           testnan   total testnan total mask  EQ 0          endif       end     endcase   endif      IV   finishing       IV 1  We mask land by a value equal to 1 e 20     valmask   1e 20   terre   where divi EQ 0    IF terre 0  NE  1 THEN BEGIN     res terre    1e 20   ENDIF       IV 2  We replace  when nan equal 1   values f_nan by nan     if keyword_set nan  NE 0 then BEGIN      puttonan   where testnan EQ 0      if puttonan 0  NE  1 then res puttonan     values f_nan     if nan NE 1 then BEGIN        notanumber   where finite res  eq 0        if notanumber 0  NE  1 then res notanumber    nan     ENDIF   ENDIF     IV 3  We replace in the domain whch was defined at the entry of average     if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat      if keyword_set key_performance  THEN print   temps moyenne  systime 1 tempsun    return  res     end"); 
    191 a[189] = new Array("./ToBeReviewed/CALCULS/norme.html", "norme.pro", "", "             file_comments    calculate the norme of a field of vectors  then make a possible average      Comment 1: The field of vector can be  2d:xy  3d: xyz or xyt    4d: xyzt     Comment 2:   The calculation of the norme is made before the possible spatial or    temporal average because the average of the norme is not equal to the    norme of averages       categories   Post traitment calculation      param COMPOSANTEU  in required    an 2d  3d or 4d array      param COMPOSANTEV  in required    an 2d  3d or 4d array      keyword BOXZOOM   boxzoom on which do the average  by default the domain selected    by the last domdef done       keyword DIREC    t   x   y   z   xys   xz   yz   xyz   xt   yt   zt   xyt           xzt   yzt   xyzt  Direction on which do averages       returns   Array to trace with plt  pltz or pltt       uses   common pro      restrictions    The norme is calculated on points TTo do this calculation  we average    field U and Von points T before calculate the norme  At the edge of    coast and of domain  we can not calculate fields U and V at points T     that is why these points are at value  values f_nan        When we calculate on a reduce geographic domain  field U and V have not    necessarily the same number of point  In this case  we recut U and V to    keep only common points  We profit of this to redo a domdef which redefine    a geographic domain on which fields U and V are extracted on same points      restrictions   To know what type of array we work with  we  test its size and dates    gave by time 0  and time jpt 1  to know if thee is a temporal dimension     Before to start norme  make sure that time and jpt are defined how    they have to        examples   To calculate the average of the norme of streams on all the domain    between 0 et 50:        IDL  res norme un vn boxzoom 0 50 dir xyz       history   Sebastien Masson  smasson lodyc jussieu fr                          9 6 1999      version    Id            FUNCTION norme  composanteu  composantev  BOXZOOM   boxzoom  DIREC   direc  _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            To key_performance      IF finite glamu 0 finite gphiu 0 finite glamv 0 finite gphiv 0  EQ 0 THEN        return  report This version of norme is based on Arakawa C grid                            U and V grids must therefore be defined        if keyword_set boxzoom  then BEGIN      Case 1 Of       N_Elements Boxzoom  Eq 1:bte    lon1  lon2  lat1  lat2  0  boxzoom 0        N_Elements Boxzoom  Eq 2:bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1        N_Elements Boxzoom  Eq 4:bte    Boxzoom  vert1  vert2        N_Elements Boxzoom  Eq 5:bte    Boxzoom 0:3  0  Boxzoom 4        N_Elements Boxzoom  Eq 6:bte   Boxzoom       Else: return  report Mauvaise Definition de Boxzoom      ENDCASE     domdef  boxzoom   ENDIF       if NOT keyword_set direc  then direc   0   construction of u and v at points T    u   litchamp composanteu     v   litchamp composantev     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     vargrid T     varname    norme      valmask   1e20      grilleu   litchamp composanteu   grid     if grilleu EQ   then grilleu    U     grillev   litchamp composantev   grid     if grillev EQ   then grillev    V     IF grilleu EQ  V  AND grillev EQ  U  THEN inverse   1    IF grilleu EQ  T  AND grillev EQ  T  THEN BEGIN        interpolle    0        return  report cas non code mais facile a faire     ENDIF ELSE interpolle   1    if keyword_set inverse  then begin       rien   u       u   v       v   rien    endif       We find common points between u and v      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           indice3d   lindgen jpi  jpj  jpk           indice3d   indice3d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt      extraction of u and v on the appropriated domain            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                 case  size u 3  OF                   nzt: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                   jpk:BEGIN                       if nxu NE nx then                         if indicex 0  EQ firstxu then u   u 0:nx 1   firstzt:lastzt  ELSE u   u 1: nx   firstzt:lastzt                        IF nxv NE nx THEN                         if indicex 0  EQ firstxv then v   v 0:nx 1   firstzt:lastzt  ELSE v   v 1: nx   firstzt:lastzt                       IF nyu NE ny THEN                         if indicey 0  EQ firstyu then u   u  0:ny 1 firstzt:lastzt  ELSE u   u  1: ny firstzt:lastzt                        IF nyv NE ny THEN                         if indicey 0  EQ firstyv then v   v  0:ny 1 firstzt:lastzt  ELSE v   v  1: ny firstzt:lastzt                    end                   ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs                 endcase             END              size u 1  EQ jpi AND  size u 2  EQ jpj AND  size u 3  EQ jpk AND                 size v 1  EQ jpi AND  size v 2  EQ jpj AND  size u 3  EQ jpk :BEGIN                 u   u indice3d                 v   v indice3d              END             ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     We reshape u and v to make sure that no dimension has been erased            if nzt EQ 1 then begin             u   reform u  nx  ny  nzt   over              v   reform v  nx  ny  nzt   over           endif     construction of u and v at points T            a u 0           u u shift u 1 0 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 0 2           if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution of the mask and of logitude and latitude arrays            mask   tmask indice3d           if nzt EQ 1 then mask   reform mask  nx  ny  nzt   over             if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0   values f_nan          res 0   values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN res mask    valmask   All kind of average          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   moyenne res direc nan  boxzoom   boxzoom   nodomdef          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 of u and v on the appropriated domain            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:return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     construction of u and v at points T            a u 0           u u shift u 1 0 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 0 2           if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution of the mask and of longitude and latitude arrays    We recover the complete grid to establish a big mask extent in the four    direction to cover pointsfor which a land point has been    considerated  make a small drawing             mask   tmask indice2d jpi jpj firstzt           if ny EQ 1 then mask   reform mask  nx  ny   over      construction of land containing all points to mask            if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0   values f_nan          res 0   values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN BEGIN              coeftps   lindgen jpt nx ny             coeftps   replicate 1  n_elements mask coeftps             mask    temporary mask replicate 1  jpt              mask  temporary mask    temporary coeftps              res temporary mask    valmask          ENDIF   moyennes en tous genres          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   grossemoyenne res direc nan  boxzoom   boxzoom   nodomdef        END      xyzt           date1 NE date2 AND  size u 0  EQ 4:BEGIN           indice2d   lindgen jpi  jpj           indice2d   indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1           indice3d   lindgen jpi  jpj  jpk           indice3d   indice3d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt      extraction of u and v on the appropriated domain            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                 case  size u 3  OF                   nzt: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                   jpk:BEGIN                       if nxu NE nx then                         if indicex 0  EQ firstxu then u   u 0:nx 1   firstzt:lastzt  ELSE u   u 1: nx   firstzt:lastzt                        IF nxv NE nx THEN                         if indicex 0  EQ firstxv then v   v 0:nx 1   firstzt:lastzt  ELSE v   v 1: nx   firstzt:lastzt                       IF nyu NE ny THEN                         if indicey 0  EQ firstyu then u   u  0:ny 1 firstzt:lastzt  ELSE u   u  1: ny firstzt:lastzt                        IF nyv NE ny THEN                         if indicey 0  EQ firstyv then v   v  0:ny 1 firstzt:lastzt  ELSE v   v  1: ny firstzt:lastzt                    end                   ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs                 endcase             END              size u 1  EQ jpi AND  size u 2  EQ jpj AND  size u 3  EQ jpk AND                 size v 1  EQ jpi AND  size v 2  EQ jpj AND  size u 3  EQ jpk :BEGIN                 u   u indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt                   v   v indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt                END             ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     construction of u and v at points T            a u 0           u u shift u 1 0 0 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 0 0 2           if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution of the mask and of logitude and latitude arrays            mask   tmask indice3d           if nzt EQ 1 then mask   reform mask  nx  ny  nzt   over             if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0     values f_nan          res 0     values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN BEGIN              coeftps   lindgen jpt nx ny nzt             coeftps   replicate 1  n_elements mask coeftps             mask    temporary mask replicate 1  jpt              mask  temporary mask    temporary coeftps              res temporary mask    valmask          ENDIF   All kind of average          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   grossemoyenne res direc nan  boxzoom   boxzoom   nodomdef        END      xy           ELSE:BEGIN                 xy          indice2d   lindgen jpi  jpj           indice2d   indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1      extraction of u and v on the appropriated domain            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 indice2d                 v   v indice2d              END             ELSE:return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     We reshape u and v to make sure that no dimension has been erased            if ny EQ 1 then begin             u   reform u  nx  ny   over              v   reform v  nx  ny   over           endif     construction of u and v at points 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 of the mask and of longitude and latitude arrays    We recover the complete grid to establish a big mask extent in the four    direction to cover pointsfor which a land point has been    considerated  make a small drawing             mask   tmask indice2d jpi jpj firstzt           if nyt EQ 1 THEN mask   reform mask  nx  ny   over      construction of land containing all points to mask            if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0 values f_nan          res 0 values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN res mask    valmask   All kind of average          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   moyenne res direc nan  boxzoom   boxzoom   nodomdef        END      endcase      if keyword_set key_performance  THEN print   temps norme  systime 1 tempsun     return  res end"); 
    192 a[190] = new Array("./ToBeReviewed/CALCULS/projectondepth.html", "projectondepth.pro", "", "             file_comments   Allows to project a 3d field following a depth array       categories   without loop      param ARRAYIN    It is a 3d array whose 3rd dimension must be equal to jpk       param DEPTHIN    It is a 2d array indicating for each point n  at which depth to project             returns   A 2d array which is the projection of the 3d array following depthes indicated by depthin      uses   common pro      restrictions    points at  values f_nan impossible calculation  Land points masked at valmask       examples   we build a possible depthes array     IDL  a gdept jpk 1 1 jpi jpj findgen jpi jpj    We build an array to project on these depthes  For the test    we build a 3d array whose each vector following z is the depth       IDL  arraytest replicate 1 jpi jpj gdept     IDL  arraytest reform arraytest jpi jpj jpk   over    We test the projection of the depth array on the depth      IDL  plt  1e6 a projectondepth arraytest a nocontour      null field at 1e 6 pres       verifcation projecting the temperature of 20 C for example       history   Sebastien Masson  smasson lodyc jussieu fr                         15 6 2000      version    Id            FUNCTION projectondepth  arrayin  depthin     compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common      depth   litchamp depthin     array   litchamp arrayin    Small verifications    tailledepth   size depth     taillearray   size array     if tailledepth 0  NE 2 THEN return  report Depth array must have 2 dimensions     if taillearray 0  NE 3 THEN return  report Array in must have 3 dimensions    verification of the coherence between array s size and the domain     grille  mask   1   1   1 nx ny nz firstx firsty firstz lastx lasty lastz    case 1 of       tailledepth 1  eq jpi and tailledepth 2  eq jpj:depth depth firstx:lastx  firsty:lasty        tailledepth 1  eq  nx and tailledepth 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du tableau de profondeur     endcase    case 1 OF       taillearray 3  NE jpk:return  report Le tableau 3d doit avoir sa 3eme dimension egale a jpk        taillearray 1  eq jpi and taillearray 2  eq jpj:array array firstx:lastx  firsty:lasty          taillearray 1  eq  nx and taillearray 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du tableau de profondeur     endcase     c est parti      flevel   depth2floatlevel depth    we delete points at  values f_nan    notanumber   where finite flevel   nan  EQ 1     if notanumber 0  NE  1 then flevel notanumber    0   we sill  delete land points at valmask for example     flevel   0   flevel    jpk 1       indexup   level2index floor flevel     indexlow   nx ny indexup    out   where indexlow GE nx ny jpk 1     if out 0  NE  1 then indexlow out    indexlow out nx ny      weight   flevel floor flevel     res   array indexup     res   res weight array indexlow res      We put back points at  values f_nan    if notanumber 0  NE  1 then res notanumber     values f_nan    if out 0  NE  1 then res out     values f_nan   We mask land points at valmask    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      if keyword_set key_performance  THEN print   temps projectondepth  systime 1 tempsun     return  res end"); 
     185a[183] = new Array("./ToBeReviewed/CALCULS/grossemoyenne.html", "grossemoyenne.pro", "", "             file_comments     averages a 3  or 4 d time serie field over a selected   geographical area or along the time axis  For one ore more   selected axes  x  y  z  t       categories      param TAB  in required    3 or 4d field      param DIREC  in required     x   y   z   t   xy   xz   yz   xyz   xt   yt   zt     xyt   xzt   yzt  or  xyzt        keyword BOXZOOM      xmin xmax ymin ymax  zmin zmax  to more details  see domdef   boxzoom can have 5 forms:     vert2   vert1  vert2 lon1  lon2  lat1  lat2       lon1  lon2  lat1  lat2  vert2 lon1  lon2  lat1  lat2  vert1 vert2                    keyword NAN    not a number  we activate it if we want to average without considerate some masked values of TAB    If masked values of TAB are values consecrated by IDL values f_nan  wr just have to put NAN    If masked values of TAB are valued a  a must be different of 1  corresponding to nan      values f_nan and of 0  which desactivate nan  We have to put NAN a     Comment: In output  rsult points which are NAN will be valued a or  values f_nan                   keyword NODOMDEF   We activate it if we do not want to pass in domdef even if the keyword boxzoom    is present  like when grossemoyenne is called via checkfield       keyword INTEGRATION    To make an integral rather than an average      keyword SPATIALFIRST    when performing at the same time   spatial and temporal mean  grossemoyenne is assuming   that the mask is not changing with the time  In   consequence  grossemoyenne performs temporal mean   first and then call moyenne  Activate  SPATIALFIRST if   you want to perform the spatial mean before the   temporal mean  Note that if NAN is activated  then   SPATIALFIRST is activated automatically       keyword TEMPORALFIRST    to force to perform first temporal   mean even if nan is activated  see SPATIALFIRST   explanations          keyword WDEPTH    to specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W        uses   result:un tableau    common   domdef      restrictions Put values corresponding to land at 1 e20      history    Jerome Vialard  jv lodyc jussieu fr   2 7 98                         Sebastien Masson  smasson lodyc jussieu fr    adaptation array containing a temporal dimension                          14 8 98                         15 1 98                         12 3 99 adaptation for NAN and utilisation of TEMPORARY      version    Id: grossemoyenne pro 142 2006 07 21 12:47:49Z navarro      function grossemoyenne  tab  direc  BOXZOOM   boxzoom  INTEGRATION   integration                             NAN   nan  NODOMDEF   nodomdef  WDEPTH   wdepth                             SPATIALFIRST   spatialfirst  TEMPORALFIRST   temporalfirst                             _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    I  preliminaries     dirt   0   dirx   0   diry   0   dirz   0   dim     aa      I 1  Directions s  we follow to integrate     if   strpos direc   t  ge 0   then dirt   1   if   strpos direc   x  ge 0   then dirx   1   if   strpos direc   y  ge 0   then diry   1   if   strpos direc   z  ge 0   then dirz   1   IF keyword_set NAN  AND  dirx EQ 1 OR diry EQ 1 OR dirz EQ 1        THEN spatialfirst   1   IF keyword_set temporalfirst  THEN spatialfirst   0     I 2  verification of the input array s size     taille   size tab    case 1 of     taille 0  eq 1 :return   report Le tableau n a qu une dimension  cas non traite      taille 0  eq 2 :return   report Le tableau n a qu deux dimension  cas non traite      taille 0  eq 3 :BEGIN        dim    3d        if dirx eq 0 and diry eq 0 and dirt eq 0 then return  tab     END     taille 0  eq 4 :BEGIN        dim    4d        if dirx eq 0 and diry eq 0 and dirz eq 0 and dirt eq 0 then return  tab     END     else : return  report Le tableau d entree doit etre a 3 ou 4 dimensions s il ne contient pas de dim temporelle utiliser moyenne    endcase       I 3  Obtainment of scale s factors and of the mask on the subdomain concernedby the average    Redefinition of the domain ajusted at boxzoom  at 6 elements    This will allowed us to calculate only in the domain concerned by the average    Domdef  followed by grid give us all arrays of the grid on the subdomain      if keyword_set boxzoom  then BEGIN      Case 1 Of       N_Elements Boxzoom  Eq 1: bte    lon1  lon2  lat1  lat2  0  boxzoom 0        N_Elements Boxzoom  Eq 2: bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1        N_Elements Boxzoom  Eq 4: bte    Boxzoom  vert1  vert2        N_Elements Boxzoom  Eq 5: bte    Boxzoom 0:3  0  Boxzoom 4        N_Elements Boxzoom  Eq 6: bte   Boxzoom       Else: return  report Wrong Definition of Boxzoom      endcase     if NOT keyword_set nodomdef  then BEGIN        savedbox   1b       saveboxparam   boxparam4grmoyenne dat        domdef  bte  GRIDTYPE   vargrid  _extra   ex     ENDIF    ENDIF      attribution of the mask and of longitude and latitude arrays      grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz  e1  e2  e3  WDEPTH   wdepth     I 4  if dirt equal 1  we make the temporal average and we send it in moyenne     if dirt EQ 1 AND NOT keyword_set spatialfirst  then begin     if dim EQ 3d then BEGIN        case 1 of         taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpt:             res   tab firstx:firstx nx 1                         firsty:firsty ny 1            taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpt:res   tab         else:BEGIN            if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat            return  report Probleme d adequation entre les tailles du domaine nx ny jpt  strtrim nx  1 strtrim ny  1 strtrim jpt  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1 strtrim taille 3  1          END       ENDCASE       if keyword_set integration  then begin         res   total res  3  nan   nan        ENDIF ELSE BEGIN         if keyword_set nan  then BEGIN           divi   finite res            divi   total temporary divi  3            notanum   where divi EQ 0            res   total res  3  nan   keyword_set nan   1   divi            if notanum 0  NE  1 then res temporary notanum     values f_nan         ENDIF ELSE res   total res  3 1 taille 3         ENDELSE     ENDIF ELSE BEGIN       case 1 of         taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpk and taille 4  eq jpt:             res   tab firstx:lastx  firsty:lasty  firstz:lastz            taille 1  eq jpi and taille 2  eq jpj and taille 3  eq nz and taille 4  eq jpt:             res   tab firstx:lastx  firsty:lasty              taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq nz and taille 4  eq jpt:res   tab         taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpk and taille 4  eq jpt:             res   tab    firstz:lastz            else:BEGIN             if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat            return  report Probleme d adequation entre les tailles du domaine nx ny nz jpt                               strtrim nx  1 strtrim ny  1 strtrim nz  1                              strtrim jpt  1  et du tableau  strtrim taille 1  1                              strtrim taille 2  1 strtrim taille 3  1                              strtrim taille 4  1          END         endcase       if keyword_set integration  then begin         res   total res  4  nan   nan        ENDIF ELSE BEGIN         if keyword_set nan  then begin           divi   finite res            divi   total temporary divi  4            notanum   where divi EQ 0            res   total res  4   nan 1   divi            if notanum 0  NE  1 then res temporary notanum     values f_nan         ENDIF ELSE res   total res  4 1 taille 4        ENDELSE     ENDELSE     if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return   moyenne temporary res  direc  BOXZOOM   boxzoom  NAN   nan  INTEGRATION   integration  NODOMDEF   nodomdef  WDEPTH   wdepth  _extra   ex    ENDIF ELSE res   tab   IF jpt EQ 1 THEN BEGIN     if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return  moyenne reform res   over  direc  BOXZOOM   boxzoom  NAN   nan  INTEGRATION   integration  NODOMDEF   nodomdef  WDEPTH   wdepth  _extra   ex    END       II  Case 2d arrays series  tab3d        if  dim eq  3d  then begin       II 1  verification of the coherence of the array s size to average   Verification of the coherence between the array s size and the domain defined by domdef   The input array must have either the total domain s size  jpi jpj jpt  or this    one of the reduced domain  nx ny jpt        case 1 of       taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpt:           res   tab firstx:firstx nx 1                       firsty:firsty ny 1          taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpt:res   tab       else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny jpt  strtrim nx  1 strtrim ny  1 strtrim jpt  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1 strtrim taille 3  1        enD     endcase     if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      If nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 then BEGIN        res   reform res  nx  ny  jpt   over        e1    reform e1  nx  ny   over        e2    reform e2  nx  ny   over      endif     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN         mask    reform mask  nx  ny  nz   over      II 3  Different types of average       if keyword_set nan  NE 0 then msknan   finite res  ELSE msknan    1     mask   mask    0      case 1 of        dirx eq 1  and  diry eq 0  : begin         e   temporary e1 temporary mask          echelle    temporary e replicate 1  jpt          echelle   reform echelle  nx  ny  jpt   over          if keyword_set integration  then divi   1 ELSE BEGIN            IF msknan 0  NE  1 THEN divi   total echelle msknan  1              ELSE divi   total echelle  1          ENDELSE         res   total temporary res echelle  1  nan   nan divi   1          if msknan 0  NE  1 then BEGIN           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  1                 total temporary echelle  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  : begin         e   temporary e2 temporary mask          if nx EQ 1 OR ny EQ 1 then e   reform e  nx  ny   over          echelle    temporary e replicate 1  jpt          echelle   reform echelle  nx  ny  jpt   over          if keyword_set integration  then divi   1 ELSE BEGIN            IF msknan 0  NE  1 THEN divi   total echelle msknan  2              ELSE divi   total echelle  2          ENDELSE          res   total temporary res echelle  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  2                 total temporary echelle  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  : begin         echelle    temporary e1 temporary e2 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  jpt   over          if keyword_set integration  then divi   1 ELSE BEGIN            IF msknan 0  NE  1 THEN divi   total total echelle msknan  1  1              ELSE divi   total total echelle  1  1          ENDELSE         res   total temporary total temporary res echelle  1  nan   nan  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  1  1                 total total temporary echelle  1  1  EQ 0          endif       end     endcase   endif       III  Case 3d arrays series  tab4d      if  dim eq  4d  then begin     III 1  Verification of the coherence of the array to average size    Verification of the coherence between the array s size and the domain    defind by domdef    The input array must have either the total domain size  jpi jpj jpk jpt     or this one of the reduced domain  nx ny ny jpt        case 1 of       taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpk and taille 4  eq jpt:           res   tab firstx:lastx  firsty:lasty  firstz:lastz          taille 1  eq jpi and taille 2  eq jpj and taille 3  eq nz and taille 4  eq jpt:           res   tab firstx:lastx  firsty:lasty            taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq nz and taille 4  eq jpt:res   tab       taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpk and taille 4  eq jpt:           res   tab    firstz:lastz          else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny nz jpt                             strtrim nx  1 strtrim ny  1 strtrim nz  1                            strtrim jpt  1  et du tableau  strtrim taille 1  1                            strtrim taille 2  1 strtrim taille 3  1                            strtrim taille 4  1        END     endcase     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 OR jpt EQ 1 then res   reform res  nx  ny  nz  jpt   over      if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      if nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 OR nz EQ 1 then BEGIN        res   reform res  nx  ny  nz  jpt   over        mask    reform mask  nx  ny  nz   over      ENDIF     IF keyword_set key_partialstep  THEN BEGIN   the top of the ocean floor is       IF vargrid EQ  T  OR vargrid EQ  W  THEN bottom   total mask  3          ELSE bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3     we suppress columns with only ocean or land        good   where bottom NE 0 AND bottom NE nz    the bottom of the ocean in 3D index is:       bottom   lindgen nx ny temporary bottom 1L nx ny       IF good 0  NE  1 THEN bottom   bottom good          ELSE bottom    1     ENDIF ELSE bottom    1     III 2  different average types       IF keyword_set nan  NE 0 THEN msknan   finite res  ELSE msknan    1     case 1 of        dirx eq 1  and  diry eq 0  and  dirz eq 0  : BEGIN         e13    temporary e1 replicate 1  nz          e13   reform e13  nx  ny  nz   over          echelle    temporary e13 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz  jpt              nan   1           ENDIF           bottom   bottom replicate 1  jpt      4D bottom                replicate 1  n_elements bottom nx ny nz lindgen jpt            msknan bottom    0           res temporary bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total echelle msknan  1              ELSE divi   total echelle  1          endelse         res   temporary res echelle         res   total temporary res  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  1                 total temporary echelle  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 0  : begin         e23   temporary e2 replicate 1  nz          e23   reform e23  nx  ny  nz   over          echelle    temporary e23 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           bottom   bottom replicate 1  jpt      4D bottom                replicate 1  n_elements bottom nx ny nz lindgen jpt            msknan bottom    0           res temporary bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total echelle msknan  2              ELSE divi   total echelle  2          endelse         res   total temporary res echelle  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  2                 total temporary echelle  2  EQ 0          endif       end        dirx eq 0  and  diry eq 0  and  dirz eq 1  : begin         e33   replicate 1  1 nx ny e3         e33   reform e33  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e33 bottom     e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e33 bottom     e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e33 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total echelle msknan  3              ELSE divi   total echelle  3          endelse         res   total temporary res echelle  3  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total temporary testnan  3                 total temporary echelle  3  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 0  : begin         e13   e1 replicate 1  nz          e13   reform e13  nx  ny  nz   over          e23   e2 replicate 1  nz          e23   reform e23  nx  ny  nz   over          echelle    temporary e13 temporary e23 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           bottom   bottom replicate 1  jpt      4D bottom                replicate 1  n_elements bottom nx ny nz lindgen jpt            msknan bottom    0           res temporary bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total echelle msknan  1  1              ELSE divi   total total echelle  1  1          endelse         res   total total temporary res echelle  1  nan   nan  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  1  1                 total total temporary echelle  1  1  EQ 0          endif       end        dirx eq 1  and  diry eq 0  and  dirz eq 1  : begin         e133   e1 e3         IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e133 bottom     e1 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e133 bottom     e1 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e133 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total echelle msknan  1  2              ELSE divi   total total echelle  1  2          endelse         res   total total temporary res echelle  1  nan   nan  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  1  2                 total total temporary echelle  1  2  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 1  : begin         e233   e2 e3         IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e233 bottom     e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e233 bottom     e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e233 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total echelle msknan  2  2              ELSE divi   total total echelle  2  2          endelse         res   total total temporary res echelle  2  nan   nan  2  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total temporary testnan  2  2                 total total temporary echelle  2  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 1  : begin         e1233    e1 e2 e3         IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e1233 bottom     e1 e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e1233 bottom     e1 e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         echelle    temporary e1233 temporary mask replicate 1  jpt          echelle   reform echelle  nx  ny  nz  jpt   over          if keyword_set integration  then divi   1 ELSE begin            IF msknan 0  NE  1 THEN divi   total total total echelle msknan  1  1  1              ELSE divi   total total total echelle  1  1  1          endelse         res   total total total temporary res echelle  1  nan   nan  1  nan   nan  1  nan   nan divi   1          if msknan 0  NE  1 then begin           echelle   temporary echelle  NE 0           testnan   temporary msknan echelle           testnan   total total total temporary testnan  1  1  1                 total total total temporary echelle  1  1  1  EQ 0          endif       end     endcase   endif     if dirt EQ 1 AND keyword_set spatialfirst  then BEGIN     IF  reverse size res   dimension 0  NE jpt THEN BEGIN       print   the last dimension of res is not equal to jpt:  strtrim jpt  2        if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat        return   1     ENDIF     tdim   size res   n_dimensions      if keyword_set integration  then res   total res  tdim  nan   nan        ELSE BEGIN        if keyword_set nan  then BEGIN          testnan   testnan  divi      ENDELSE    ENDIF      IV   finishing       IV 1  We mask land by a value equal to 1 e 20     valmask   1e 20   terre   where divi EQ 0    IF terre 0  NE  1 THEN BEGIN      res temporary terre    1e 20   ENDIF      IV 2  We replace  when nan equal 1   values f_nan by nan     if keyword_set nan  NE 0 then BEGIN      puttonan   where temporary testnan  EQ 0      if puttonan 0  NE  1 then res temporary puttonan     values f_nan     if nan NE 1 then BEGIN        notanumber   where finite res  eq 0        if notanumber 0  NE  1 then res temporary notanumber    nan     ENDIF   ENDIF     IV 3  We replace in the domain whch was defined at the entry of average     if keyword_set savedbox  THEN restoreboxparam   boxparam4grmoyenne dat      if keyword_set key_performance  THEN print   temps grossemoyenne  systime 1 tempsun    return  res     end"); 
     186a[184] = new Array("./ToBeReviewed/CALCULS/hdyn.html", "hdyn.pro", "", "             file_comments   Calculate the height by rapport to a reference state for a depth reference     See keywords for different possibilities  By default  the state reference    is rho 1020 and the depth reference is gdepw ka  with ka the first W level    directly above 1000 m        categories   Post traiment calculation      param TABSN  in required    array representing the salinity      param TABTN  in required    array representing the temperature Has the same size than SN      keyword GILL We activate this key if we want to calculate the dinamic height    like in the GILL page 215  which means by rapport to a reference state which    vary in depth and which is determinated by a reference temperature tref at 0 C    and a reference salinity sref at 35psu      keyword LEVEL   It is the same reference level to take  This level is defined like    that gdepw level  is the reference depth       keyword SREF    Give a value to this keyword to change the reference salinity used in the    calculation when GILL  is activated           keyword TREF   Give a value to this keyword to change the reference temperature used in the    calculation when GILL  is activated        keyword PROFREF   Give a depth to this keyword which will be considerated as the refeence depth     in this case  LEVEL has not any effect  the calculation will be effectuated    until this depth effecting an interpolation between the the last W level above    PROFREF and PROFREF       keyword SURFACE_LEVEL    It is the level where we wan to calculate the dynamic height  By default  it is    the level 0       returns   An array of the same size of sn and tn representing the dynamic height calculated    from a reference depth nd by rapport to a reference state       uses    common pro      restrictions   Points for which we can not calculate the dynamic height  whose the batymetry    is less deep than the reference depth  are put at the value  values f_nan      restrictions   approximation: The pressure in decibars is equal to the depth in meters  the pressure increase of 1bar all 10m       history   Sebastien Masson  smasson lodyc jussieu fr       version    Id: hdyn pro 142 2006 07 21 12:47:49Z navarro             FUNCTION hdyn   tabsn  tabtn  TREF   tref   SREF   sref  PROFREF   profref  LEVEL   level  GILL   gill  SURFACE_LEVEL   surface_level     compile_opt idl2  strictarrsubs      tempsun   systime 1            for key_performance  common     if NOT keyword_set surface_level  then surface_level   0   useful if GILL is activated    if NOT keyword_set tref  then tref   0     if NOT keyword_set sref  then sref   35    If needed  we determinate the reference depth and the W level situated directly above     if keyword_set profref  then begin       rien   where gdepw LE profref  level        level   level 1       za   gdepw level     ENDIF ELSE BEGIN        if NOT keyword_set level  then BEGIN           rien   where gdepw LE 1000  level           level   level 1       ENDIF       profref   gdepw level        za   profref    ENDELSE     tailles   size tabsn     taillet   size tabtn     if total tailles 0:tailles 0  NE taillet 0:taillet 0  NE 0 then       return   report Les tableaux sn et tn doivent avoir la meme taille     if tailles 3  NE jpk then return  report La dim verticale des tableaux sn et tn doit etre egalre a jpk     nx   nxt    ny   nyt    case  size tabsn 0  OF       3:BEGIN           case 1 of             tailles 1  eq jpi and tailles 2  eq jpj: BEGIN                sn   tabsn firstxt:lastxt  firstyt:lastyt                   tn   tabtn firstxt:lastxt  firstyt:lastyt                end             tailles 1  eq  nx and tailles 2  eq  ny:BEGIN                 sn   tabsn                tn   tabtn             end             else:return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if keyword_set gill  then             rhonref   rhon replicate sref nx  ny  jpk replicate tref nx  ny  jpk   insitu             ELSE rhonref   1020           vol rhonref rhon sn tn   insitu rhonref          e33d   replicate 1  nx ny e3t          e33d   reform e33d  nx  ny  jpk   over           terre   where tmask firstxt:lastxt  firstyt:lastyt    EQ 0           if terre 0  NE  1 then vol terre     values f_nan          case level of             0:hdyn  100 profref gdepw 0 vol    0              1:hdyn  100 vol e33d    0 profref gdepw 1 vol    1              ELSE:hdyn  100 total   vol e33d    surface_level: level 1  3                  profref gdepw level vol    level           endcase       END       4:BEGIN           case 1 of             tailles 1  eq jpi and tailles 2  eq jpj AND tailles 4  EQ jpt: BEGIN                sn   tabsn firstxt:lastxt  firstyt:lastyt                     tn   tabtn firstxt:lastxt  firstyt:lastyt                  end             tailles 1  eq  nx and tailles 2  eq  ny AND tailles 4  EQ jpt:BEGIN                 sn   tabsn                tn   tabtn             end             else:return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          if keyword_set gill  then             rhonref   rhon replicate sref nx  ny  jpk  jpt replicate tref nx  ny  jpk  jpt   insitu             ELSE rhonref   1020           vol rhonref rhon sn tn   insitu rhonref          e33d   replicate 1  nx ny e3t          e33d   e33d replicate 1  jpt           e33d   reform e33d  nx  ny  jpk  jpt   over           mask   tmask firstxt:lastxt  firstyt:lastyt             mask   mask replicate 1  jpt           terre   where mask EQ 0           if terre 0  NE  1 then vol terre     values f_nan          case level of             0:hdyn  100 profref gdepw 0 vol    0                1:hdyn  100 vol e33d    0   profref gdepw 1 vol    1                ELSE:hdyn  100 total   vol e33d    surface_level: level 1    3                  profref gdepw level vol    level             endcase       END       ELSE: return   report cas non code     ENDCASE    varunit    cm     varname    Dynamic Height  href strtrim round profref  1 m     IF keyword_set key_performance  THEN print   temps hdyn  systime 1 tempsun      return  hdyn end"); 
     187a[185] = new Array("./ToBeReviewed/CALCULS/level2depth.html", "level2depth.pro", "", "               file_comments   Allows to pass from a 2d level array to a 2d depth array corresponding o these levels      categories   Without loop      param TAB  in required    2d level array of sill levels  or a structure respecting litchamp criterions       keyword NOMASK   To do not mask land points       returns    2d array containing depthes      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999                         14 6 2000 accepte  values f_nan      version    Id: level2depth pro 142 2006 07 21 12:47:49Z navarro             FUNCTION level2depth  tab  NOMASK   nomask     compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common     Reading of the input field  and recovery of the used subdomain s size      niveaux   litchamp tab     grille mask   1   1 gdep nx ny nz firstx firsty firstz lastx lasty lastz     verification of the coherence between array s size and the domain definied by domdef      taille   size niveaux     if taille 0  NE 2 then return  report le champ en entree doit contenir un tableau 2d     case 1 of       taille 1  eq jpi and taille 2  eq jpj:niveaux niveaux firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du champ     endcase       wherenan   where finite niveaux   nan  EQ 1     if wherenan 0  NE  1 then niveaux wherenan    0    niveaux   0   niveaux    jpk 1       gdep   replicate 1  nx ny gdep    niveaux   lindgen nx ny nx ny niveaux    gdep   reform gdep niveaux  nx  ny       if wherenan 0  NE  1 then gdep wherenan     values f_nan    if NOT keyword_set nomask  then begin       if n_elements valmask  EQ 0 then valmask   1e20       terre   where mask    0  EQ 0        if terre 0  NE  1 then gdep terre    valmask    endif      if keyword_set key_performance  THEN print   temps level2depth  systime 1 tempsun     return  gdep end"); 
     188a[186] = new Array("./ToBeReviewed/CALCULS/level2index.html", "level2index.pro", "", "             file_comments    We want  from a 3d matrix  to extract a 2d  x y  array whose each element    has been extract from a level specified by the 2d level array  typically     we want to obtain the salinity along an isopycn we have repered by its level    level2index is a function who give  in function of level  a 2d indexes array    which will allow to extract the 2d array from the 3d array       categories   without loop      param LEVEL  in required    A 2d level array      returns   a 2d indexes array      history   Sebastien Masson  smasson lodyc jussieu fr                         24 11 1999      version    Id: level2index pro 142 2006 07 21 12:47:49Z navarro             FUNCTION level2index  level   An element of 3d array  whose the two first dimensions are nx and ny  whose    coordinates are i  j and k have for index in the same 3d array i   j nx   k nx ny    level given  for  each point of level  we know i  j et k    so we can calculate the index     compile_opt idl2  strictarrsubs      taille   size level     nx   taille 1     ny   taille 2    array k nx ny     tabknxny    nx ny long level         return  lindgen nx  ny tabknxny end"); 
     189a[187] = new Array("./ToBeReviewed/CALCULS/level2mask.html", "level2mask.pro", "", "             file_comments   Allow to pass from a 2d sill level array to the 3d mask array with 1s in    levels above the sill level and 0s below  and on it       categories    without loop      param TAB  in required    2d level array of sill level  or a structure respecting litchamp criterions       returns   It is a 3d array containing the mask associated to the 2d sill level array      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          17 6 1999   Setp 2004: boundary level have 0 values and not 1  as it was   explained before in the header  see:   print  array_equal niveau  total level2mask niveau 3         version    Id: level2mask pro 142 2006 07 21 12:47:49Z navarro             FUNCTION level2mask  tab       compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common     Reading of the input field and recovery of the size of the used subdomain      niveaux   litchamp tab     grille maskterre   1   1   1 nx ny nz firstx firsty firstz lastx lasty lastz     verification of the coherence between the array s size and the defined by domdef domain      IF ny EQ 1 THEN niveaux   reform niveaux  nx  ny   over     taille   size niveaux     if taille 0  NE 2 then return  report le champ en entree doit contenir un tableau 2d     case 1 of       taille 1  eq jpi and taille 2  eq jpj:niveaux niveaux firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du champ     endcase       We transform the 2d leval array in 3d mask array      mask   reform  niveaux 1 indgen nz 1  nx  ny  nz      mask   floor temporary mask    1    mask   temporary mask temporary maskterre           if keyword_set key_performance  THEN print   temps level2mask  systime 1 tempsun     return  mask end"); 
     190a[188] = new Array("./ToBeReviewed/CALCULS/moyenne.html", "moyenne.pro", "", "             file_comments     averages a 2  or 3 d field over a selected             geographical area and along one ore more      selected axes  x  y or z       categories      param TAB  in required    2 or 3d field      param DIREC  in required     x   y   z   xy   xz   yz  or  xyz       keyword BOXZOOM      xmin xmax ymin ymax  zmin zmax  to more details  see domdef   boxzoom can have 5 forms:     vert2   vert1  vert2 lon1  lon2  lat1  lat2       lon1  lon2  lat1  lat2  vert2 lon1  lon2  lat1  lat2  vert1 vert2       keyword NAN    not a number  we activate it if we want to average without considerate some masked values of TAB    If masked values of TAB are values consecrated by IDL values f_nan  wr just have to put NAN    If masked values of TAB are valued a  a must be different of 1  corresponding to nan      values f_nan and of 0  which desactivate nan  We have to put NAN a     Comment: In output  rsult points which are NAN will be valued a or  values f_nan                   keyword NODOMDEF   We activate it if we do not want to pass in domdef even if the keyword boxzoom    is present  like when grossemoyenne is called via checkfield       keyword INTEGRATION    To make an integral rather than an average       keyword WDEPTH    to specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W                    returns   An array       uses   common   domdef      restrictions Put values corresponding to land at 1 e20      history    Jerome Vialard  jv lodyc jussieu fr   2 7 98                         Sebastien Masson  smasson lodyc jussieu fr                          14 8 98                         15 1 98                         11 3 99 adaptation for NAN                         28 7 99 Averages 1d arrays      version    Id: moyenne pro 142 2006 07 21 12:47:49Z navarro        function moyenne  tab  direc  BOXZOOM   boxzoom  INTEGRATION   integration                       NAN   nan  NODOMDEF   nodomdef  WDEPTH   wdepth                       _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             To key_performance    I  preliminaries     dirt   0   dirx   0   diry   0   dirz   0     I 1  Directions s  we follow to integrate     if   strpos direc   t  ge 0   then dirt   1   if   strpos direc   x  ge 0   then dirx   1   if   strpos direc   y  ge 0   then diry   1   if   strpos direc   z  ge 0   then dirz   1   if  dirx eq 0 and diry eq 0 and dirz eq 0  then return  tab     I 2  verification of the input array s size     taille   size tab    case 1 of     taille 0  eq 1 :dim    1d      taille 0  eq 2 :BEGIN       dim    2d        if dirx eq 0 and diry eq 0 then return  tab     END     taille 0  eq 3 :BEGIN       dim    3d        if dirx eq 0 and diry eq 0 and dirz eq 0 then return  tab     END     else : return  report Le tableau d entree doit etre a 2 ou 3 dimensions s il contient une dim temporelle utiliser grossemoyenne    endcase       I 3  Obtainment of scale s factors and of the mask on the subdomain concernedby the average    Redefinition of the domain ajusted at boxzoom  at 6 elements    This will allowed us to calculate only in the domain concerned by the average    Domdef  followed by grid give us all arrays of the grid on the subdomain      if keyword_set boxzoom  then BEGIN      Case 1 Of       N_Elements Boxzoom  Eq 1:bte    lon1  lon2  lat1  lat2  0  boxzoom 0        N_Elements Boxzoom  Eq 2:bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1        N_Elements Boxzoom  Eq 4:bte    Boxzoom  vert1  vert2        N_Elements Boxzoom  Eq 5:bte    Boxzoom 0:3  0  Boxzoom 4        N_Elements Boxzoom  Eq 6:bte   Boxzoom       Else: return  report Mauvaise Definition de Boxzoom      endcase     if NOT keyword_set nodomdef  then BEGIN        savedbox   1b       saveboxparam   boxparam4moyenne dat        domdef  bte  GRIDTYPE   vargrid  _extra   ex     ENDIF    ENDIF      attribution of the mask and of longitude and latitude arrays      IF vargrid EQ  W  THEN wdepth   1   grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz  e1  e2  e3  WDEPTH   wdepth       II  Case of the 1d array       if dim EQ  1d  then BEGIN     if n_elements tab  NE nx ny AND n_elements tab  NE nx ny nz then BEGIN       if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat        return  report Probleme d adequation entre les tailles du domaine et de la boxzoom      ENDIF     case 1 of       nx EQ 1 AND ny EQ 1:BEGIN  vector following z         case n_elements tab  of           jpk:res   tab firstz:lastz            nz:res   tab           ELSE:BEGIN              if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat              return  report Probleme d adequation entre les tailles du domaine et de la boxzoom            END         ENDCASE         if dirz EQ 1 then BEGIN            dim    3d             taille   size reform res  nx  ny  nz          ENDIF ELSE BEGIN           if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat            return  res         ENDELSE        END       ny EQ 1:BEGIN              vector following x         case n_elements tab  of           jpi:res   tab firstx:lastx            nx:res   tab           ELSE:BEGIN              if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat              return  report Probleme d adequation entre les tailles du domaine et de la boxzoom            END         ENDCASE         if dirx EQ 1 then BEGIN            dim    2d             taille   size reform res  nx  ny          ENDIF ELSE BEGIN            if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat            return  res         ENDELSE       END       nx EQ 1:BEGIN              vector following y         case n_elements tab  of           jpj:res   tab firsty:lasty            ny:res   tab           ELSE:BEGIN              if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat              return  report Probleme d adequation entre les tailles du domaine et de la boxzoom            END         ENDCASE         if diry EQ 1 then BEGIN           dim    2d            taille   size reform res  nx  ny          ENDIF ELSE BEGIN            if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat            return  res         ENDELSE        END     endcase   endif       II  Case of the 2d array       if  dim eq  2d  then begin       II 1  verification of the coherence of the array s size to average   Verification of the coherence between the array s size and the domain defined by domdef   The input array must have either the total domain s size  jpi jpj  or this    one of the reduced domain  nx ny        case 1 of       taille 1  eq jpi and taille 2  eq jpj:           res   tab firstx:lastx  firsty:lasty        taille 1  eq  nx and taille 2  eq  ny:res   tab       else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny  strtrim nx  1 strtrim ny  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1        END     ENDCASE     if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      If nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 then BEGIN        res   reform res  nx  ny   over        e1    reform e1  nx  ny   over        e2    reform e2  nx  ny   over      endif     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN         mask    reform mask  nx  ny  nz   over      II 3  Different types of average       mask   mask    0      if keyword_set nan  NE 0 then msknan   finite res  ELSE msknan    1     case 1 of        dirx eq 1  and  diry eq 0  : begin         e   e1 mask         if keyword_set integration  then divi   1           else begin            divi   e           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if ny EQ 1 then divi   reform divi  nx  ny   over            divi   total divi  1          endelse         res   res e         if ny EQ 1 then res   reform res  nx  ny   over          res   total res  1  nan   nan divi   1          if msknan 0  NE  1 then begin           testnan    msknan mask           if ny EQ 1 then testnan   reform testnan  nx  ny   over            testnan   total testnan  1 total mask  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  : begin         e   e2 mask         if keyword_set integration  then divi   1           else begin            divi   e           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if ny EQ 1 then divi   reform divi  nx  ny   over            divi   total divi  2          endelse         res   res e         if ny EQ 1 then res   reform res  nx  ny   over          res   total res  2  nan   nan divi   1          if msknan 0  NE  1 then begin           testnan    msknan mask           if ny EQ 1 then testnan    reform testnan  nx  ny   over            testnan   total testnan  2 total mask  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  : begin         if keyword_set integration  then divi   1 else BEGIN            IF msknan 0  NE  1 THEN divi   total e1 e2 mask msknan              ELSE divi   total e1 e2 mask          ENDELSE          res   total res e1 e2 mask  nan   nan divi   1          if msknan 0  NE  1 then begin           testnan    msknan mask           testnan   total testnan total mask  EQ 0          endif       end     endcase   endif       III  Case 3d arrays series  tab4d        if  dim eq  3d  then begin     III 1  Verification of the coherence of the array to average size    Verification of the coherence between the array s size and the domain    defind by domdef    The input array must have either the total domain size  jpi jpj jpk     or this one of the reduced domain  nx ny ny        case 1 of       taille 1  eq jpi and taille 2  eq jpj and taille 3  eq jpk:           res   tab firstx:lastx  firsty:lasty  firstz:lastz        taille 1  eq jpi and taille 2  eq jpj and taille 3  eq nz:           res   tab firstx:lastx  firsty:lasty          taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq nz :res   tab       taille 1  EQ  nx and taille 2  eq  ny and taille 3  eq jpk :           res   tab    firstz:lastz        else:BEGIN          if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat          return  report Probleme d adequation entre les tailles du domaine nx ny nz  strtrim nx  1 strtrim ny  1 strtrim nz  1  et du tableau  strtrim taille 1  1 strtrim taille 2  1 strtrim taille 3  1        END     endcase     if keyword_set nan  NE 0 then BEGIN        if nan NE 1 then BEGIN      if nan is not  values f_nan    we put it at  values f_nan         if abs nan  LT 1e6 then notanumber   where res EQ nan            ELSE notanumber   where abs res  GT abs nan 10          if notanumber 0  NE  1 then res temporary notanumber     values f_nan       ENDIF     ENDIF     Comment : WE HAVE TO BE CAREFUL ABOUT CASES WHERE THE DIMENSION TO AVERAGE   1     AND MAKE SURE THAT IT EXIST  THAT IS WHY WE USE reform nx ny  WHICH CAN    LOOK USELESS AT THE BEGINNING       if nx EQ 1 OR ny EQ 1 OR nz EQ 1 then BEGIN        res   reform res  nx  ny  nz   over        e1    reform e1  nx  ny   over        e2    reform e2  nx  ny   over      endif     if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN         mask    reform mask  nx  ny  nz   over      IF keyword_set key_partialstep  THEN BEGIN   the top of the ocean floor is       IF vargrid EQ  T  OR vargrid EQ  W  THEN bottom   total mask  3          ELSE bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3     we suppress columns with only ocean or land        good   where bottom NE 0 AND bottom NE nz    the bottom of the ocean in 3D index is:       bottom   lindgen nx ny temporary bottom 1L nx ny       IF good 0  NE  1 THEN bottom   bottom good          ELSE bottom    1     ENDIF ELSE bottom    1     III 2  different average types       if keyword_set nan  NE 0 then msknan   finite res  ELSE msknan    1     case 1 of        dirx eq 1  and  diry eq 0  and  dirz eq 0  : begin         e13   e1 replicate 1  nz          e13   reform e13  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           msknan bottom    0           res bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 else begin           divi   e13 mask           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total divi  1          ENDELSE         res   res e13 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total res  1  nan   nan divi   1          e13   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total testnan  1 total mask  1  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 0  : begin         e23   e2 replicate 1  nz          e23   reform e23  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           msknan bottom    0           res bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 else begin           divi   e23 mask           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total divi  2          ENDELSE         res   res e23 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total res  2  nan   nan divi   1          e23   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan   reform testnan  nx  ny  nz   over            testnan   total testnan  2 total mask  2  EQ 0          endif       end        dirx eq 0  and  diry eq 0  and  dirz eq 1  : begin         e33   replicate 1  1 nx ny e3         e33   reform e33  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e33 bottom     e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e33 bottom     e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else begin           divi   e33 mask           if msknan 0  NE  1 then divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total divi  3          ENDELSE         res   res e33 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total res  3  nan   nan divi   1          e33   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total testnan  3 total mask  3  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 0  : begin         e123    e1 e2 replicate 1  nz          e123   reform e123  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1             AND nx ny NE 1 THEN BEGIN           IF msknan 0  EQ  1 THEN BEGIN              msknan   replicate 1b  nx  ny  nz              nan   1           endif           msknan bottom    0           res bottom     values f_nan         ENDIF         if keyword_set integration  then divi   1 else BEGIN            divi   e123 mask           IF msknan 0  NE  1 THEN divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total total divi  1  1          ENDELSE         res   res e123 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total total res  1  nan   nan  1  nan   nan     divi   1          e123   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total total testnan  1  1 total total mask  1  1  EQ 0          endif       end        dirx eq 1  and  diry eq 0  and  dirz eq 1  : begin         e133   e1 e3         e133   reform e133  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e133 bottom     e1 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e133 bottom     e1 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else BEGIN            divi   e133 mask           if msknan 0  NE  1 then divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total total divi  1  2          ENDELSE         res   res e133 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total total res  1  nan   nan  2  nan   nan     divi   1          e133   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total total testnan  1  2 total total mask  1  2  EQ 0          endif       end        dirx eq 0  and  diry eq 1  and  dirz eq 1  : begin         e233   e2 e3         e233   reform e233  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e233 bottom     e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e233 bottom     e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else BEGIN            divi   e233 mask           if msknan 0  NE  1 then divi   temporary divi msknan           if nz EQ 1 then divi   reform divi  nx  ny  nz   over            divi   total total divi  2  2          ENDELSE         res   res e233 mask         if nz EQ 1 then res   reform res  nx  ny  nz   over          res   total total res  2  nan   nan  2  nan   nan     divi   1          e233   1         if msknan 0  NE  1 then begin           testnan    msknan mask           if nz EQ 1 then testnan    reform testnan  nx  ny  nz   over            testnan   total total testnan  2  2 total total mask  2  2  EQ 0          endif       end        dirx eq 1  and  diry eq 1  and  dirz eq 1  : begin         e1233    e1 e2 e3         e1233   reform e1233  nx  ny  nz   over          IF keyword_set key_partialstep  AND bottom 0  NE  1 THEN BEGIN           IF keyword_set wdepth  THEN               e1233 bottom     e1 e2 e3w_ps firstx:lastx  firsty:lasty temporary good              ELSE e1233 bottom     e1 e2 e3t_ps firstx:lastx  firsty:lasty temporary good          ENDIF         if keyword_set integration  then divi   1 else BEGIN            if msknan 0  NE  1 then divi   total e1233 mask msknan              ELSE divi   total e1233 mask          ENDELSE         res   total res e1233 mask  nan   nan     divi   1          e1233   1         if msknan 0  NE  1 then begin           testnan    msknan mask           testnan   total testnan total mask  EQ 0          endif       end     endcase   endif      IV   finishing       IV 1  We mask land by a value equal to 1 e 20     valmask   1e 20   terre   where divi EQ 0    IF terre 0  NE  1 THEN BEGIN     res terre    1e 20   ENDIF       IV 2  We replace  when nan equal 1   values f_nan by nan     if keyword_set nan  NE 0 then BEGIN      puttonan   where testnan EQ 0      if puttonan 0  NE  1 then res puttonan     values f_nan     if nan NE 1 then BEGIN        notanumber   where finite res  eq 0        if notanumber 0  NE  1 then res notanumber    nan     ENDIF   ENDIF     IV 3  We replace in the domain whch was defined at the entry of average     if keyword_set savedbox  THEN restoreboxparam   boxparam4moyenne dat      if keyword_set key_performance  THEN print   temps moyenne  systime 1 tempsun    return  res     end"); 
     191a[189] = new Array("./ToBeReviewed/CALCULS/norme.html", "norme.pro", "", "             file_comments    calculate the norme of a field of vectors  then make a possible average      Comment 1: The field of vector can be  2d:xy  3d: xyz or xyt    4d: xyzt     Comment 2:   The calculation of the norme is made before the possible spatial or    temporal average because the average of the norme is not equal to the    norme of averages       categories   Post traitment calculation      param COMPOSANTEU  in required    an 2d  3d or 4d array      param COMPOSANTEV  in required    an 2d  3d or 4d array      keyword BOXZOOM   boxzoom on which do the average  by default the domain selected    by the last domdef done       keyword DIREC    t   x   y   z   xys   xz   yz   xyz   xt   yt   zt   xyt           xzt   yzt   xyzt  Direction on which do averages       returns   Array to trace with plt  pltz or pltt       uses   common pro      restrictions    The norme is calculated on points TTo do this calculation  we average    field U and Von points T before calculate the norme  At the edge of    coast and of domain  we can not calculate fields U and V at points T     that is why these points are at value  values f_nan        When we calculate on a reduce geographic domain  field U and V have not    necessarily the same number of point  In this case  we recut U and V to    keep only common points  We profit of this to redo a domdef which redefine    a geographic domain on which fields U and V are extracted on same points      restrictions   To know what type of array we work with  we  test its size and dates    gave by time 0  and time jpt 1  to know if thee is a temporal dimension     Before to start norme  make sure that time and jpt are defined how    they have to        examples   To calculate the average of the norme of streams on all the domain    between 0 et 50:        IDL  res norme un vn boxzoom 0 50 dir xyz       history   Sebastien Masson  smasson lodyc jussieu fr                          9 6 1999      version    Id: norme pro 142 2006 07 21 12:47:49Z navarro             FUNCTION norme  composanteu  composantev  BOXZOOM   boxzoom  DIREC   direc  _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            To key_performance      IF finite glamu 0 finite gphiu 0 finite glamv 0 finite gphiv 0  EQ 0 THEN        return  report This version of norme is based on Arakawa C grid                            U and V grids must therefore be defined        if keyword_set boxzoom  then BEGIN      Case 1 Of       N_Elements Boxzoom  Eq 1:bte    lon1  lon2  lat1  lat2  0  boxzoom 0        N_Elements Boxzoom  Eq 2:bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1        N_Elements Boxzoom  Eq 4:bte    Boxzoom  vert1  vert2        N_Elements Boxzoom  Eq 5:bte    Boxzoom 0:3  0  Boxzoom 4        N_Elements Boxzoom  Eq 6:bte   Boxzoom       Else: return  report Mauvaise Definition de Boxzoom      ENDCASE     domdef  boxzoom   ENDIF       if NOT keyword_set direc  then direc   0   construction of u and v at points T    u   litchamp composanteu     v   litchamp composantev     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     vargrid T     varname    norme      valmask   1e20      grilleu   litchamp composanteu   grid     if grilleu EQ   then grilleu    U     grillev   litchamp composantev   grid     if grillev EQ   then grillev    V     IF grilleu EQ  V  AND grillev EQ  U  THEN inverse   1    IF grilleu EQ  T  AND grillev EQ  T  THEN BEGIN        interpolle    0        return  report cas non code mais facile a faire     ENDIF ELSE interpolle   1    if keyword_set inverse  then begin       rien   u       u   v       v   rien    endif       We find common points between u and v      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           indice3d   lindgen jpi  jpj  jpk           indice3d   indice3d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt      extraction of u and v on the appropriated domain            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                 case  size u 3  OF                   nzt: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                   jpk:BEGIN                       if nxu NE nx then                         if indicex 0  EQ firstxu then u   u 0:nx 1   firstzt:lastzt  ELSE u   u 1: nx   firstzt:lastzt                        IF nxv NE nx THEN                         if indicex 0  EQ firstxv then v   v 0:nx 1   firstzt:lastzt  ELSE v   v 1: nx   firstzt:lastzt                       IF nyu NE ny THEN                         if indicey 0  EQ firstyu then u   u  0:ny 1 firstzt:lastzt  ELSE u   u  1: ny firstzt:lastzt                        IF nyv NE ny THEN                         if indicey 0  EQ firstyv then v   v  0:ny 1 firstzt:lastzt  ELSE v   v  1: ny firstzt:lastzt                    end                   ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs                 endcase             END              size u 1  EQ jpi AND  size u 2  EQ jpj AND  size u 3  EQ jpk AND                 size v 1  EQ jpi AND  size v 2  EQ jpj AND  size u 3  EQ jpk :BEGIN                 u   u indice3d                 v   v indice3d              END             ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     We reshape u and v to make sure that no dimension has been erased            if nzt EQ 1 then begin             u   reform u  nx  ny  nzt   over              v   reform v  nx  ny  nzt   over           endif     construction of u and v at points T            a u 0           u u shift u 1 0 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 0 2           if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution of the mask and of logitude and latitude arrays            mask   tmask indice3d           if nzt EQ 1 then mask   reform mask  nx  ny  nzt   over             if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0   values f_nan          res 0   values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN res mask    valmask   All kind of average          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   moyenne res direc nan  boxzoom   boxzoom   nodomdef          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 of u and v on the appropriated domain            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:return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     construction of u and v at points T            a u 0           u u shift u 1 0 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 0 2           if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution of the mask and of longitude and latitude arrays    We recover the complete grid to establish a big mask extent in the four    direction to cover pointsfor which a land point has been    considerated  make a small drawing             mask   tmask indice2d jpi jpj firstzt           if ny EQ 1 then mask   reform mask  nx  ny   over      construction of land containing all points to mask            if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0   values f_nan          res 0   values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN BEGIN              coeftps   lindgen jpt nx ny             coeftps   replicate 1  n_elements mask coeftps             mask    temporary mask replicate 1  jpt              mask  temporary mask    temporary coeftps              res temporary mask    valmask          ENDIF   moyennes en tous genres          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   grossemoyenne res direc nan  boxzoom   boxzoom   nodomdef        END      xyzt           date1 NE date2 AND  size u 0  EQ 4:BEGIN           indice2d   lindgen jpi  jpj           indice2d   indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1           indice3d   lindgen jpi  jpj  jpk           indice3d   indice3d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt      extraction of u and v on the appropriated domain            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                 case  size u 3  OF                   nzt: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                   jpk:BEGIN                       if nxu NE nx then                         if indicex 0  EQ firstxu then u   u 0:nx 1   firstzt:lastzt  ELSE u   u 1: nx   firstzt:lastzt                        IF nxv NE nx THEN                         if indicex 0  EQ firstxv then v   v 0:nx 1   firstzt:lastzt  ELSE v   v 1: nx   firstzt:lastzt                       IF nyu NE ny THEN                         if indicey 0  EQ firstyu then u   u  0:ny 1 firstzt:lastzt  ELSE u   u  1: ny firstzt:lastzt                        IF nyv NE ny THEN                         if indicey 0  EQ firstyv then v   v  0:ny 1 firstzt:lastzt  ELSE v   v  1: ny firstzt:lastzt                    end                   ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs                 endcase             END              size u 1  EQ jpi AND  size u 2  EQ jpj AND  size u 3  EQ jpk AND                 size v 1  EQ jpi AND  size v 2  EQ jpj AND  size u 3  EQ jpk :BEGIN                 u   u indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt                   v   v indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 firstzt:lastzt                END             ELSE: return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     construction of u and v at points T            a u 0           u u shift u 1 0 0 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 0 0 2           if NOT keyword_set key_periodic  OR nx NE jpi then v 0 a     attribution of the mask and of logitude and latitude arrays            mask   tmask indice3d           if nzt EQ 1 then mask   reform mask  nx  ny  nzt   over             if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0     values f_nan          res 0     values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN BEGIN              coeftps   lindgen jpt nx ny nzt             coeftps   replicate 1  n_elements mask coeftps             mask    temporary mask replicate 1  jpt              mask  temporary mask    temporary coeftps              res temporary mask    valmask          ENDIF   All kind of average          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   grossemoyenne res direc nan  boxzoom   boxzoom   nodomdef        END      xy           ELSE:BEGIN                 xy          indice2d   lindgen jpi  jpj           indice2d   indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1      extraction of u and v on the appropriated domain            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 indice2d                 v   v indice2d              END             ELSE:return  report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs           endcase     We reshape u and v to make sure that no dimension has been erased            if ny EQ 1 then begin             u   reform u  nx  ny   over              v   reform v  nx  ny   over           endif     construction of u and v at points 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 of the mask and of longitude and latitude arrays    We recover the complete grid to establish a big mask extent in the four    direction to cover pointsfor which a land point has been    considerated  make a small drawing             mask   tmask indice2d jpi jpj firstzt           if nyt EQ 1 THEN mask   reform mask  nx  ny   over      construction of land containing all points to mask            if n_elements valmask  EQ 0 THEN valmask   1e20          landu   where u GE valmask 10           if landu 0  NE  1 then u landu    0          landv   where v GE valmask 10           if landv 0  NE  1 then v landv    0          res sqrt u 2 v 2           if NOT keyword_set key_periodic  OR nx NE jpi then res 0 values f_nan          res 0 values f_nan          mask   where mask eq 0           IF mask 0  NE  1 THEN res mask    valmask   All kind of average          domdef   glamt indice2d 0  0   glamu indice2d nx 1  0 gphit indice2d 0  0   gphiv indice2d 0  ny 1  vert1  vert2   meme          if keyword_set direc  then res   moyenne res direc nan  boxzoom   boxzoom   nodomdef        END      endcase      if keyword_set key_performance  THEN print   temps norme  systime 1 tempsun     return  res end"); 
     192a[190] = new Array("./ToBeReviewed/CALCULS/projectondepth.html", "projectondepth.pro", "", "             file_comments   Allows to project a 3d field following a depth array       categories   without loop      param ARRAYIN    It is a 3d array whose 3rd dimension must be equal to jpk       param DEPTHIN    It is a 2d array indicating for each point n  at which depth to project             returns   A 2d array which is the projection of the 3d array following depthes indicated by depthin      uses   common pro      restrictions    points at  values f_nan impossible calculation  Land points masked at valmask       examples   we build a possible depthes array     IDL  a gdept jpk 1 1 jpi jpj findgen jpi jpj    We build an array to project on these depthes  For the test    we build a 3d array whose each vector following z is the depth       IDL  arraytest replicate 1 jpi jpj gdept     IDL  arraytest reform arraytest jpi jpj jpk   over    We test the projection of the depth array on the depth      IDL  plt  1e6 a projectondepth arraytest a nocontour      null field at 1e 6 pres       verifcation projecting the temperature of 20 C for example       history   Sebastien Masson  smasson lodyc jussieu fr                         15 6 2000      version    Id: projectondepth pro 142 2006 07 21 12:47:49Z navarro             FUNCTION projectondepth  arrayin  depthin     compile_opt idl2  strictarrsubs      tempsun   systime 1            To key_performance  common      depth   litchamp depthin     array   litchamp arrayin    Small verifications    tailledepth   size depth     taillearray   size array     if tailledepth 0  NE 2 THEN return  report Depth array must have 2 dimensions     if taillearray 0  NE 3 THEN return  report Array in must have 3 dimensions    verification of the coherence between array s size and the domain     grille  mask   1   1   1 nx ny nz firstx firsty firstz lastx lasty lastz    case 1 of       tailledepth 1  eq jpi and tailledepth 2  eq jpj:depth depth firstx:lastx  firsty:lasty        tailledepth 1  eq  nx and tailledepth 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du tableau de profondeur     endcase    case 1 OF       taillearray 3  NE jpk:return  report Le tableau 3d doit avoir sa 3eme dimension egale a jpk        taillearray 1  eq jpi and taillearray 2  eq jpj:array array firstx:lastx  firsty:lasty          taillearray 1  eq  nx and taillearray 2  eq  ny:       else:return  report Probleme d adequation entre les tailles du domaine et celle du tableau de profondeur     endcase     c est parti      flevel   depth2floatlevel depth    we delete points at  values f_nan    notanumber   where finite flevel   nan  EQ 1     if notanumber 0  NE  1 then flevel notanumber    0   we sill  delete land points at valmask for example     flevel   0   flevel    jpk 1       indexup   level2index floor flevel     indexlow   nx ny indexup    out   where indexlow GE nx ny jpk 1     if out 0  NE  1 then indexlow out    indexlow out nx ny      weight   flevel floor flevel     res   array indexup     res   res weight array indexlow res      We put back points at  values f_nan    if notanumber 0  NE  1 then res notanumber     values f_nan    if out 0  NE  1 then res out     values f_nan   We mask land points at valmask    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      if keyword_set key_performance  THEN print   temps projectondepth  systime 1 tempsun     return  res end"); 
    193193a[191] = new Array("./ToBeReviewed/CALCULS/remplit.html", "remplit.pro", "", "          Extrapole zinout jpi jpj  sur les continents en utilisant les 4     plus proches voisins masques oceaniquement et construit un nouveau     masque     contenant l ancien masque oceanique PLUSles points extrapoles      Reitere le processus niter fois      C est pas clair  essayez                   Nan: to fill the point which have the value       values f_nan  Whitout this keyword  these point are not filling      and stays at  values f_nan         todo seb     FUNCTION remplit  zinput  NAN   nan  NITER   niter  BASIQUE   basique  mask   mask  FILLXDIR   fillxdir  FILLYDIR   fillydir  FILLVAL   fillval  _extra   ex     compile_opt idl2  strictarrsubs    common   tempsun   systime 1             pour key_performance   les points non remplis sont masques a valmask   IF n_elements niter  EQ 0 THEN niter   1   IF niter EQ 0 THEN return  zinput   z   zinput   if n_elements key_gridtype  EQ 0 then key_gridtype    c    if keyword_set basique  then begin     oldkey_gridtype   key_gridtype     key_gridtype    c      nx    size zinput 1      ny    size zinput 2      if NOT keyword_set mask  then mmmask   basique ELSE mmmask   mask     if  key_gridtype eq  e  then begin       case vargrid of          T :glam   glamt firstxt:lastxt  firstyt:lastyt           U :glam   glamu firstxu:lastxu  firstyu:lastyu        endcase     endif   ENDIF ELSE grille  mmmask  glam  gphi  gdep  nx  ny  nz  _extra   ex   if keyword_set mask  then mmmask   mask     if  size mmmask 0  EQ 3 THEN mmmask   mmmask    0      if n_elements mmmask  EQ 1 then mmmask   replicate 1b  nx  ny    if keyword_set nan  then begin     nanpoint   where finite z  EQ 0      if nanpoint 0  NE  1 then begin       mmmask nanpoint    0b       z nanpoint    0     endif   ENDIF   mmmask   byte mmmask      on ajoute un cadre de zero a z  mask  e1  e2   comme ca apres on peut faire des shifts ds tous les sens sans se   soucier des bords du domaine      tempdeux   systime 1            pour key_performance  2   nx2   nx 2   case key_gridtype of      c :BEGIN       ztmp   bytarr nx 2  ny 2        ztmp 1:nx  1:ny    mmmask       mmmask   temporary ztmp        ztmp   fltarr nx 2  ny 2        ztmp 1:nx  1:ny    z       if keyword_set key_periodic  AND nx EQ jpi then begin         ztmp 0  1:ny    z jpi 1            ztmp nx 1  1:ny    z 0          endif       z   temporary ztmp      END      e :BEGIN       ztmp   bytarr nx 2  ny 4        ztmp 1:nx  2:ny 1    mmmask       mmmask   temporary ztmp        ztmp   fltarr nx 2  ny 4        ztmp 1:nx  2:ny 1    z       if keyword_set key_periodic  AND nx EQ jpi then begin         ztmp 0  2:ny 1    z jpi 1            ztmp nx 1  2:ny 1    z 0          endif       z   temporary ztmp      END   endcase   IF testvar var   key_performance  EQ 2 THEN       print   temps remplit: on ajoute un cadre de zero   systime 1 tempdeux       iteration        FOR n   1  niter DO BEGIN    on trouve les points coast     tempdeux   systime 1          pour key_performance  2   les points du bord du cadre ne doivent pas etre selectionnes comme   la coast     case key_gridtype of        c :BEGIN         mmmask 0      1b         mmmask nx 1      1b         mmmask  0    1b         mmmask  ny 1    1b       END        e :BEGIN         mmmask 0      1b         mmmask nx 1      1b         mmmask  0:1    1b         mmmask  ny 2:ny 3    1b       END     endcase   liste des points terre restant     IF keyword_set fillxdir  THEN BEGIN   we stop if all the lines  that contains data  have been filled       test   total mmmask 1:nx    1        IF total test EQ 0 test EQ nx  EQ ny 2 THEN GOTO  fini     ENDIF     IF keyword_set fillydir  THEN BEGIN   we stop if all the columns  that contains data  have been filled       test   total mmmask  1:ny  2        IF total test EQ 0 test EQ ny  EQ nx 2 THEN GOTO  fini     ENDIF     land   where mmmask EQ 0      if land 0  EQ  1 then GOTO  fini   les points du bord du cadre doivent maintenant etre dans la terre     case key_gridtype of        c :BEGIN         mmmask 0      0b         mmmask nx 1      0b         mmmask  0    0b         mmmask  ny 1    0b       END        e :BEGIN         mmmask 0      0b         mmmask nx 1      0b         mmmask  0:1    0b         mmmask  ny 2:ny 3    0b       END     endcase     if keyword_set key_periodic  AND nx EQ jpi then begin       mmmask 0      mmmask nx          mmmask nx 1      mmmask 1        endif   liste des voisins mer     case key_gridtype of        c :BEGIN         CASE 1 OF           keyword_set fillxdir :weight   mmmask 1 land mmmask 1 land            keyword_set fillydir :weight   mmmask nx2 land mmmask nx2 land            ELSE:weight   mmmask 1 land mmmask 1 land mmmask nx2 land mmmask nx2 land                 1 sqrt 2 mmmask nx2 1 land mmmask nx2 1 land                              mmmask nx2 1 land mmmask nx2 1 land          ENDCASE       END        e :BEGIN         shifted   glam 0  0  LT glam 0  1          oddeven    land nx2 1 shifted  MOD 2         weight   mmmask 1 land mmmask 1 land               mmmask 2 nx2 land mmmask 2 nx2 land               sqrt 2 mmmask nx2 oddeven land mmmask nx2 1 oddeven land                         mmmask nx2 oddeven land mmmask nx2 1 oddeven land        END     endcase      ok   where weight GT 0      weight   weight ok      coast   land temporary ok        IF testvar var   key_performance  EQ 2 THEN         print   temps remplit: trouver la coast   systime 1 tempdeux     remplissage des points coast       tempdeux   systime 1          pour key_performance  2   on masque z     z   temporary z mmmask       case key_gridtype of        c :BEGIN         CASE 1 OF           keyword_set fillxdir :zcoast   z 1 coast z 1 coast            keyword_set fillydir :zcoast   z nx2 coast z nx2 coast            ELSE: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          ENDCASE       END        e :BEGIN         oddeven    coast nx2 1 shifted  MOD 2         zcoast   z 1 coast z 1 coast z 2 nx2 coast z 2 nx2 coast               sqrt 2 z nx2 oddeven coast z nx2 1 oddeven coast                         z nx2 oddeven coast z nx2 1 oddeven coast        END     endcase           z coast     temporary zcoast  temporary weight    we update the the boundary conditions of z     if keyword_set key_periodic  AND nx EQ jpi then begin       z 0      z nx          z nx 1      z 1        endif     IV  on reduit le masque       mmmask  temporary coast    1       IF testvar var   key_performance  EQ 2 THEN         print   temps remplit: une iteration   systime 1 tempdeux   ENDFOR  fini:     on masque les valeurs sur les lands restantes     IF n_elements valmask  EQ 0 then valmask   1e20   IF n_elements fillval  EQ 0 THEN fillval   valmask   z   temporary z mmmask   fillval 1b mmmask      on redecoupe le tableau pour retirer le cadre      case key_gridtype of      c :BEGIN       z   z 1:nx  1:ny      END      e :BEGIN       z   z 1:nx  2:ny 1      END   endcase     if keyword_set basique  then key_gridtype   oldkey_gridtype     if keyword_set key_performance  THEN print   temps remplit  systime 1 tempsun    return  z END  "); 
    194194a[192] = new Array("./ToBeReviewed/CALCULS/rhon.html", "rhon.pro", "", "            Calcul de la fonction d etat  issue de eos F            Creation : 1997   G  Roullet      adaptation pour les tableaux z zt xyz xyzt      par seb            todo seb     FUNCTION rhon  sn  tn  INSITU   insitu  SIGMA_N   sigma_n     compile_opt idl2  strictarrsubs    common    tempsun   systime 1            pour key_performance       sn    1e5   double sn   double tn    1e5         IF keyword_set sigma_n  then insitu   1     taille   size sn     case taille 0  of       0:BEGIN                    z          zrhop 0d          jkmax   1       END        1:BEGIN                    z          zrhop dblarr taille 1           jkmax   taille 1        END        2:BEGIN                    xy  jpt 1  ou zt          zrhop dblarr taille 1 taille 2           if jpt EQ 1 then jkmax   1 ELSE jkmax   taille 1        END        3:BEGIN                    xyz  jpt 1  ou xyt          zrhop dblarr taille 1 taille 2 taille 3           if jpt EQ 1 then jkmax   taille 3  ELSE jkmax   1       END        4:BEGIN                    xyzt          zrhop dblarr taille 1 taille 2 taille 3 taille 4             jkmax   taille 3        END     endcase          FOR jk   0  jkmax 1 DO BEGIN        case taille 0  of          0:BEGIN                 z             ztt   tn             zs   sn          END           1:BEGIN                 z             ztt   tn jk              zs   sn jk            END           2:BEGIN                 xy  jpt 1  ou zt             if jpt EQ 1 then begin                ztt   tn                zs   sn             ENDIF ELSE BEGIN                ztt   tn jk                   zs   sn jk                 ENDELSE          END           3:BEGIN                 xyz  jpt 1  ou xyt             if jpt EQ 1 then begin                ztt   tn    jk                 zs   sn   jk               endif ELSE BEGIN                ztt   tn                zs   sn             ENDELSE          END           4:BEGIN                 xyzt             ztt   tn    jk                zs   sn   jk              END        endcase       if n_elements sigma_n  NE 0 then zh   1000 sigma_n ELSE zh   gdept jk        square root salinity       zsr  sqrt abs zs        compute density pure water at atm pressure       zr1 6 536332e 9 ztt 1 120083e 6 ztt 1 001685e 4 ztt 9 095290e 3 ztt 6 793952e 2 ztt 999 842594       seawater density atm pressure       zr2   5 3875e 9 ztt 8 2467e 7 ztt 7 6438e 5 ztt 4 0899e 3 ztt 0 824493       zr3   1 6546e 6 ztt 1 0227e 4 ztt 5 72466e 3       zr4  4 8314e 4         potential density  reference to the surface        case taille 0  of          0: zrhop       zr4 zs   zr3 zsr   zr2 zs   zr1          1: zrhop jk   zr4 zs   zr3 zsr   zr2 zs   zr1          2:BEGIN              if jpt EQ 1 then zrhop    zr4 zs   zr3 zsr   zr2 zs   zr1               ELSE zrhop jk     zr4 zs   zr3 zsr   zr2 zs   zr1          END          3:BEGIN              if jpt EQ 1 then zrhop   jk   zr4 zs   zr3 zsr   zr2 zs   zr1                ELSE zrhop    zr4 zs   zr3 zsr   zr2 zs   zr1          END          4: zrhop   jk     zr4 zs   zr3 zsr   zr2 zs   zr1       endcase        IF n_elements insitu  EQ 1 THEN BEGIN        add the compression terms          ze    3 508914e 8 ztt 1 248266e 8 ztt 2 595994e 6          zbw    1 296821e 6 ztt 5 782165e 9 ztt 1 045941e 4          zb   zbw   ze   zs            zd    2 042967e 2          zc    7 267926e 5 ztt 2 598241e 3 ztt 0 1571896          zaw    5 939910e 6 ztt 2 512549e 3 ztt 0 1028859 ztt  4 721788          za     zd zsr   zc zs   zaw            zb1   0 1909078 ztt 7 390729 ztt 55 87545          za1   2 326469e 3 ztt 1 553190 ztt 65 00517 ztt 1044 077          zkw   1 361629e 4 ztt 1 852732e 2 ztt 30 41638 ztt 2098 925 ztt 190925 6          zk0   zb1 zsr   za1 zs   zkw         masked in situ density          case taille 0  of             0: zrhop   zrhop    1 0 zh zk0 zh za zh zb              1: zrhop jk    zrhop jk     1 0 zh zk0 zh za zh zb              2:BEGIN                 if jpt EQ 1 then zrhop   zrhop    1 0 zh zk0 zh za zh zb                   ELSE zrhop jk      zrhop jk       1 0 zh zk0 zh za zh zb              END             3:BEGIN                 if jpt EQ 1 then zrhop   jk    zrhop   jk     1 0 zh zk0 zh za zh zb                   ELSE zrhop   zrhop    1 0 zh zk0 zh za zh zb              END             4: zrhop   jk      zrhop   jk       1 0 zh zk0 zh za zh zb           endcase                 ENDIF     ENDFOR         terre   where tn GE 1e6     if terre 0  NE  1 then zrhop terre    valmask     if keyword_set key_performance  THEN print   temps rhon  systime 1 tempsun          return  zrhop END   "); 
     
    197197a[195] = new Array("./ToBeReviewed/GRILLE/changegrid.html", "changegrid.pro", "", "       todo seb     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"); 
    198198a[196] = new Array("./ToBeReviewed/GRILLE/cmpgrid.html", "cmpgrid.pro", "", "       todo seb     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"); 
    199 a[197] = new Array("./ToBeReviewed/GRILLE/decoupeterre.html", "decoupeterre.pro", "", "             file_comments   Similar to grille  Here  when vargrid is not  T  or  W  we have to   recuperate Tmask  glamt  gphit and the array of triangulation on the   considerated subdomain for the drawing  The specificity of decoupeterre   in comparaison with grille  is that we take  if possible  a subdomain   just a little bit bigger than the one defined by domdef in order to be   sure that the mask we draw will cover over all the drawing       categories   utilities      keyword TRI    This keyword serve to obtain  thanks to grille  the triangulation which   refer to the grid but only on the part of the zoom  This of triangulation   is passed in the variable we have equate at TRI    For example: grille tri triangulation_reduite    This keyword is used in plt pro      keyword WDEPTH   To specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W       uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          24 2 99      version    Id       todo seb : manque tous les param et plein de keywords                  PRO decoupeterre  mask  glam  gphi  gdep  TYPE   type  TRI   tri  INDICEZOOM   indicezoom  COINMONTE   coinmonte  COINDESCEND   coindescend  WDEPTH   wdepth  REALSECTION   realsection  USETRI   usetri  _extra   ex       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance     if vargrid EQ  W  then wdepth   1       horizontal parameters     if possible extent the domain according to the grid type   default case   case vargrid of      U :BEGIN       firstx   0    min firstxt  firstxu 1        lastx    max lastxt  lastxu 1    min firstyt  firstyu 1        lasty    max lastyt  lastyu 1    min firstxt  firstxv 1        lastx    max lastxt  lastxv 1    min firstyt  firstyv 1        lasty    max lastyt  lastyv 1    min firstxt  firstxf 1        lastx    max lastxt  lastxf 1    min firstyt  firstyf 1        lasty    max lastyt  lastyf 1    firstx 1 :lastx  firsty:lasty            ELSE glam   glamu 0    firstx 1 :lastx  firsty:lasty        ENDELSE     END      yz :BEGIN       if keyword_set realsection  EQ 0 then begin         if vargrid EQ  U  OR vargrid EQ  F  then             gphi   gphiu firstx:lastx  firsty:lasty        ENDIF ELSE BEGIN            to drawsectionbottom           if vargrid EQ  U  OR vargrid EQ  F  OR finite gphiv 0  EQ 0 then             gphi   gphif firstx:lastx  0    firsty 1 :lasty            ELSE gphi   gphiv firstx:lastx  0    firsty 1 :lasty        ENDELSE     END     ELSE:   ENDCASE     vertical boundaries     if keyword_set wdepth   then begin     firstz   0    min firstzt  firstzw 1      lastz    max lastzt  lastzw 1     jpk 1    ENDIF ELSE BEGIN     firstz   firstzt     lastz   lastzt   ENDELSE    nz   lastz firstz 1     mask     case type of      xy :BEGIN       mask   tmask firstx:lastx  firsty:lasty  firstz        profond   firstz NE 0     END   for the verical section  we have to choose the right mask according   to the grid point and to the direction of the section      xz :BEGIN       if vargrid EQ  V  OR vargrid EQ  F  then begin         mask    vmask firstx:lastx  firstyv:lastyv  firstz:lastz        ENDIF ELSE mask   tmask firstx:lastx  firsty:lasty  firstz:lastz      END      yz :BEGIN       if vargrid EQ  U  OR vargrid EQ  F  then begin         mask    umask firstxu:lastxu  firsty:lasty  firstz:lastz        ENDIF ELSE mask   tmask firstx:lastx  firsty:lasty  firstz:lastz      END     ELSE:mask   tmask firstx:lastx  firsty:lasty  firstz:lastz    endcase     vertical axis     when we do a real section we directly plot the gdepw    in drawsectionbottom pro  instead of contouring the mask at 0 5 at   gdept   IF keyword_set realsection  EQ 0 then gdep   gdept firstz:lastz      ELSE BEGIN       if lastz EQ jpk 1 then     we add some fictive very deep level that will not be used but that is   necessary to avoid array size bugs in draw bottom section        gdep    gdepw firstz 1:lastz  2 gdept jpk 1         ELSE gdep   gdepw firstz 1:lastz 1       gdep   gdepw firstz:lastz    special case when we are using the partial steps in the vertical   section that are only 1 point wide    in that case  the z axis is a 2d array and we modify the depth of   the last level ocean with hdepw that is the real depth of the bottom      CASE 1 OF       keyword_set key_partialstep  and type EQ  xz            AND ny EQ 1 AND keyword_set realsection :BEGIN         bottom   total mask  3          good   where bottom NE 0 AND bottom NE nz 1          bottom   lindgen nx bottom nx         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            gdep   replicate 1  nx gdep           truegdep   hdepw firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       keyword_set key_partialstep  and type EQ  yz            AND nx EQ 1 AND keyword_set realsection :BEGIN          bottom   total mask  3          good   where bottom NE 0 AND bottom NE nz 1          bottom   lindgen ny bottom ny         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            gdep   replicate 1  ny gdep           truegdep   hdepw firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       ELSE:     ENDCASE   ENDELSE     Triangulation vector when TRI is activated      IF arg_present TRI  then       if triangles_list 0  EQ  1 OR usetri LT 1 then tri    1 ELSE BEGIN   If we are tracing a deep level  we redo the triangulation     if keyword_set profond  then begin       tri   triangule mask  coinmonte   coinmonte  coindescend   coindescend  _extra   ex        indicezoom    lindgen jpi  jpj firstx:lastx  firsty:lasty    ENDIF ELSE BEGIN    Otherwise  we recuperate the part of triangulation that interest us and we number them well        if nx EQ jpi AND ny EQ jpj then tri   triangles_list ELSE BEGIN          msk   bytarr jpi  jpj          msk firstx:lastx  firsty:lasty    1         ind   where  msk triangles_list 0    EQ 1                        AND msk triangles_list 1    EQ 1                        AND msk triangles_list 2    EQ 1           tri   triangles_list  ind firstx firsty jpi          y   tri jpi         x   tri y jpi         tri   x y nx       ENDELSE     ENDELSE   ENDELSE     if keyword_set key_performance  THEN print   temps decoupeterre  systime 1 tempsun      return end "); 
    200 a[198] = new Array("./ToBeReviewed/GRILLE/domdef.html", "domdef.pro", "", "             file_comments    Allows to extract a subdomain of study by providing parameters    needed for drawings  see outputs       categories      param Z1  in optional    For a 3d domain whose the horizontal part cover all glam       param Z2  in optional    For a 3d domain whose the horizontal part cover all gphi      param X1  in optional    Define the minimum longitude   All levels are selected       param X2  in optional    Define the maximum longitude   All levels are selected       param Y1  in optional    Define the minimum latitude   All levels are selected       param Y2  in optional    Define the maximum latitude   All levels are selected       keyword ENDPOINTS   A four elements vector  x1 y1 x2 y2  used to specify   that domdef must define the box used to make a plot  pltz  pltt    plt1d  done strictly along the line  that can have any direction    starting at  x1  y1  ending at  x2  y2  When defining endpoints    you must also define TYPE which define the type of plots    pltz   xt   yt   zt   x   y   z   t  will used   ENDPOINTS keywords      keyword FINDALWAYS   Force to redefine a box even when none point is find in the box     In this case  we select all the grid       keyword GRIDTYPE   It is a string or a vector of strings containing the grids s name     Only determinated by  T U V W F  for which the calculation    must be done      For example:  T  ou  T U       keyword MEMEINDICES   It is possible that points t u v and F correspond to a same geographic   box which do not concern the same array indexes  This is sometimes a   problem  or at least serious complications  in programs where several   type of grid interven  see norme  curl  Activate MEMEINDICE to   force domdef to take same indexes  those of the grid T  for all other   grids       keyword INDEX    We activate it if we want that all elements passed in input of domdef    refer to indexes of glam  gphi and gdep arrays rather than to values    of these arrays       keyword XINDEX    We activate it if we want that all elements passed in input of domdef    and concerning the X dimension refer to indexes of glam arrays rather    than to values of these arrays       keyword YINDEX    We activate it if we want that all elements passed in input of domdef    and concerning the X dimension refer to indexes of gphi arrays rather    than to values of these arrays        keyword ZINDEX    We activate it if we want that all elements passed in input of domdef    and concerning the X dimension refer to indexes of gdep arrays rather    than to values of these arrays      OUTPUTS:on recupere pour les 4 grilles t u v f      nxt u v:entier qui contient le nombre de pts en longitude de      la grille reduite au domaine      nyt u v:entier qui contient le nombre de pts en latitude de      la grille reduite au domaine      nzt w:entier qui contient le nombre de pts en profondeur de      la grille reduite au domaine 3D      firstxt u v f: le first indice qui delimite le sous domaine     suivant x      firstyt u v f: le first indice qui delimite le sous domaine     suivant y      firstzt w: le first indice qui delimite le sous domaine     suivant z      lastxt u v f: le last indice qui delimite le sous domaine     suivant x      lastyt u v f: le last indice qui delimite le sous domaine     suivant y      lastzt w: le last indice qui delimite le sous domaine     suivant z      uses   common pro        history   Sebastien Masson  smasson lodyc jussieu fr   8 2 98   rewrite everything  debug and spee up Sebastien Masson April 2005      version    Id       todo seb: output pas clair  pas d input required          pro domdef  x1  x2  y1  y2  z1  z2  FINDALWAYS   findalways                 GRIDTYPE   gridtype  MEMEINDICES   memeindices                 XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex                 ENDPOINTS   endpoints  TYPE   type                 INDEX   index  _extra   ex     include commons     compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             For key_performance     CASE N_PARAMS  OF     0:     1:     2:     4:     6:     ELSE:BEGIN       ras   report Bad number of parameter in the call of domdef        RETURN     END   ENDCASE     IF keyword_set endpoints  THEN BEGIN     IF NOT keyword_set type  THEN BEGIN        dummy   report If domdef is used do find the box associated                             to endpoints  you must also specify type keyword        return     ENDIF      CASE N_PARAMS  OF       0:       1:boxzoom    x1        2:boxzoom    x1  x2        4:boxzoom    x1  x2  y1  y2        6:boxzoom    x1  x2  y1  y2  z1  z2      ENDCASE     section  BOXZOOM   boxzoom  ENDPOINTS   endpoints  TYPE   type   ONLYBOX     return   ENDIF         recall domdef when there is only one input parameter       IF N_PARAMS  EQ 1 THEN BEGIN     CASE n_elements x1  OF       2:domdef  x1 0  x1 1  FINDALWAYS   findalways  GRIDTYPE   gridtype  MEMEINDICES   memeindices  XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex  INDEX   index  _extra   ex       4:domdef  x1 0  x1 1  x1 2  x1 3  FINDALWAYS   findalways  GRIDTYPE   gridtype  MEMEINDICES   memeindices  XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex  INDEX   index  _extra   ex       6:domdef  x1 0  x1 1  x1 2  x1 3  x1 4  x1 5  FINDALWAYS   findalways  GRIDTYPE   gridtype  MEMEINDICES   memeindices  XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex  INDEX   index  _extra   ex       ELSE:BEGIN         ras   report Bad number of elements in x1          RETURN       END     ENDCASE     RETURN     ENDIF     default definitions and checks     IF NOT keyword_set gridtype  THEN gridtype    T   U   V   W   F      ELSE gridtype   strupcase gridtype    IF keyword_set memeindices  THEN gridtype    T  gridtype    IF finite glamu 0  eq 0 THEN gridtype   gridtype where gridtype NE  U    IF finite glamv 0  eq 0 THEN gridtype   gridtype where gridtype NE  V    default definitions   lon1t   99999    lon2t    99999    lat1t   99999    lat2t    99999    lon1u   99999    lon2u    99999    lat1u   99999    lat2u    99999    lon1v   99999    lon2v    99999    lat1v   99999    lat2v    99999    lon1f   99999    lon2f    99999    lat1f   99999    lat2f    99999    vert1t   99999    vert2t    99999    vert1w   99999    vert2w    99999      IF jpj EQ 1 THEN BEGIN      IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN       glamt   reform glamt  jpi  jpj   over        gphit   reform gphit  jpi  jpj   over      ENDIF      IF  where gridtype eq  U 0  NE  1 THEN BEGIN       glamu   reform glamu  jpi  jpj   over        gphiu   reform gphiu  jpi  jpj   over      ENDIF       IF  where gridtype eq  V 0  NE  1 THEN BEGIN       glamv   reform glamv  jpi  jpj   over        gphiv   reform gphiv  jpi  jpj   over      ENDIF       IF  where gridtype eq  F 0  NE  1 THEN BEGIN       glamf   reform glamf  jpi  jpj   over        gphif   reform gphif  jpi  jpj   over      ENDIF     ENDIF     IF N_PARAMS  EQ 2 THEN GOTO  vertical         define all horizontal parameters     lon1 et lon2   lat1 et lat2   firstx tuvf  lastx tuvf  nx tuvf      check if the grid is defined for U and V points  If not  take care   of the cases gridtype eq  U  or  V      errstatus   0   IF  finite glamu 0 gphiu 0  EQ 0 OR n_elements glamu  EQ 0 OR n_elements gphiu  EQ 0  AND  where gridtype eq  U 0  NE  1 THEN BEGIN     firstxu    values f_nan     lastxu    values f_nan     nxu    values f_nan     okgrid   where gridtype NE  U  count      IF count NE 0 THEN gridtype   gridtype okgrid        ELSE errstatus   report U grid is undefined  Impossible to call domdef with vargid    U    ENDIF     IF  finite glamv 0 gphiv 0  EQ 0 OR n_elements glamv  EQ 0 OR n_elements gphiv  EQ 0  AND  where gridtype eq  V 0  NE  1 THEN BEGIN     firstxv    values f_nan     lastxv    values f_nan     nxv    values f_nan     okgrid   where gridtype NE  V  count      IF count NE 0 THEN gridtype   gridtype okgrid        ELSE errstatus   report V grid is undefined  Impossible to call domdef with vargid    V    ENDIF   IF errstatus EQ  1 THEN return       horizontal domain defined with lon1  lon2  lat1 and lat2       IF N_PARAMS  EQ 0       OR    N_PARAMS  EQ 4 OR N_PARAMS  EQ 6             AND NOT keyword_set xindex  AND NOT keyword_set yindex  AND NOT keyword_set index    THEN BEGIN     IF N_PARAMS  EQ 0 THEN BEGIN   find lon1 and lon2 the longitudinal boudaries of the full domain       IF  where gridtype eq  T 0  NE  1 THEN lon1t   min glamt  max   lon2t        IF  where gridtype eq  W 0  NE  1 AND  where gridtype eq  T 0  EQ  1 THEN lon1t   min glamt  max   lon2t        IF  where gridtype eq  U 0  NE  1 THEN lon1u   min glamu  max   lon2u        IF  where gridtype eq  V 0  NE  1 THEN lon1v   min glamv  max   lon2v        IF  where gridtype eq  F 0  NE  1 THEN lon1f   min glamf  max   lon2f        lon1   min lon1t  lon1u  lon1v  lon1f        lon2   max lon2t  lon2u  lon2v  lon2f    find lat1 and lat2 the latitudinal boudaries of the full domain       IF  where gridtype eq  T 0  NE  1 THEN lat1t   min gphit  max   lat2t        IF  where gridtype eq  W 0  NE  1 AND  where gridtype eq  T 0  EQ  1 THEN lat1t   min gphit  max   lat2t        IF  where gridtype eq  U 0  NE  1 THEN lat1u   min gphiu  max   lat2u        IF  where gridtype eq  V 0  NE  1 THEN lat1v   min gphiv  max   lat2v        IF  where gridtype eq  F 0  NE  1 THEN lat1f   min gphif  max   lat2f        lat1   min lat1t  lat1u  lat1v  lat1f        lat2   max lat2t  lat2u  lat2v  lat2f      ENDIF ELSE BEGIN        lon1   min x1  x2  max   lon2        lat1   min y1  y2  max   lat2      ENDELSE   find firstxt  firstxt  nxt and nyt according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN       dom   where   glamt GE lon1  AND  glamt LE lon2                       AND  gphit GE lat1  AND  gphit LE lat2          IF  dom 0  EQ  1  THEN BEGIN         IF keyword_set findalways  THEN BEGIN           print   WARNING  empty T points box  we get the neighnors to define a new box            neig1   neighbor lon1  lat1  glamt  gphit  sphere   keyword_set key_onearth    keyword_set key_irregular            neig2   neighbor lon2  lat2  glamt  gphit  sphere   keyword_set key_onearth    keyword_set key_irregular            CASE N_PARAMS  OF             4:domdef  min glamt neig1  max glamt neig2  min gphit neig1  max gphit neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex             6:domdef  min glamt neig1  max glamt neig2  min gphit neig1  max gphit neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex           ENDCASE           RETURN         ENDIF ELSE BEGIN           ras   report WARNING  The box does not contain any T points            firstxt    1   lastxt    1   nxt   0           firstyt    1   lastyt    1   nyt   0         ENDELSE       ENDIF ELSE BEGIN         jyt   dom   jpi         ixt   temporary dom  MOD jpi         firstxt   min temporary ixt  max   lastxt          firstyt   min temporary jyt  max   lastyt          nxt   lastxt   firstxt   1         nyt   lastyt   firstyt   1       ENDELSE     ENDIF   find firstxu  firstxu  firstyu  firstyu  nxu and nyu   according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  U 0  NE  1 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstxu   firstxt   lastxu   lastxt   nxu   nxt         firstyu   firstyt   lastyu   lastyt   nyu   nyt       ENDIF ELSE BEGIN         dom   where   glamu GE lon1  AND  glamu LE lon2                         AND  gphiu GE lat1  AND  gphiu LE lat2            IF  dom 0  EQ  1  THEN BEGIN           IF keyword_set findalways  THEN BEGIN   if t grid parameters alreday defined  we use them               CASE 1 OF                where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                 print   WARNING  empty U points box  we use the same index as T points                  firstxu   firstxt   lastxu   lastxt   nxu   nxt                 firstyu   firstyt   lastyu   lastyt   nyu   nyt               END               ELSE:BEGIN                 print   WARNING  empty U points box  we get the neighnors to define a new box                  neig1   neighbor lon1  lat1  glamu  gphiu  sphere   keyword_set key_onearth    keyword_set key_irregular                  neig2   neighbor lon2  lat2  glamu  gphiu  sphere   keyword_set key_onearth    keyword_set key_irregular                  CASE N_PARAMS  OF                   4:domdef  min glamu neig1  max glamu neig2  min gphiu neig1  max gphiu neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                   6:domdef  min glamu neig1  max glamu neig2  min gphiu neig1  max gphiu neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                 ENDCASE                 RETURN               END             ENDCASE           ENDIF ELSE BEGIN             ras   report WARNING  The box does not contain any U points              firstxu    1   lastxu    1   nxu   0             firstyu    1   lastyu    1   nyu   0           ENDELSE         ENDIF ELSE BEGIN           jyu   dom   jpi           ixu   temporary dom  MOD jpi           firstxu   min temporary ixu  max   lastxu            firstyu   min temporary jyu  max   lastyu            nxu   lastxu   firstxu   1           nyu   lastyu   firstyu   1         ENDELSE       ENDELSE     ENDIF   find firstxv  firstxv  firstyv  firstyv  nxv and nyv    according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  V 0  NE  1 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstxv   firstxt   lastxv   lastxt   nxv   nxt         firstyv   firstyt   lastyv   lastyt   nyv   nyt       ENDIF ELSE BEGIN         dom   where   glamv GE lon1  AND  glamv LE lon2                         AND  gphiv GE lat1  AND  gphiv LE lat2            IF  dom 0  EQ  1  THEN BEGIN           IF keyword_set findalways  THEN BEGIN             CASE 1 OF                where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                 print   WARNING  empty V points box  we use the same index as T points                  firstxv   firstxt   lastxv   lastxt   nxv   nxt                 firstyv   firstyt   lastyv   lastyt   nyv   nyt               END                 where gridtype eq  U 0  NE  1:BEGIN                 print   WARNING  empty V points box  we use the same index as U points                  firstxv   firstxu   lastxv   lastxu   nxv   nxu                 firstyv   firstyu   lastyv   lastyu   nyv   nyu               END                ELSE:BEGIN                 print   WARNING  empty V points box  we get the neighnors to define a new box                  neig1   neighbor lon1  lat1  glamv  gphiv  sphere   keyword_set key_onearth    keyword_set key_irregular                  neig2   neighbor lon2  lat2  glamv  gphiv  sphere   keyword_set key_onearth    keyword_set key_irregular                  CASE N_PARAMS  OF                   4:domdef  min glamv neig1  max glamv neig2  min gphiv neig1  max gphiv neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                   6:domdef  min glamv neig1  max glamv neig2  min gphiv neig1  max gphiv neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                 ENDCASE                 RETURN               END             ENDCASE           ENDIF ELSE BEGIN             ras   report WARNING  The box does not contain any V points              firstxv    1   lastxv    1   nxv   0             firstyv    1   lastyv    1   nyv   0           ENDELSE         ENDIF ELSE BEGIN           jyv   dom   jpi           ixv   temporary dom  MOD jpi           firstxv   min temporary ixv  max   lastxv            firstyv   min temporary jyv  max   lastyv            nxv   lastxv   firstxv   1           nyv   lastyv   firstyv   1         ENDELSE       ENDELSE     ENDIF   find firstxf  firstxf  firstyf  firstyf  nxf and nyf   according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  F 0  NE  1 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstxf   firstxt   lastxf   lastxt   nxf   nxt         firstyf   firstyt   lastyf   lastyt   nyf   nyt       ENDIF ELSE BEGIN         dom   where   glamf GE lon1  AND  glamf LE lon2                         AND  gphif GE lat1  AND  gphif LE lat2            IF  dom 0  EQ  1  THEN BEGIN           IF keyword_set findalways  THEN BEGIN             CASE 1 OF                where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                 print   WARNING  empty F points box  we use the same index as T points                  firstxf   firstxt   lastxf   lastxt   nxf   nxt                 firstyf   firstyt   lastyf   lastyt   nyf   nyt               END                 where gridtype eq  U 0  NE  1:BEGIN                 print   WARNING  empty F points box  we use the same index as U points                  firstxf   firstxu   lastxf   lastxu   nxf   nxu                 firstyf   firstyu   lastyf   lastyu   nyf   nyu               END                 where gridtype eq  V 0  NE  1:BEGIN                 print   WARNING  empty F points box  we use the same index as V points                  firstxf   firstxv   lastxf   lastxv   nxf   nxv                 firstyf   firstyv   lastyf   lastyv   nyf   nyv               END                ELSE:BEGIN                 print   WARNING  empty F points box  we get the neighnors to define a new box                  neig1   neighbor lon1  lat1  glamf  gphif  sphere   keyword_set key_onearth    keyword_set key_irregular                  neig2   neighbor lon2  lat2  glamf  gphif  sphere   keyword_set key_onearth    keyword_set key_irregular                  CASE N_PARAMS  OF                   4:domdef  min glamf neig1  max glamf neig2  min gphif neig1  max gphif neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                   6:domdef  min glamf neig1  max glamf neig2  min gphif neig1  max gphif neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                 ENDCASE                 RETURN               END             ENDCASE             ENDIF ELSE BEGIN             ras   report WARNING  The box does not contain any F points              firstxf    1   lastxf    1   nxf   0             firstyf    1   lastyf    1   nyf   0           ENDELSE         ENDIF ELSE BEGIN           jyf   dom   jpi           ixf   temporary dom  MOD jpi           firstxf   min temporary ixf  max   lastxf            firstyf   min temporary jyf  max   lastyf            nxf   lastxf   firstxf   1           nyf   lastyf   firstyf   1         ENDELSE       ENDELSE     ENDIF     ENDIF ELSE BEGIN     CASE 1 OF       horizontal domain defined with the X and Y indexes            keyword_set xindex  AND keyword_set yindex  OR keyword_set index :BEGIN         fstx   min x1  x2  max   lstx          fsty   min y1  y2  max   lsty          IF fstx LT 0 OR lstx GE jpi THEN BEGIN           ras   report Bad definition of X1 or X2            return         ENDIF         IF fsty LT 0 OR lsty GE jpj THEN BEGIN           ras   report Bad definition of Y1 or Y2            return         ENDIF         nx   lstx   fstx   1         ny   lsty   fsty   1   find lon1t  lon2t  lat1t  lat2t  firstxt  firstxt  nxt and nyt   according to x1  x2  y1  y2         IF  where gridtype eq  T 0  NE  1 OR  where gridtype eq  W 0  NE  1 THEN BEGIN           lon1t   min glamt fstx:lstx  fsty:lsty  max   lon2t            lat1t   min gphit fstx:lstx  fsty:lsty  max   lat2t            firstxt   fstx   lastxt   lstx           firstyt   fsty   lastyt   lsty           nxt   nx   nyt   ny         ENDIF   find lon1u  lon2u  lat1u  lat2u  firstxu  firstxu  nxu and nyu   according to x1  x2  y1  y2         IF  where gridtype eq  U 0  NE  1 THEN BEGIN           lon1u   min glamu fstx:lstx  fsty:lsty  max   lon2u            lat1u   min gphiu fstx:lstx  fsty:lsty  max   lat2u            firstxu   fstx   lastxu   lstx           firstyu   fsty   lastyu   lsty           nxu   nx   nyu   ny         ENDIF   find lon1v  lon2v  lat1v  lat2v  firstxv  firstxv  nxv and nyv   according to x1  x2  y1  y2         IF  where gridtype eq  V 0  NE  1 THEN BEGIN           lon1v   min glamv fstx:lstx  fsty:lsty  max   lon2v            lat1v   min gphiv fstx:lstx  fsty:lsty  max   lat2v            firstxv   fstx   lastxv   lstx           firstyv   fsty   lastyv   lsty           nxv   nx   nyv   ny         ENDIF            find lon1f  lon2f  lat1f  lat2f  firstxf  firstxf  nxf and nyf   according to x1  x2  y1  y2         IF  where gridtype eq  F 0  NE  1 THEN BEGIN           lon1f   min glamf fstx:lstx  fsty:lsty  max   lon2f            lat1f   min gphif fstx:lstx  fsty:lsty  max   lat2f            firstxf   fstx   lastxf   lstx           firstyf   fsty   lastyf   lsty           nxf   nx   nyf   ny         ENDIF         lon1   min lon1t  lon1u  lon1v  lon1f          lon2   max lon2t  lon2u  lon2v  lon2f          lat1   min lat1t  lat1u  lat1v  lat1f          lat2   max lat2t  lat2u  lat2v  lat2f        END       horizontal domain defined with the X index and lat1 lat2           keyword_set xindex :BEGIN         fstx   min x1  x2  max   lstx          IF fstx LT 0 OR lstx GE jpi THEN BEGIN           ras   report Bad definition of X1 or X2            return         ENDIF         nx   lstx   fstx   1         lat1   min y1  y2  max   lat2    find lon1t  lon2t  firstxt  firstxt  firstyt  firstyt  nxt   and nyt according to x1  x2  lat1 and lat2         IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN           firstxt   fstx   lastxt   lstx   nxt   nx           dom   where   gphit fstx:lstx    GE lat1  AND  gphit fstx:lstx    LE lat2              IF  dom 0  EQ  1  THEN BEGIN             IF keyword_set findalways  THEN BEGIN               print   WARNING  empty T points box  we get the neighnors to define a new box                neig1   neighbor lon1  lat1  glamt fstx:lstx    gphit fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                neig2   neighbor lon2  lat2  glamt fstx:lstx    gphit fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                CASE N_PARAMS  OF                 4:domdef  fstx  lstx  min gphit fstx:lstx   neig1  max gphit fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                 6:domdef  fstx  lstx  min gphit fstx:lstx   neig1  max gphit fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex               ENDCASE               RETURN             ENDIF ELSE BEGIN               ras   report WARNING  The box does not contain any T points                firstyt    1   lastyt    1   nyt   0             ENDELSE           ENDIF ELSE BEGIN             jyt   temporary dom    nx             firstyt   min temporary jyt  max   lastyt              nyt   lastyt   firstyt   1           ENDELSE           IF nyt NE 0 THEN lon1t   min glamt firstxt:lastxt  firstyt:lastyt  max   lon2t          ENDIF   find lon1u  lon2u  firstxu  firstxu  firstyu  firstyu  nxu   and nyu according to x1  x2  lat1 and lat2         IF  where gridtype eq  U 0  NE  1 THEN BEGIN           firstxu   fstx   lastxu   lstx   nxu   nx           IF keyword_set memeindices  THEN BEGIN             firstyu   firstyt   lastyu   lastyt   nyu   nyt           ENDIF ELSE BEGIN             dom   where   gphiu fstx:lstx    GE lat1  AND  gphiu fstx:lstx    LE lat2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty U points box  we use the same index as T points                      firstyu   firstyt   lastyu   lastyt   nyu   nyt                   END                    ELSE:BEGIN                     print   WARNING  empty U points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamu fstx:lstx    gphiu fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamu fstx:lstx    gphiu fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  fstx  lstx  min gphiu fstx:lstx   neig1  max gphiu fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  fstx  lstx  min gphiu fstx:lstx   neig1  max gphiu fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                 ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any U points                  firstyu    1   lastyu    1   nyu   0               ENDELSE             ENDIF ELSE BEGIN               jyu   temporary dom    nx               firstyu   min temporary jyu  max   lastyu                nyu   lastyu   firstyu   1             ENDELSE           ENDELSE           IF nyu NE 0 THEN lon1u   min glamu firstxu:lastxu  firstyu:lastyu  max   lon2u          ENDIF   find lon1v  lon2v  firstxv  firstxv  firstyv  firstyv  nxv   and nyv according to x1  x2  lat1 and lat2         IF  where gridtype eq  V 0  NE  1 THEN BEGIN           firstxv   fstx   lastxv   lstx   nxv   nx           IF keyword_set memeindices  THEN BEGIN             firstyv   firstyt   lastyv   lastyt   nyv   nyt           ENDIF ELSE BEGIN             dom   where   gphiv fstx:lstx    GE lat1  AND  gphiv fstx:lstx    LE lat2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as T points                      firstyv   firstyt   lastyv   lastyt   nyv   nyt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as U points                      firstyv   firstyu   lastyv   lastyu   nyv   nyu                   END                    ELSE:BEGIN                     print   WARNING  empty V points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamv fstx:lstx    gphiv fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamv fstx:lstx    gphiv fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  fstx  lstx  min gphiv fstx:lstx   neig1  max gphiv fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  fstx  lstx  min gphiv fstx:lstx   neig1  max gphiv fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                  ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any V points                  firstyv    1   lastyv    1   nyv   0               ENDELSE             ENDIF ELSE BEGIN               jyv   temporary dom    nx               firstyv   min temporary jyv  max   lastyv                nyv   lastyv   firstyv   1             ENDELSE           ENDELSE           IF nyv NE 0 THEN lon1v   min glamv firstxv:lastxv  firstyv:lastyv  max   lon2v          ENDIF   find lon1f  lon2f  firstxf  firstxf  firstyf  firstyf  nxf   and nyf according to x1  x2  lat1 and lat2         IF  where gridtype eq  F 0  NE  1 THEN BEGIN           firstxf   fstx   lastxf   lstx   nxf   nx           IF keyword_set memeindices  THEN BEGIN             firstyf   firstyt   lastyf   lastyt   nyf   nyt           ENDIF ELSE BEGIN             dom   where   gphif fstx:lstx    GE lat1  AND  gphif fstx:lstx    LE lat2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as T points                      firstyf   firstyt   lastyf   lastyt   nyf   nyt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as U points                      firstyf   firstyu   lastyf   lastyu   nyf   nyu                   END                     where gridtype eq  V 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as V points                      firstyf   firstyv   lastyf   lastyv   nyf   nyv                   END                    ELSE:BEGIN                     print   WARNING  empty F points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamf fstx:lstx    gphif fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamf fstx:lstx    gphif fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  fstx  lstx  min gphif fstx:lstx   neig1  max gphif fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  fstx  lstx  min gphif fstx:lstx   neig1  max gphif fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                 ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any F points                  firstyf    1   lastyf    1   nyf   0               ENDELSE             ENDIF ELSE BEGIN               jyf   temporary dom    nx               firstyf   min temporary jyf  max   lastyf                nyf   lastyf   firstyf   1             ENDELSE           ENDELSE           IF nyf NE 0 THEN lon1f   min glamf firstxf:lastxf  firstyf:lastyf  max   lon2f          ENDIF         lon1   min lon1t  lon1u  lon1v  lon1f          lon2   max lon2t  lon2u  lon2v  lon2f        END       horizontal domain defined with the Y index and lon1 lon2           keyword_set yindex :BEGIN         fsty   min y1  y2  max   lsty          IF fsty LT 0 OR lsty GE jpj THEN BEGIN           ras   report Bad definition of Y1 or Y2            return         ENDIF         ny   lsty   fsty   1         lon1   min x1  x2  max   lon2    find lat1t  lat2t  firstxt  firstxt  firstyt  firstyt  nxt   and nyt according to x1  x2  lon1 and lon2         IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN           firstyt   fsty   lastyt   lsty   nyt   ny           dom   where   glamt  fsty:lsty  GE lon1  AND  glamt  fsty:lsty  LE lon2              IF  dom 0  EQ  1  THEN BEGIN             IF keyword_set findalways  THEN BEGIN               print   WARNING  empty T points box  we get the neighnors to define a new box                neig1   neighbor lon1  lat1  glamt  fsty:lsty  gphit  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                neig2   neighbor lon2  lat2  glamt  fsty:lsty  gphit  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                CASE N_PARAMS  OF                 4:domdef  min glamt  fsty:lsty neig1  max glamt  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                 6:domdef  min glamt  fsty:lsty neig1  max glamt  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex               ENDCASE               RETURN             ENDIF ELSE BEGIN               ras   report WARNING  The box does not contain any T points                firstxt    1   lastxt    1   nxt   0             ENDELSE           ENDIF ELSE BEGIN             jxt   temporary dom  MOD jpi             firstxt   min temporary jxt  max   lastxt              nxt   lastxt   firstxt   1           ENDELSE           IF nxt NE 0 THEN lat1t   min gphit firstxt:lastxt  firstyt:lastyt  max   lat2t          ENDIF   find lat1u  lat2u  firstxu  firstxu  firstyu  firstyu  nxu   and nyu according to x1  x2  lon1 and lon2         IF  where gridtype eq  U 0  NE  1 THEN BEGIN           firstyu   fsty   lastyu   lsty   nyu   ny           IF keyword_set memeindices  THEN BEGIN             firstxu   firstyt   lastxu   lastyt   nxu   nxt           ENDIF ELSE BEGIN             dom   where   glamu  fsty:lsty  GE lon1  AND  glamu  fsty:lsty  LE lon2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty U points box  we use the same index as T points                      firstxu   firstxt   lastxu   lastxt   nxu   nxt                   END                    ELSE:BEGIN                     print   WARNING  empty U points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamu  fsty:lsty  gphiu  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamu  fsty:lsty  gphiu  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  min glamu  fsty:lsty neig1  max glamu  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  min glamu  fsty:lsty neig1  max glamu  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                 ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any U points                  firstxu    1   lastxu    1   nxu   0               ENDELSE             ENDIF ELSE BEGIN               jxu   temporary dom  MOD jpi               firstxu   min temporary jxu  max   lastxu                nxu   lastxu   firstxu   1             ENDELSE           ENDELSE           IF nxu NE 0 THEN lat1u   min gphiu firstxu:lastxu  firstyu:lastyu  max   lat2u          ENDIF   find lat1v  lat2v  firstxv  firstxv  firstyv  firstyv  nxv   and nyv according to x1  x2  lon1 and lon2         IF  where gridtype eq  V 0  NE  1 THEN BEGIN           firstyv   fsty   lastyv   lsty   nyv   ny           IF keyword_set memeindices  THEN BEGIN             firstxv   firstyt   lastxv   lastyt   nxv   nxt           ENDIF ELSE BEGIN             dom   where   glamv  fsty:lsty  GE lon1  AND  glamv  fsty:lsty  LE lon2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as T points                      firstxv   firstxt   lastxv   lastxt   nxv   nxt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as U points                      firstxv   firstxu   lastxv   lastxu   nxv   nxu                   END                    ELSE:BEGIN                     print   WARNING  empty V points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamv  fsty:lsty  gphiv  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamv  fsty:lsty  gphiv  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  min glamv  fsty:lsty neig1  max glamv  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  min glamv  fsty:lsty neig1  max glamv  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                  ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any V points                  firstxv    1   lastxv    1   nxv   0               ENDELSE             ENDIF ELSE BEGIN               jxv   temporary dom  MOD jpi               firstxv   min temporary jxv  max   lastxv                nxv   lastxv   firstxv   1             ENDELSE           ENDELSE           IF nxv NE 0 THEN lat1v   min gphiv firstxv:lastxv  firstyv:lastyv  max   lat2v          ENDIF   find lat1f  lat2f  firstxf  firstxf  firstyf  firstyf  nxf   and nyf according to x1  x2  lon1 and lon2         IF  where gridtype eq  F 0  NE  1 THEN BEGIN           firstyf   fsty   lastyf   lsty   nyf   ny           IF keyword_set memeindices  THEN BEGIN             firstxf   firstyt   lastxf   lastyt   nxf   nxt           ENDIF ELSE BEGIN             dom   where   glamf  fsty:lsty  GE lon1  AND  glamf  fsty:lsty  LE lon2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as T points                      firstxf   firstxt   lastxf   lastxt   nxf   nxt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as U points                      firstxf   firstxu   lastxf   lastxu   nxf   nxu                   END                     where gridtype eq  V 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as V points                      firstxf   firstxv   lastxf   lastxv   nxf   nxv                   END                    ELSE:BEGIN                     print   WARNING  empty F points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamf  fsty:lsty  gphif  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamf  fsty:lsty  gphif  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  min glamf  fsty:lsty neig1  max glamf  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  min glamf  fsty:lsty neig1  max glamf  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                  ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any F points                  firstxf    1   lastyf    1   nxf   0               ENDELSE             ENDIF ELSE BEGIN               jxf   temporary dom  MOD jpi               firstxf   min temporary jxf  max   lastxf                nxf   lastxf   firstxf   1             ENDELSE           ENDELSE           IF nxf NE 0 THEN lat1f   min gphif firstxf:lastxf  firstyf:lastyf  max   lat2f          ENDIF         lat1   min lat1t  lat1u  lat1v  lat1f          lat2   max lat2t  lat2u  lat2v  lat2f        END     ENDCASE   ENDELSE      The extracted domain is it regular or not       CASE 1 OF      where gridtype eq  T 0  NE  1 OR  where gridtype eq  W 0  NE  1  AND nxt NE 0 AND nyt NE 0:BEGIN   to get faster  we first test the most basic cases befor testing the   full array        CASE 0 OF         array_equal glamt firstxt:lastxt  firstyt  glamt firstxt:lastxt  lastyt :key_irregular   1b         array_equal gphit firstxt  firstyt:lastyt  gphit lastxt  firstyt:lastyt :key_irregular   1b         array_equal glamt firstxt:lastxt  firstyt:lastyt                          glamt firstxt:lastxt  firstyt replicate 1  nyt :key_irregular   1b         array_equal gphit firstxt:lastxt  firstyt:lastyt                          replicate 1  nxt gphit firstxt  firstyt:lastyt :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END      where gridtype eq  U 0  NE  1 AND nxu NE 0 AND nyu NE 0:BEGIN       CASE 0 OF         array_equal glamu firstxu:lastxu  firstyu  glamu firstxu:lastxu  lastyu :key_irregular   1b         array_equal gphiu firstxu  firstyu:lastyu  gphiu lastxu  firstyu:lastyu :key_irregular   1b         array_equal glamu firstxu:lastxu  firstyu:lastyu                          glamu firstxu:lastxu  firstyu replicate 1  nyu :key_irregular   1b         array_equal gphiu firstxu:lastxu  firstyu:lastyu                          replicate 1  nxu gphiu firstxu  firstyu:lastyu :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END      where gridtype eq  V 0  NE  1 AND nxv NE 0 AND nyv NE 0:BEGIN       CASE 0 OF         array_equal glamv firstxv:lastxv  firstyv  glamv firstxv:lastxv  lastyv :key_irregular   1b         array_equal gphiv firstxv  firstyv:lastyv  gphiv lastxv  firstyv:lastyv :key_irregular   1b         array_equal glamv firstxv:lastxv  firstyv:lastyv                          glamv firstxv:lastxv  firstyv replicate 1  nyv :key_irregular   1b         array_equal gphiv firstxv:lastxv  firstyv:lastyv                          replicate 1  nxv gphiv firstxv  firstyv:lastyv :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END      where gridtype eq  F 0  NE  1 AND nxf NE 0 AND nyf NE 0:BEGIN       CASE 0 OF         array_equal glamf firstxf:lastxf  firstyf  glamf firstxf:lastxf  lastyf :key_irregular   1b         array_equal gphif firstxf  firstyf:lastyf  gphif lastxf  firstyf:lastyf :key_irregular   1b         array_equal glamf firstxf:lastxf  firstyf:lastyf                          glamf firstxf:lastxf  firstyf replicate 1  nyf :key_irregular   1b         array_equal gphif firstxf:lastxf  firstyf:lastyf                          replicate 1  nxf gphif firstxf  firstyf:lastyf :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END     ELSE:   ENDCASE         define all vertical parameters     vert1  vert2   firstz tw  lastz tw  nz tw          vertical:       vertical domain defined with vert1  vert2     IF NOT  keyword_set zindex  OR keyword_set index  THEN BEGIN   define vert1 et vert2     CASE N_PARAMS  OF       2:vert1   min x1  x2  max   vert2        6:vert1   min z1  z2  max   vert2        ELSE:BEGIN         IF  inter byte gridtype  byte T   U   V   F 0  NE  1 THEN             vert1t   min gdept  max   vert2t          IF  where gridtype eq  W 0  NE  1 AND n_elements gdepw  NE 0 THEN             vert1w   min gdepw  max   vert2w          vert1   min vert1t  vert1w          vert2   max vert2t  vert2w        END     ENDCASE   define firstzt  firstzt  nzt     IF  inter byte gridtype  byte T   U   V   F 0  NE  1 THEN BEGIN       domz   where gdept ge vert1 and gdept le vert2  nzt        IF nzt NE 0 THEN BEGIN         firstzt   domz 0          lastzt   domz nzt 1        ENDIF ELSE BEGIN          ras   report WARNING  The box does not contain any T level          firstzt    1         lastzt    1       ENDELSE      ENDIF   define firstzw  firstzw  nzw     IF  where gridtype eq  W 0  NE  1 AND n_elements gdepw  NE 0 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstzw   firstzt         lastzw   lastzt         nzw   nzt       ENDIF ELSE BEGIN          domz   where gdepw ge vert1 and gdepw le vert2  nzw          IF nzw NE 0 THEN BEGIN           firstzw   domz 0            lastzw   domz nzw 1          ENDIF ELSE BEGIN            ras   report WARNING  The box does not contain any W level            firstzw    1           lastzw    1         ENDELSE        ENDELSE      ENDIF     vertical domain defined with the Z index     ENDIF ELSE BEGIN      CASE N_PARAMS  OF       2:fstz   min x1  x2  max   lstz        4:return       6:fstz   min z1  z2  max   lstz      ENDCASE     IF fstz LT 0 OR lstz GE jpk THEN BEGIN       ras   report Bad definition of X1  X2  Z1 or Z2        return     ENDIF     nz   lstz   fstz   1   find vert1t  vert2t  firstzt  firstzt  nzt   according to  x1  x2  or  z1  z2      IF  where gridtype eq  T 0  NE  1 THEN BEGIN       vert1t   min gdept fstz:lstz  max   vert2t        firstzt   fstz   lastzt   lstz   nzt   nz     ENDIF         find vert1w  vert2w  firstzw  firstzw  nzw   according to  x1  x2  or  z1  z2      IF  where gridtype eq  W 0  NE  1 AND n_elements gdepw  NE 0 THEN BEGIN       vert1w   min gdepw fstz:lstz  max   vert2w        firstzw   fstz   lastzw   lstz   nzw   nz     ENDIF           vert1   min vert1t  vert1w      vert2   max vert2t  vert2w    ENDELSE       IF NOT keyword_set key_forgetold  THEN BEGIN  updateold   ENDIF      if keyword_set key_performance  THEN print   temps domdef  systime 1 tempsun         return end"); 
    201 a[199] = new Array("./ToBeReviewed/GRILLE/f2v.html", "f2v.pro", "", "             file_comments   Allows to pass a field refering to the grid F on the grid V     thanks to the average:    res   0 5 res   shift res  1  0           categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id            FUNCTION f2v  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp  We force nxt nxf  etc      firstxv   firstxf    lastxv   lastxf    firstyv   firstyf    lastyv   lastyf    nxv   nxf    nyv   nyf    vargrid    V     if NOT keyword_set valmask  then valmask   1e20    lon1   glamv firstxv  0     lon2   glamf lastxf  0     case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxf and taille 2  eq nyf:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxf:lastxf  firstyf:lastyf              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask    fmask firstxf:lastxf  firstyf:lastyf  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  1  0           if NOT  keyword_set key_periodic  AND nxf EQ jpi  then res 0       values f_nan          mask    vmask firstxf:lastxf  firstyf:lastyf  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ nzt:             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxf:lastxf  firstyf:lastyf  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxf:lastxf  firstyf:lastyf                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask    fmask firstxf:lastxf  firstyf:lastyf  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxf  nyf  jpt   over           ENDIF ELSE mask    fmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0           if NOT  keyword_set key_periodic  AND nxf EQ jpi  then res 0         values f_nan          if taille 3  EQ jpt then BEGIN             mask   tmask firstxf:lastxf  firstyf:lastyf  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxf  nyf  jpt   over           ENDIF ELSE mask    vmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxf:lastxf  firstyf:lastyf  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask    fmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxf  nyf  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0  0           if NOT  keyword_set key_periodic  AND nxf EQ jpi  then res 0           values f_nan          mask    vmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxf  nyf  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END    endcase     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold    ENDIF         return  res END "); 
    202 a[200] = new Array("./ToBeReviewed/GRILLE/fmask.html", "fmask.pro", "", "             file_comments   calculate fmask  Economize memory  we do not need to keep fmask anymore       categories   Utilities      returns   A 3d array corresponding to fmask       examples   Used like if fmask was a known array by substituing fmask by  fmask    For example: Instaed of write fmask domainef  we have to write  fmask domainef       history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98      version    Id            FUNCTION fmask       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance      CASE size tmask   n_dimensions  OF     2:res   tmask shift tmask   1  0 shift tmask  0   1 shift tmask   1   1      3:res   tmask shift tmask   1  0  0 shift tmask  0   1  0 shift tmask   1   1  0    ENDCASE     if NOT keyword_set key_periodic  then res jpi 1        fmaskredy   res  jpj 1      fmaskredx     if keyword_set key_performance  THEN print   temps fmask  systime 1 tempsun       return  res end"); 
    203 a[201] = new Array("./ToBeReviewed/GRILLE/grille.html", "grille.pro", "", "             file_comments   Choose the grid which must be used to do the graph in function of   vargrid and send back corresponding parameters calculated in   domdef pro and reduced at the domain defined by domdef  contrarily   to grandegrille pro    BEWARE  The choice of the grid is made from the value of the    global variable vargrid  which can be equal to  T   U   V   W  ou  F       categories      keyword TRI    This keyword serve to obtain  thanks to grille  the triangulation which   refer to the grid but only on the part of the zoom  This of triangulation   is passed in the variable we have equate at TRI    For example: grille tri triangulation_reduite    This keyword is used in plt pro      keyword WDEPTH   To specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W        keyword FORPLT   In plt  we want that land points  glam and gphi  be equal to glamt and    gphit regardless of the grid       keyword NOTRI   Useful only when TRI is activated  In this case  grill send back  1 in the    variable tri even if the variable of the common triangles_list is defined    and different of 1       keyword _EXTRA    Used to pass your keywords      keyword TOUT      param MASK  out optional    For the definition  see domdef and the management of subdomains on the web        param  GLAM  out optional    For the definition  see domdef and the management of subdomains on the web        param  GPHI  out optional    For the definition  see domdef and the management of subdomains on the web        param  GDEP  out optional    For the definition  see domdef and the management of subdomains on the web        param  NX  out optional    For the definition  see domdef and the management of subdomains on the web        param  NY  out optional    For the definition  see domdef and the management of subdomains on the web        param  NZ  out optional    For the definition  see domdef and the management of subdomains on the web        param  FIRSTX  out optional    For the definition  see domdef and the management of subdomains on the web        param  FIRSTY  out optional    For the definition  see domdef and the management of subdomains on the web        param  FIRSTZ  out optional    For the definition  see domdef and the management of subdomains on the web                param LASTX  out optional    For the definition  see domdef and the management of subdomains on the web        param  LASTY  out optional    For the definition  see domdef and the management of subdomains on the web        param  LASTZ  out optional    For the definition  see domdef and the management of subdomains on the web        param  E1  out optional    For the definition  see domdef and the management of subdomains on the web       param  E2  out optional    For the definition  see domdef and the management of subdomains on the web        param  E3  out optional    For the definition  see domdef and the management of subdomains on the web       uses   cm_4mesh    cm_4data      restrictions    Use the variable vargrid      restrictions   Vargrid must be  T   W   U   V  ou  F       history    Sebastien Masson  smasson lodyc jussieu fr   12 2 1999                         10 11 1999  forplt      version    Id        todo Comment ecrire la remarque sur les inputs             pro grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz  e1  e2  e3  TRI   tri  NOTRI   notri  TOUT   tout  FORPLT   forplt  IFPLTZ   ifpltz  WDEPTH   wdepth  _EXTRA   ex     include commons     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance     vargrid   strupcase strmid vargrid 0 reverse_offset      if vargrid eq  W  then wdepth   1   if keyword_set tout  then begin     savedbox   1b     saveboxparam   boxparam4grille dat      domdef  gridtype   vargrid  _EXTRA   ex   endif   tempdeux   systime 1            For key_performance  2       IF keyword_set wdepth  THEN BEGIN     firstz   firstzw      lastz   lastzw     nz   nzw   ENDIF ELSE BEGIN     firstz   firstzt     lastz   lastzt     nz   nzt   ENDELSE       CASE 1 OF      grid T and W       vargrid eq  T  OR vargrid eq  W  : begin  scalars       nx   nxt       ny   nyt       firstx   firstxt       firsty   firstyt       lastx   lastxt       lasty   lastyt  2d vectors       IF arg_present glam  THEN glam   glamt firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphit firstx:lastx  firsty:lasty        IF arg_present e1  THEN e1   e1t firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2   e2t firstx:lastx  firsty:lasty   3d vectors        IF keyword_set forplt  THEN mask   tmask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask   tmask firstx:lastx  firsty:lasty  firstz:lastz      end     grid U       vargrid eq  U : begin  scalars       nx   nxu       ny   nyu       firstx   firstxu       firsty   firstyu       lastx   lastxu       lasty   lastyu  2d vectors       IF arg_present glam  THEN glam   glamu firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphiu firstx:lastx  firsty:lasty        if keyword_set forplt  then BEGIN         mask   1b tmask firstx:lastx  firsty:lasty  firstz          eastboarder   mask shift mask  1  0 mask         westboarder   mask shift mask   1  0 mask         if key_periodic NE 1 OR nx NE jpi then westboarder nx 1      0b         tmp1   shift eastboarder  0  1          tmp1  0    0b         tmp2   shift eastboarder  0   1          tmp2  ny 1    0b         add    temporary tmp1 temporary tmp2 1b eastboarder 1b temporary westboarder          eastboarder   temporary eastboarder temporary add          tmp1    mask shift mask  0   1 shift mask  0  1  NE 1b         tmp1  ny 1    1b         tmp1  0    1b         tmp2    mask shift mask   1  0 shift mask  1  0  NE 1b         if key_periodic NE 1 OR nx NE jpi then begin           tmp2 nx 1      1b           tmp2 0      0b         endif         no1   temporary tmp1 temporary tmp2          tmp   temporary eastboarder temporary no1 mask         mask 0:nx 2      0b          tmp   temporary tmp temporary mask          tmp   where tmp GE 1          if tmp 0  NE  1 then begin           glam tmp     glamt firstx:lastx  firsty:lasty tmp            gphi tmp     gphit firstx:lastx  firsty:lasty tmp          endif       ENDIF       IF arg_present e1  THEN e1    e1u firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2    e2u firstx:lastx  firsty:lasty   3d vectors       IF keyword_set forplt  THEN mask    umask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask    umask firstx:lastx  firsty:lasty  firstz:lastz      end     grid V       vargrid eq  OPAPTDHV  or vargrid eq  OPAPT3DV          or vargrid eq  V : begin  scalars       nx   nxv       ny   nyv       firstx   firstxv       firsty   firstyv       lastx   lastxv       lasty   lastyv  2d vectors       IF arg_present glam  THEN glam   glamv firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphiv firstx:lastx  firsty:lasty        if keyword_set forplt  then BEGIN          mask   1b tmask firstx:lastx  firsty:lasty  firstz          northboarder   mask shift mask  0  1 mask         southboarder   mask shift mask  0   1 mask         southboarder  ny 1    0b         tmp1   shift northboarder   1  0          if key_periodic NE 1 OR nx NE jpi then tmp1 nx 1      0b         tmp2   shift northboarder  1  0          if key_periodic NE 1 OR nx NE jpi then tmp2 0      0b         add    temporary tmp1 temporary tmp2 1b northboarder 1b southboarder          northboarder   temporary northboarder temporary add          tmp1    mask shift mask  0   1 shift mask  0  1  NE 1b         tmp1  ny 1    1b         tmp1  0    0b         tmp2    mask shift mask   1  0 shift mask  1  0  NE 1b         if key_periodic NE 1 OR nx NE jpi then begin           tmp2 nx 1      1b           tmp2 0      1b         endif         no1   temporary tmp1 temporary tmp2          tmp   temporary northboarder mask temporary no1          mask  0:ny 2    0b         tmp   temporary tmp temporary mask          tmp   where tmp GE 1          if tmp 0  NE  1 then begin           glam tmp     glamt firstx:lastx  firsty:lasty tmp            gphi tmp     gphit firstx:lastx  firsty:lasty tmp          endif       ENDIF       IF arg_present e1  THEN e1    e1v firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2    e2v firstx:lastx  firsty:lasty   3d vecteurs       IF keyword_set forplt  THEN mask    vmask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask    vmask firstx:lastx  firsty:lasty  firstz:lastz      end     grid F       vargrid eq  OPAPTDHF  or vargrid eq  OPAPT3DF           or vargrid eq  F : begin  scalars       nx   nxf       ny   nyf       firstx   firstxf       firsty   firstyf       lastx   lastxf       lasty   lastyf  2d vectors       IF arg_present glam  THEN glam   glamf firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphif firstx:lastx  firsty:lasty        if keyword_set forplt  then BEGIN          mask   1b tmask firstx:lastx  firsty:lasty  firstz          eastboarder   mask shift mask  1  0 mask         westboarder   mask shift mask   1  0 mask         westboarder nx 1      0b         northboarder   mask shift mask  0  1 mask         southboarder   mask shift mask  0   1 mask         southboarder  ny 1    0b         tmp1   shift northboarder   1  0          if key_periodic NE 1 OR nx NE jpi then tmp1 nx 1      0b         tmp2   shift northboarder  1  0          if key_periodic NE 1 OR nx NE jpi then tmp2 0      0b         add    temporary tmp1 temporary tmp2 1b northboarder 1b southboarder          northboarder   temporary northboarder temporary add          tmp1   shift eastboarder  0  1          tmp1  0    0b         tmp2   shift eastboarder  0   1          tmp2  ny 1    0b         add    temporary tmp1 temporary tmp2 1b eastboarder 1b temporary westboarder          eastboarder   temporary eastboarder temporary add          tmp1    mask shift mask  0   1 shift mask  0  1  NE 1b         tmp1  ny 1    1b         tmp1  0    1b         tmp2    mask shift mask   1  0 shift mask  1  0  NE 1b         if key_periodic NE 1 OR nx NE jpi then begin           tmp2 nx 1      1b           tmp2 0      1b         endif         no1   temporary tmp1 temporary tmp2          tmp    temporary northboarder temporary eastboarder mask temporary no1          mask 0:nx 2      0b          mask  0:ny 2    0b          tmp   temporary tmp temporary mask          tmp   where tmp GE 1          if tmp 0  NE  1 then begin           glam tmp     glamt firstx:lastx  firsty:lasty tmp            gphi tmp     gphit firstx:lastx  firsty:lasty tmp          endif       ENDIF       IF arg_present e1  THEN e1    e1f firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2    e2f firstx:lastx  firsty:lasty   3d vectors        IF keyword_set forplt  THEN mask    fmask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask    fmask firstx:lastx  firsty:lasty  firstz:lastz      END       ELSE:BEGIN        ras   report Wrong definition of vargrid    vargrid  Only T  U  V  W or F are acceptable        stop     END   ENDCASE   IF testvar var   key_performance  EQ 2 THEN       print   temps grille: attribution des scalaires  vecteurs et tableaux   systime 1 tempdeux           Variables refering to the vertical dimension             tempdeux   systime 1            For key_performance  2   if keyword_set wdepth  then begin     gdep   gdepw firstz:lastz      e3   e3w firstz:lastz    endif else begin     gdep   gdept firstz:lastz      e3   e3t firstz:lastz    ENDELSE   for the vertical sections with partial steps   IF keyword_set ifpltz  AND keyword_set key_partialstep  THEN BEGIN     CASE 1 OF       ifpltz EQ  xz  AND ny EQ 1:BEGIN         bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3          good   where bottom NE 0 AND bottom NE nz keyword_set wdepth          bottom   lindgen nx bottom 1l keyword_set wdepth nx         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            IF lastz EQ jpk 1 THEN gdep nz 1    max hdepw            gdep   replicate 1  nx gdep           if keyword_set wdepth  THEN               truegdep   hdepw firstx:lastx  firsty:lasty              ELSE truegdep   hdept firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       ifpltz EQ  yz  AND nx EQ 1:BEGIN         bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3          good   where bottom NE 0 AND bottom NE nz keyword_set wdepth          bottom   lindgen ny bottom 1l keyword_set wdepth ny         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            IF lastz EQ jpk 1 THEN gdep nz 1    max hdepw            gdep   replicate 1  ny gdep           if keyword_set wdepth  THEN               truegdep   hdepw firstx:lastx  firsty:lasty              ELSE truegdep   hdept firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       ELSE:     ENDCASE   ENDIF   IF testvar var   key_performance  EQ 2 THEN       print   temps grille: Variables se rapportant a la dimension verticale   systime 1 tempdeux     Triangulation vector when TRI is activated      if arg_present TRI  then       if triangles_list 0  EQ  1 OR keyword_set notri  then tri    1 ELSE BEGIN      tempdeux   systime 1          pour key_performance  2     msk   bytarr jpi  jpj      msk firstx:lastx  firsty:lasty    1     ind   where  msk triangles_list 0   msk triangles_list 1   msk triangles_list 2    EQ 1       tri   triangles_list  ind firstx firsty jpi      y   tri jpi     x   tri y jpi     tri   x y nx     IF testvar var   key_performance  EQ 2 THEN         print   temps grille: decoupage de la triangulation   systime 1 tempdeux   ENDELSE     To make sure there is not any degenerated dimension  1         mask reform mask   over       glam reform glam   over       gphi reform gphi   over       gdep reform gdep   over       e1 reform e1   over       e2 reform e2   over       e3 reform e3   over     if keyword_set savedbox  THEN restoreboxparam   boxparam4grille dat    if keyword_set key_performance  THEN print   temps grille  systime 1 tempsun       IF NOT keyword_set key_forgetold  THEN BEGIN  updateold   ENDIF      return  end       "); 
    204 a[202] = new Array("./ToBeReviewed/GRILLE/t2v.html", "t2v.pro", "", "             file_comments   Allows to pass a field refering to the grid T on the grid V     thanks to the average res   0 5 res   shift res  0   1        categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id            FUNCTION t2v  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp   We force nxt nxv  etc      firstxv   firstxt    lastxv   lastxt    firstyv   firstyt    lastyv   lastyt    nxv   nxt    nyv   nyt    vargrid    V     if NOT keyword_set valmask  then valmask   1e20    lat1   gphit 0  firstyt     lat2   gphiv 0  lastyv     case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxt and taille 2  eq nyt:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxt:lastxt  firstyt:lastyt              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask   tmask firstxt:lastxt  firstyt:lastyt  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  0   1           res  nyt 1     values f_nan          mask    vmask firstxt:lastxt  firstyt:lastyt  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ nzt:             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxt:lastxt  firstyt:lastyt  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxt:lastxt  firstyt:lastyt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask   tmask firstxt:lastxt  firstyt:lastyt  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxt  nyt  jpt   over           ENDIF ELSE mask   tmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0           res  nyt 1       values f_nan          if taille 3  EQ jpt then BEGIN             mask    vmask firstxt:lastxt  firstyt:lastyt  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxt  nyt  jpt   over           ENDIF ELSE mask    vmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxt:lastxt  firstyt:lastyt  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask   tmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxt  nyt  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0  0           res  nyt 1         values f_nan          mask    vmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxt  nyt  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END     ENDCASE    IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF      return  res END "); 
    205 a[203] = new Array("./ToBeReviewed/GRILLE/tracegrille.html", "tracegrille.pro", "", "             file_comments   Draw the grid      categories       param GLAMIN  in required    The 1d or 2d array in longitude of points of the grid If GLAM GLAMIN    is not specified  it trace the grid specified by vargrid  on the    domain defined by domdef       param GPHIIN  in required    The 1d or 2d array in latitude of points of the grid If GPHI GPHIIN    is not specified  it trace the grid specified by vargrid  on the    domain defined by domdef       keyword XSTRIDE    It is an integer to specify that we want to trace only one line of    constant i every xstride points      keyword YSTRIDE    It is an integer to specify that we want to trace only one line of    constant j every xstride points      keyword OCEAN    To trace the grid only on ocean points        keyword EARTH   To trace the grid only on land points pour ne tracer la grille que sur les points terre      keyword RMOUT   Select to remove all cell having one corner out of the   plot boundaries  x range   y range       keyword _EXTRA   Used to pass your keywords        uses   common pro       examples         IDL  plt indgen jpi jpj nocontour nofill       IDL  vargrid T        IDL  tracegrille ocean color 20       IDL  tracegrille earth color 80        history   Sebastien Masson  smasson lodyc jussieu fr       version    Id                              PRO tracegrille  glamin  gphiin  OCEAN   ocean  EARTH   earth                      XSTRIDE   xstride  YSTRIDE   ystride  RMOUT   rmout                      _extra   extra       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance   to avoid warning message   oldexcept    except    except   0   if n_elements key_gridtype  EQ 0 then key_gridtype    c      if n_elements glamin    n_elements gphiin  EQ 0 then BEGIN     grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz     IF keyword_set ocean  AND key_gridtype EQ  c  THEN BEGIN   we reduce the mask to take into account the point located ON the coastline        CASE vargrid OF          U :BEGIN           mask   tmask firstx:lastx  firsty:lasty            IF NOT keyword_set key_periodic  OR nx NE jpi               THEN tmpx   mask nx 1              mask    mask shift mask   1  0    1           IF NOT keyword_set key_periodic  OR nx NE jpi               THEN mask nx 1      temporary tmpx          END          V :BEGIN           mask   tmask firstx:lastx  firsty:lasty            tmpy   mask  ny 1            mask    mask shift mask  0   1    1           mask  ny 1    temporary tmpy          END          F :BEGIN           mask   tmask firstx:lastx  firsty:lasty            IF NOT keyword_set key_periodic  OR nx NE jpi               THEN tmpx   mask nx 1              tmpy   mask  ny 1            mask    mask shift mask   1  0 shift mask  0   1 shift mask   1   1    1           mask  ny 1    temporary tmpy            IF NOT keyword_set key_periodic  OR nx NE jpi               THEN mask nx 1      temporary tmpx          END         ELSE:       ENDCASE     ENDIF   ENDIF ELSE BEGIN     glam   glamin     gphi   gphiin     IF  size glam 0  EQ 1 AND  size gphi 0  EQ 1 THEN BEGIN       nx   n_elements glam         ny   n_elements gphi         glam   glam replicate 1  ny        gphi   replicate 1  nx gphi     ENDIF ELSE BEGIN       nx    size glam 1        ny    size glam 2      ENDELSE   ENDELSE   if n_elements mask  EQ 0 then mask   replicate 1b  nx  ny    if  size mask 0  EQ 3 then mask   mask    0      IF keyword_set RMOUT  THEN BEGIN     out   where glam GT max x range  OR glam LT min x range                    OR gphi GT max y range  OR gphi LT min y range      IF out 0  NE  1 THEN BEGIN       glam out     values f_nan       gphi out     values f_nan     ENDIF   ENDIF     IF keyword_set ocean  then BEGIN     earth   where mask EQ 0      if earth 0  NE  1 then begin       glam earth     values f_nan       gphi earth     values f_nan     ENDIF     earth   0   ENDIF     IF keyword_set earth  THEN BEGIN     ocean   where mask EQ 1      if ocean 0  NE  1 then begin       glam ocean     values f_nan       gphi ocean     values f_nan     ENDIF     ocean   0   ENDIF     if NOT keyword_set xstride  then xstride   1   if NOT keyword_set ystride  then ystride   1   case key_gridtype of      c :BEGIN       for i   0  ny 1  ystride do begin         plots   glam  i  gphi  i  _extra   extra       endfor       for i   0  nx 1  xstride do begin         plots   glam i    gphi i    _extra   extra       endfor     END      e :BEGIN       shifted   glam 0  0  LT glam 0  1        glam2   glam glam 1 glam 0 2        if shifted then begin         for i   0  ny 2 do BEGIN           xx    transpose glam  i   glam2  i            yy    transpose gphi  i   gphi  i 1            plots  xx 0:2 nx 2  yy 0:2 nx 2  _extra   extra         ENDFOR       ENDIF ELSE BEGIN         for i   1  ny 1 do BEGIN           xx    transpose glam  i   glam2  i            yy    transpose gphi  i   gphi  i 1            plots  xx 0:2 nx 2  yy 0:2 nx 2  _extra   extra         ENDFOR       ENDELSE       for i   1   ny 1 2 do           plots   glam 0  2 i 1  glam 0  2 i               gphi 0  2 i 1  gphi 0  2 i  _extra   extra       for i   0   ny 2 2 do           plots   glam nx 1  2 i  glam nx 1  2 i 1               gphi nx 1  2 i  gphi nx 1  2 i 1  _extra   extra     END   endcase    if keyword_set key_performance  THEN print   temps trace grille  systime 1 tempsun     except   oldexcept    return end"); 
    206 a[204] = new Array("./ToBeReviewed/GRILLE/u2t.html", "u2t.pro", "", "             file_comments   Allows to pass a field refering to the grid U on the grid T     thanks to the average:    res   0 5 res   shift res  1  0           categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id            FUNCTION u2t  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp  on force nxt nxu  etc      firstxt   firstxu    lastxt   lastxu    firstyt   firstyu    lastyt   lastyu    nxt   nxu    nyt   nyu    vargrid    T     if NOT keyword_set valmask  then valmask   1e20    lon1   glamt firstxt  0     lon2   glamu lastxu  0      case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxu and taille 2  eq nyu:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxu:lastxu  firstyu:lastyu              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask    umask firstxu:lastxu  firstyu:lastyu  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  1  0           if NOT  keyword_set key_periodic  AND nxu EQ jpi  then res 0       values f_nan          mask   tmask firstxu:lastxu  firstyu:lastyu  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ nzt:             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxu:lastxu  firstyu:lastyu  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxu:lastxu  firstyu:lastyu                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask    umask firstxu:lastxu  firstyu:lastyu  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxu  nyu  jpt   over           ENDIF ELSE mask    umask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0           if NOT  keyword_set key_periodic  AND nxu EQ jpi  then res 0         values f_nan          if taille 3  EQ jpt then BEGIN             mask   tmask firstxu:lastxu  firstyu:lastyu  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxu  nyu  jpt   over           ENDIF ELSE mask   tmask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxu:lastxu  firstyu:lastyu  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask    umask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxu  nyu  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0  0           if NOT  keyword_set key_periodic  AND nxu EQ jpi  then res 0           values f_nan          mask   tmask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxu  nyu  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END    endcase    IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF        return  res END "); 
    207 a[205] = new Array("./ToBeReviewed/GRILLE/umask.html", "umask.pro", "", "             file_comments   calculate umask  Economize memory  we do not need to keep umask anymore       categories   Utilities       returns   A 3d array corresponding to umask        uses   common pro      examples   Used like if umask was a known array by substituing umask by  umask    For example: Instaed of write umask domainef  we have to write  umask domainef      MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                          6 99 introduction of the key_shift                         20 9 99 cas jpk 1  Thanks to  jpblod ipsl jussieu fr       version    Id            FUNCTION umask       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance     CASE size tmask   n_dimensions  OF     2:res   tmask shift tmask   1  0      3:res   tmask shift tmask   1  0  0    ENDCASE        if NOT keyword_set key_periodic  then res jpi 1        umaskred   if keyword_set key_performance  THEN print   temps umask  systime 1 tempsun      return  res end"); 
    208 a[206] = new Array("./ToBeReviewed/GRILLE/v2t.html", "v2t.pro", "", "             file_comments   Allows to pass a field refering to the grid V on the grid T     thanks to the average:    res   0 5 res   shift res  1  0           categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id       todo seb: nom du input            FUNCTION v2t  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp  We force nxt nxv  etc      firstxt   firstxv    lastxt   lastxv    firstyt   firstyv    lastyt   lastyv    nxt   nxv    nyt   nyv    vargrid    T     if NOT keyword_set valmask  then valmask   1e20    lat1   gphit 0  firstyt     lat2   gphiv 0  lastyv     case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxv and taille 2  eq nyv:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxv:lastxv  firstyv:lastyv              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask    vmask firstxv:lastxv  firstyv:lastyv  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  0   1           res  0     values f_nan          mask   tmask firstxv:lastxv  firstyv:lastyv  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ nzt:             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxv:lastxv  firstyv:lastyv  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxv:lastxv  firstyv:lastyv                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask    vmask firstxv:lastxv  firstyv:lastyv  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxv  nyv  jpt   over           ENDIF ELSE mask    vmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0           res  0       values f_nan          if taille 3  EQ jpt then BEGIN             mask   tmask firstxv:lastxv  firstyv:lastyv  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxv  nyv  jpt   over           ENDIF ELSE mask   tmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxv:lastxv  firstyv:lastyv  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask    vmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxv  nyv  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0  0           res  0         values f_nan          mask   tmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxv  nyv  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END    endcase     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold    ENDIF       return  res END "); 
    209 a[207] = new Array("./ToBeReviewed/GRILLE/vmask.html", "vmask.pro", "", "             file_comments   calculate fmask  Economize memory  we do not need to keep vmask anymore       categories   Utilities      returns   A 3d array corresponding to vmask       examples   Used like if vmask was a known array by substituing vmask by  vmask    For example: Instaed of write vmask domainef  we have to write  vmask domainef       history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                         20 9 99 cas jpk 1  merci jpblod ipsl jussieu fr       version    Id            FUNCTION vmask     compile_opt idl2  strictarrsubs    common   tempsun   systime 1             For key_performance     CASE size tmask   n_dimensions  OF     2:res   tmask shift tmask  0   1      3:res   tmask shift tmask  0   1  0    ENDCASE     res  jpj 1      vmaskred   if keyword_set key_performance  THEN print   temps vmask  systime 1 tempsun      return  res end"); 
     199a[197] = new Array("./ToBeReviewed/GRILLE/decoupeterre.html", "decoupeterre.pro", "", "             file_comments   Similar to grille  Here  when vargrid is not  T  or  W  we have to   recuperate Tmask  glamt  gphit and the array of triangulation on the   considerated subdomain for the drawing  The specificity of decoupeterre   in comparaison with grille  is that we take  if possible  a subdomain   just a little bit bigger than the one defined by domdef in order to be   sure that the mask we draw will cover over all the drawing       categories   utilities      keyword TRI    This keyword serve to obtain  thanks to grille  the triangulation which   refer to the grid but only on the part of the zoom  This of triangulation   is passed in the variable we have equate at TRI    For example: grille tri triangulation_reduite    This keyword is used in plt pro      keyword WDEPTH   To specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W       uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          24 2 99      version    Id: decoupeterre pro 142 2006 07 21 12:47:49Z navarro        todo seb : manque tous les param et plein de keywords                  PRO decoupeterre  mask  glam  gphi  gdep  TYPE   type  TRI   tri  INDICEZOOM   indicezoom  COINMONTE   coinmonte  COINDESCEND   coindescend  WDEPTH   wdepth  REALSECTION   realsection  USETRI   usetri  _extra   ex       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance     if vargrid EQ  W  then wdepth   1       horizontal parameters     if possible extent the domain according to the grid type   default case   case vargrid of      U :BEGIN       firstx   0    min firstxt  firstxu 1        lastx    max lastxt  lastxu 1    min firstyt  firstyu 1        lasty    max lastyt  lastyu 1    min firstxt  firstxv 1        lastx    max lastxt  lastxv 1    min firstyt  firstyv 1        lasty    max lastyt  lastyv 1    min firstxt  firstxf 1        lastx    max lastxt  lastxf 1    min firstyt  firstyf 1        lasty    max lastyt  lastyf 1    firstx 1 :lastx  firsty:lasty            ELSE glam   glamu 0    firstx 1 :lastx  firsty:lasty        ENDELSE     END      yz :BEGIN       if keyword_set realsection  EQ 0 then begin         if vargrid EQ  U  OR vargrid EQ  F  then             gphi   gphiu firstx:lastx  firsty:lasty        ENDIF ELSE BEGIN            to drawsectionbottom           if vargrid EQ  U  OR vargrid EQ  F  OR finite gphiv 0  EQ 0 then             gphi   gphif firstx:lastx  0    firsty 1 :lasty            ELSE gphi   gphiv firstx:lastx  0    firsty 1 :lasty        ENDELSE     END     ELSE:   ENDCASE     vertical boundaries     if keyword_set wdepth   then begin     firstz   0    min firstzt  firstzw 1      lastz    max lastzt  lastzw 1     jpk 1    ENDIF ELSE BEGIN     firstz   firstzt     lastz   lastzt   ENDELSE    nz   lastz firstz 1     mask     case type of      xy :BEGIN       mask   tmask firstx:lastx  firsty:lasty  firstz        profond   firstz NE 0     END   for the verical section  we have to choose the right mask according   to the grid point and to the direction of the section      xz :BEGIN       if vargrid EQ  V  OR vargrid EQ  F  then begin         mask    vmask firstx:lastx  firstyv:lastyv  firstz:lastz        ENDIF ELSE mask   tmask firstx:lastx  firsty:lasty  firstz:lastz      END      yz :BEGIN       if vargrid EQ  U  OR vargrid EQ  F  then begin         mask    umask firstxu:lastxu  firsty:lasty  firstz:lastz        ENDIF ELSE mask   tmask firstx:lastx  firsty:lasty  firstz:lastz      END     ELSE:mask   tmask firstx:lastx  firsty:lasty  firstz:lastz    endcase     vertical axis     when we do a real section we directly plot the gdepw    in drawsectionbottom pro  instead of contouring the mask at 0 5 at   gdept   IF keyword_set realsection  EQ 0 then gdep   gdept firstz:lastz      ELSE BEGIN       if lastz EQ jpk 1 then     we add some fictive very deep level that will not be used but that is   necessary to avoid array size bugs in draw bottom section        gdep    gdepw firstz 1:lastz  2 gdept jpk 1         ELSE gdep   gdepw firstz 1:lastz 1       gdep   gdepw firstz:lastz    special case when we are using the partial steps in the vertical   section that are only 1 point wide    in that case  the z axis is a 2d array and we modify the depth of   the last level ocean with hdepw that is the real depth of the bottom      CASE 1 OF       keyword_set key_partialstep  and type EQ  xz            AND ny EQ 1 AND keyword_set realsection :BEGIN         bottom   total mask  3          good   where bottom NE 0 AND bottom NE nz 1          bottom   lindgen nx bottom nx         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            gdep   replicate 1  nx gdep           truegdep   hdepw firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       keyword_set key_partialstep  and type EQ  yz            AND nx EQ 1 AND keyword_set realsection :BEGIN          bottom   total mask  3          good   where bottom NE 0 AND bottom NE nz 1          bottom   lindgen ny bottom ny         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            gdep   replicate 1  ny gdep           truegdep   hdepw firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       ELSE:     ENDCASE   ENDELSE     Triangulation vector when TRI is activated      IF arg_present TRI  then       if triangles_list 0  EQ  1 OR usetri LT 1 then tri    1 ELSE BEGIN   If we are tracing a deep level  we redo the triangulation     if keyword_set profond  then begin       tri   triangule mask  coinmonte   coinmonte  coindescend   coindescend  _extra   ex        indicezoom    lindgen jpi  jpj firstx:lastx  firsty:lasty    ENDIF ELSE BEGIN    Otherwise  we recuperate the part of triangulation that interest us and we number them well        if nx EQ jpi AND ny EQ jpj then tri   triangles_list ELSE BEGIN          msk   bytarr jpi  jpj          msk firstx:lastx  firsty:lasty    1         ind   where  msk triangles_list 0    EQ 1                        AND msk triangles_list 1    EQ 1                        AND msk triangles_list 2    EQ 1           tri   triangles_list  ind firstx firsty jpi          y   tri jpi         x   tri y jpi         tri   x y nx       ENDELSE     ENDELSE   ENDELSE     if keyword_set key_performance  THEN print   temps decoupeterre  systime 1 tempsun      return end "); 
     200a[198] = new Array("./ToBeReviewed/GRILLE/domdef.html", "domdef.pro", "", "             file_comments    Allows to extract a subdomain of study by providing parameters    needed for drawings  see outputs       categories      param Z1  in optional    For a 3d domain whose the horizontal part cover all glam       param Z2  in optional    For a 3d domain whose the horizontal part cover all gphi      param X1  in optional    Define the minimum longitude   All levels are selected       param X2  in optional    Define the maximum longitude   All levels are selected       param Y1  in optional    Define the minimum latitude   All levels are selected       param Y2  in optional    Define the maximum latitude   All levels are selected       keyword ENDPOINTS   A four elements vector  x1 y1 x2 y2  used to specify   that domdef must define the box used to make a plot  pltz  pltt    plt1d  done strictly along the line  that can have any direction    starting at  x1  y1  ending at  x2  y2  When defining endpoints    you must also define TYPE which define the type of plots    pltz   xt   yt   zt   x   y   z   t  will used   ENDPOINTS keywords      keyword FINDALWAYS   Force to redefine a box even when none point is find in the box     In this case  we select all the grid       keyword GRIDTYPE   It is a string or a vector of strings containing the grids s name     Only determinated by  T U V W F  for which the calculation    must be done      For example:  T  ou  T U       keyword MEMEINDICES   It is possible that points t u v and F correspond to a same geographic   box which do not concern the same array indexes  This is sometimes a   problem  or at least serious complications  in programs where several   type of grid interven  see norme  curl  Activate MEMEINDICE to   force domdef to take same indexes  those of the grid T  for all other   grids       keyword INDEX    We activate it if we want that all elements passed in input of domdef    refer to indexes of glam  gphi and gdep arrays rather than to values    of these arrays       keyword XINDEX    We activate it if we want that all elements passed in input of domdef    and concerning the X dimension refer to indexes of glam arrays rather    than to values of these arrays       keyword YINDEX    We activate it if we want that all elements passed in input of domdef    and concerning the X dimension refer to indexes of gphi arrays rather    than to values of these arrays        keyword ZINDEX    We activate it if we want that all elements passed in input of domdef    and concerning the X dimension refer to indexes of gdep arrays rather    than to values of these arrays      OUTPUTS:on recupere pour les 4 grilles t u v f      nxt u v:entier qui contient le nombre de pts en longitude de      la grille reduite au domaine      nyt u v:entier qui contient le nombre de pts en latitude de      la grille reduite au domaine      nzt w:entier qui contient le nombre de pts en profondeur de      la grille reduite au domaine 3D      firstxt u v f: le first indice qui delimite le sous domaine     suivant x      firstyt u v f: le first indice qui delimite le sous domaine     suivant y      firstzt w: le first indice qui delimite le sous domaine     suivant z      lastxt u v f: le last indice qui delimite le sous domaine     suivant x      lastyt u v f: le last indice qui delimite le sous domaine     suivant y      lastzt w: le last indice qui delimite le sous domaine     suivant z      uses   common pro        history   Sebastien Masson  smasson lodyc jussieu fr   8 2 98   rewrite everything  debug and spee up Sebastien Masson April 2005      version    Id: domdef pro 142 2006 07 21 12:47:49Z navarro        todo seb: output pas clair  pas d input required          pro domdef  x1  x2  y1  y2  z1  z2  FINDALWAYS   findalways                 GRIDTYPE   gridtype  MEMEINDICES   memeindices                 XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex                 ENDPOINTS   endpoints  TYPE   type                 INDEX   index  _extra   ex     include commons     compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             For key_performance     CASE N_PARAMS  OF     0:     1:     2:     4:     6:     ELSE:BEGIN       ras   report Bad number of parameter in the call of domdef        RETURN     END   ENDCASE     IF keyword_set endpoints  THEN BEGIN     IF NOT keyword_set type  THEN BEGIN        dummy   report If domdef is used do find the box associated                             to endpoints  you must also specify type keyword        return     ENDIF      CASE N_PARAMS  OF       0:       1:boxzoom    x1        2:boxzoom    x1  x2        4:boxzoom    x1  x2  y1  y2        6:boxzoom    x1  x2  y1  y2  z1  z2      ENDCASE     section  BOXZOOM   boxzoom  ENDPOINTS   endpoints  TYPE   type   ONLYBOX     return   ENDIF         recall domdef when there is only one input parameter       IF N_PARAMS  EQ 1 THEN BEGIN     CASE n_elements x1  OF       2:domdef  x1 0  x1 1  FINDALWAYS   findalways  GRIDTYPE   gridtype  MEMEINDICES   memeindices  XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex  INDEX   index  _extra   ex       4:domdef  x1 0  x1 1  x1 2  x1 3  FINDALWAYS   findalways  GRIDTYPE   gridtype  MEMEINDICES   memeindices  XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex  INDEX   index  _extra   ex       6:domdef  x1 0  x1 1  x1 2  x1 3  x1 4  x1 5  FINDALWAYS   findalways  GRIDTYPE   gridtype  MEMEINDICES   memeindices  XINDEX   xindex  YINDEX   yindex  ZINDEX   zindex  INDEX   index  _extra   ex       ELSE:BEGIN         ras   report Bad number of elements in x1          RETURN       END     ENDCASE     RETURN     ENDIF     default definitions and checks     IF NOT keyword_set gridtype  THEN gridtype    T   U   V   W   F      ELSE gridtype   strupcase gridtype    IF keyword_set memeindices  THEN gridtype    T  gridtype    IF finite glamu 0  eq 0 THEN gridtype   gridtype where gridtype NE  U    IF finite glamv 0  eq 0 THEN gridtype   gridtype where gridtype NE  V    default definitions   lon1t   99999    lon2t    99999    lat1t   99999    lat2t    99999    lon1u   99999    lon2u    99999    lat1u   99999    lat2u    99999    lon1v   99999    lon2v    99999    lat1v   99999    lat2v    99999    lon1f   99999    lon2f    99999    lat1f   99999    lat2f    99999    vert1t   99999    vert2t    99999    vert1w   99999    vert2w    99999      IF jpj EQ 1 THEN BEGIN      IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN       glamt   reform glamt  jpi  jpj   over        gphit   reform gphit  jpi  jpj   over      ENDIF      IF  where gridtype eq  U 0  NE  1 THEN BEGIN       glamu   reform glamu  jpi  jpj   over        gphiu   reform gphiu  jpi  jpj   over      ENDIF       IF  where gridtype eq  V 0  NE  1 THEN BEGIN       glamv   reform glamv  jpi  jpj   over        gphiv   reform gphiv  jpi  jpj   over      ENDIF       IF  where gridtype eq  F 0  NE  1 THEN BEGIN       glamf   reform glamf  jpi  jpj   over        gphif   reform gphif  jpi  jpj   over      ENDIF     ENDIF     IF N_PARAMS  EQ 2 THEN GOTO  vertical         define all horizontal parameters     lon1 et lon2   lat1 et lat2   firstx tuvf  lastx tuvf  nx tuvf      check if the grid is defined for U and V points  If not  take care   of the cases gridtype eq  U  or  V      errstatus   0   IF  finite glamu 0 gphiu 0  EQ 0 OR n_elements glamu  EQ 0 OR n_elements gphiu  EQ 0  AND  where gridtype eq  U 0  NE  1 THEN BEGIN     firstxu    values f_nan     lastxu    values f_nan     nxu    values f_nan     okgrid   where gridtype NE  U  count      IF count NE 0 THEN gridtype   gridtype okgrid        ELSE errstatus   report U grid is undefined  Impossible to call domdef with vargid    U    ENDIF     IF  finite glamv 0 gphiv 0  EQ 0 OR n_elements glamv  EQ 0 OR n_elements gphiv  EQ 0  AND  where gridtype eq  V 0  NE  1 THEN BEGIN     firstxv    values f_nan     lastxv    values f_nan     nxv    values f_nan     okgrid   where gridtype NE  V  count      IF count NE 0 THEN gridtype   gridtype okgrid        ELSE errstatus   report V grid is undefined  Impossible to call domdef with vargid    V    ENDIF   IF errstatus EQ  1 THEN return       horizontal domain defined with lon1  lon2  lat1 and lat2       IF N_PARAMS  EQ 0       OR    N_PARAMS  EQ 4 OR N_PARAMS  EQ 6             AND NOT keyword_set xindex  AND NOT keyword_set yindex  AND NOT keyword_set index    THEN BEGIN     IF N_PARAMS  EQ 0 THEN BEGIN   find lon1 and lon2 the longitudinal boudaries of the full domain       IF  where gridtype eq  T 0  NE  1 THEN lon1t   min glamt  max   lon2t        IF  where gridtype eq  W 0  NE  1 AND  where gridtype eq  T 0  EQ  1 THEN lon1t   min glamt  max   lon2t        IF  where gridtype eq  U 0  NE  1 THEN lon1u   min glamu  max   lon2u        IF  where gridtype eq  V 0  NE  1 THEN lon1v   min glamv  max   lon2v        IF  where gridtype eq  F 0  NE  1 THEN lon1f   min glamf  max   lon2f        lon1   min lon1t  lon1u  lon1v  lon1f        lon2   max lon2t  lon2u  lon2v  lon2f    find lat1 and lat2 the latitudinal boudaries of the full domain       IF  where gridtype eq  T 0  NE  1 THEN lat1t   min gphit  max   lat2t        IF  where gridtype eq  W 0  NE  1 AND  where gridtype eq  T 0  EQ  1 THEN lat1t   min gphit  max   lat2t        IF  where gridtype eq  U 0  NE  1 THEN lat1u   min gphiu  max   lat2u        IF  where gridtype eq  V 0  NE  1 THEN lat1v   min gphiv  max   lat2v        IF  where gridtype eq  F 0  NE  1 THEN lat1f   min gphif  max   lat2f        lat1   min lat1t  lat1u  lat1v  lat1f        lat2   max lat2t  lat2u  lat2v  lat2f      ENDIF ELSE BEGIN        lon1   min x1  x2  max   lon2        lat1   min y1  y2  max   lat2      ENDELSE   find firstxt  firstxt  nxt and nyt according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN       dom   where   glamt GE lon1  AND  glamt LE lon2                       AND  gphit GE lat1  AND  gphit LE lat2          IF  dom 0  EQ  1  THEN BEGIN         IF keyword_set findalways  THEN BEGIN           print   WARNING  empty T points box  we get the neighnors to define a new box            neig1   neighbor lon1  lat1  glamt  gphit  sphere   keyword_set key_onearth    keyword_set key_irregular            neig2   neighbor lon2  lat2  glamt  gphit  sphere   keyword_set key_onearth    keyword_set key_irregular            CASE N_PARAMS  OF             4:domdef  min glamt neig1  max glamt neig2  min gphit neig1  max gphit neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex             6:domdef  min glamt neig1  max glamt neig2  min gphit neig1  max gphit neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex           ENDCASE           RETURN         ENDIF ELSE BEGIN           ras   report WARNING  The box does not contain any T points            firstxt    1   lastxt    1   nxt   0           firstyt    1   lastyt    1   nyt   0         ENDELSE       ENDIF ELSE BEGIN         jyt   dom   jpi         ixt   temporary dom  MOD jpi         firstxt   min temporary ixt  max   lastxt          firstyt   min temporary jyt  max   lastyt          nxt   lastxt   firstxt   1         nyt   lastyt   firstyt   1       ENDELSE     ENDIF   find firstxu  firstxu  firstyu  firstyu  nxu and nyu   according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  U 0  NE  1 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstxu   firstxt   lastxu   lastxt   nxu   nxt         firstyu   firstyt   lastyu   lastyt   nyu   nyt       ENDIF ELSE BEGIN         dom   where   glamu GE lon1  AND  glamu LE lon2                         AND  gphiu GE lat1  AND  gphiu LE lat2            IF  dom 0  EQ  1  THEN BEGIN           IF keyword_set findalways  THEN BEGIN   if t grid parameters alreday defined  we use them               CASE 1 OF                where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                 print   WARNING  empty U points box  we use the same index as T points                  firstxu   firstxt   lastxu   lastxt   nxu   nxt                 firstyu   firstyt   lastyu   lastyt   nyu   nyt               END               ELSE:BEGIN                 print   WARNING  empty U points box  we get the neighnors to define a new box                  neig1   neighbor lon1  lat1  glamu  gphiu  sphere   keyword_set key_onearth    keyword_set key_irregular                  neig2   neighbor lon2  lat2  glamu  gphiu  sphere   keyword_set key_onearth    keyword_set key_irregular                  CASE N_PARAMS  OF                   4:domdef  min glamu neig1  max glamu neig2  min gphiu neig1  max gphiu neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                   6:domdef  min glamu neig1  max glamu neig2  min gphiu neig1  max gphiu neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                 ENDCASE                 RETURN               END             ENDCASE           ENDIF ELSE BEGIN             ras   report WARNING  The box does not contain any U points              firstxu    1   lastxu    1   nxu   0             firstyu    1   lastyu    1   nyu   0           ENDELSE         ENDIF ELSE BEGIN           jyu   dom   jpi           ixu   temporary dom  MOD jpi           firstxu   min temporary ixu  max   lastxu            firstyu   min temporary jyu  max   lastyu            nxu   lastxu   firstxu   1           nyu   lastyu   firstyu   1         ENDELSE       ENDELSE     ENDIF   find firstxv  firstxv  firstyv  firstyv  nxv and nyv    according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  V 0  NE  1 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstxv   firstxt   lastxv   lastxt   nxv   nxt         firstyv   firstyt   lastyv   lastyt   nyv   nyt       ENDIF ELSE BEGIN         dom   where   glamv GE lon1  AND  glamv LE lon2                         AND  gphiv GE lat1  AND  gphiv LE lat2            IF  dom 0  EQ  1  THEN BEGIN           IF keyword_set findalways  THEN BEGIN             CASE 1 OF                where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                 print   WARNING  empty V points box  we use the same index as T points                  firstxv   firstxt   lastxv   lastxt   nxv   nxt                 firstyv   firstyt   lastyv   lastyt   nyv   nyt               END                 where gridtype eq  U 0  NE  1:BEGIN                 print   WARNING  empty V points box  we use the same index as U points                  firstxv   firstxu   lastxv   lastxu   nxv   nxu                 firstyv   firstyu   lastyv   lastyu   nyv   nyu               END                ELSE:BEGIN                 print   WARNING  empty V points box  we get the neighnors to define a new box                  neig1   neighbor lon1  lat1  glamv  gphiv  sphere   keyword_set key_onearth    keyword_set key_irregular                  neig2   neighbor lon2  lat2  glamv  gphiv  sphere   keyword_set key_onearth    keyword_set key_irregular                  CASE N_PARAMS  OF                   4:domdef  min glamv neig1  max glamv neig2  min gphiv neig1  max gphiv neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                   6:domdef  min glamv neig1  max glamv neig2  min gphiv neig1  max gphiv neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                 ENDCASE                 RETURN               END             ENDCASE           ENDIF ELSE BEGIN             ras   report WARNING  The box does not contain any V points              firstxv    1   lastxv    1   nxv   0             firstyv    1   lastyv    1   nyv   0           ENDELSE         ENDIF ELSE BEGIN           jyv   dom   jpi           ixv   temporary dom  MOD jpi           firstxv   min temporary ixv  max   lastxv            firstyv   min temporary jyv  max   lastyv            nxv   lastxv   firstxv   1           nyv   lastyv   firstyv   1         ENDELSE       ENDELSE     ENDIF   find firstxf  firstxf  firstyf  firstyf  nxf and nyf   according to lon1  lon2  lat1 and lat2     IF  where gridtype eq  F 0  NE  1 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstxf   firstxt   lastxf   lastxt   nxf   nxt         firstyf   firstyt   lastyf   lastyt   nyf   nyt       ENDIF ELSE BEGIN         dom   where   glamf GE lon1  AND  glamf LE lon2                         AND  gphif GE lat1  AND  gphif LE lat2            IF  dom 0  EQ  1  THEN BEGIN           IF keyword_set findalways  THEN BEGIN             CASE 1 OF                where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                 print   WARNING  empty F points box  we use the same index as T points                  firstxf   firstxt   lastxf   lastxt   nxf   nxt                 firstyf   firstyt   lastyf   lastyt   nyf   nyt               END                 where gridtype eq  U 0  NE  1:BEGIN                 print   WARNING  empty F points box  we use the same index as U points                  firstxf   firstxu   lastxf   lastxu   nxf   nxu                 firstyf   firstyu   lastyf   lastyu   nyf   nyu               END                 where gridtype eq  V 0  NE  1:BEGIN                 print   WARNING  empty F points box  we use the same index as V points                  firstxf   firstxv   lastxf   lastxv   nxf   nxv                 firstyf   firstyv   lastyf   lastyv   nyf   nyv               END                ELSE:BEGIN                 print   WARNING  empty F points box  we get the neighnors to define a new box                  neig1   neighbor lon1  lat1  glamf  gphif  sphere   keyword_set key_onearth    keyword_set key_irregular                  neig2   neighbor lon2  lat2  glamf  gphif  sphere   keyword_set key_onearth    keyword_set key_irregular                  CASE N_PARAMS  OF                   4:domdef  min glamf neig1  max glamf neig2  min gphif neig1  max gphif neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                   6:domdef  min glamf neig1  max glamf neig2  min gphif neig1  max gphif neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices  ZINDEX   zindex  _extra   ex                 ENDCASE                 RETURN               END             ENDCASE             ENDIF ELSE BEGIN             ras   report WARNING  The box does not contain any F points              firstxf    1   lastxf    1   nxf   0             firstyf    1   lastyf    1   nyf   0           ENDELSE         ENDIF ELSE BEGIN           jyf   dom   jpi           ixf   temporary dom  MOD jpi           firstxf   min temporary ixf  max   lastxf            firstyf   min temporary jyf  max   lastyf            nxf   lastxf   firstxf   1           nyf   lastyf   firstyf   1         ENDELSE       ENDELSE     ENDIF     ENDIF ELSE BEGIN     CASE 1 OF       horizontal domain defined with the X and Y indexes            keyword_set xindex  AND keyword_set yindex  OR keyword_set index :BEGIN         fstx   min x1  x2  max   lstx          fsty   min y1  y2  max   lsty          IF fstx LT 0 OR lstx GE jpi THEN BEGIN           ras   report Bad definition of X1 or X2            return         ENDIF         IF fsty LT 0 OR lsty GE jpj THEN BEGIN           ras   report Bad definition of Y1 or Y2            return         ENDIF         nx   lstx   fstx   1         ny   lsty   fsty   1   find lon1t  lon2t  lat1t  lat2t  firstxt  firstxt  nxt and nyt   according to x1  x2  y1  y2         IF  where gridtype eq  T 0  NE  1 OR  where gridtype eq  W 0  NE  1 THEN BEGIN           lon1t   min glamt fstx:lstx  fsty:lsty  max   lon2t            lat1t   min gphit fstx:lstx  fsty:lsty  max   lat2t            firstxt   fstx   lastxt   lstx           firstyt   fsty   lastyt   lsty           nxt   nx   nyt   ny         ENDIF   find lon1u  lon2u  lat1u  lat2u  firstxu  firstxu  nxu and nyu   according to x1  x2  y1  y2         IF  where gridtype eq  U 0  NE  1 THEN BEGIN           lon1u   min glamu fstx:lstx  fsty:lsty  max   lon2u            lat1u   min gphiu fstx:lstx  fsty:lsty  max   lat2u            firstxu   fstx   lastxu   lstx           firstyu   fsty   lastyu   lsty           nxu   nx   nyu   ny         ENDIF   find lon1v  lon2v  lat1v  lat2v  firstxv  firstxv  nxv and nyv   according to x1  x2  y1  y2         IF  where gridtype eq  V 0  NE  1 THEN BEGIN           lon1v   min glamv fstx:lstx  fsty:lsty  max   lon2v            lat1v   min gphiv fstx:lstx  fsty:lsty  max   lat2v            firstxv   fstx   lastxv   lstx           firstyv   fsty   lastyv   lsty           nxv   nx   nyv   ny         ENDIF            find lon1f  lon2f  lat1f  lat2f  firstxf  firstxf  nxf and nyf   according to x1  x2  y1  y2         IF  where gridtype eq  F 0  NE  1 THEN BEGIN           lon1f   min glamf fstx:lstx  fsty:lsty  max   lon2f            lat1f   min gphif fstx:lstx  fsty:lsty  max   lat2f            firstxf   fstx   lastxf   lstx           firstyf   fsty   lastyf   lsty           nxf   nx   nyf   ny         ENDIF         lon1   min lon1t  lon1u  lon1v  lon1f          lon2   max lon2t  lon2u  lon2v  lon2f          lat1   min lat1t  lat1u  lat1v  lat1f          lat2   max lat2t  lat2u  lat2v  lat2f        END       horizontal domain defined with the X index and lat1 lat2           keyword_set xindex :BEGIN         fstx   min x1  x2  max   lstx          IF fstx LT 0 OR lstx GE jpi THEN BEGIN           ras   report Bad definition of X1 or X2            return         ENDIF         nx   lstx   fstx   1         lat1   min y1  y2  max   lat2    find lon1t  lon2t  firstxt  firstxt  firstyt  firstyt  nxt   and nyt according to x1  x2  lat1 and lat2         IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN           firstxt   fstx   lastxt   lstx   nxt   nx           dom   where   gphit fstx:lstx    GE lat1  AND  gphit fstx:lstx    LE lat2              IF  dom 0  EQ  1  THEN BEGIN             IF keyword_set findalways  THEN BEGIN               print   WARNING  empty T points box  we get the neighnors to define a new box                neig1   neighbor lon1  lat1  glamt fstx:lstx    gphit fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                neig2   neighbor lon2  lat2  glamt fstx:lstx    gphit fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                CASE N_PARAMS  OF                 4:domdef  fstx  lstx  min gphit fstx:lstx   neig1  max gphit fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                 6:domdef  fstx  lstx  min gphit fstx:lstx   neig1  max gphit fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex               ENDCASE               RETURN             ENDIF ELSE BEGIN               ras   report WARNING  The box does not contain any T points                firstyt    1   lastyt    1   nyt   0             ENDELSE           ENDIF ELSE BEGIN             jyt   temporary dom    nx             firstyt   min temporary jyt  max   lastyt              nyt   lastyt   firstyt   1           ENDELSE           IF nyt NE 0 THEN lon1t   min glamt firstxt:lastxt  firstyt:lastyt  max   lon2t          ENDIF   find lon1u  lon2u  firstxu  firstxu  firstyu  firstyu  nxu   and nyu according to x1  x2  lat1 and lat2         IF  where gridtype eq  U 0  NE  1 THEN BEGIN           firstxu   fstx   lastxu   lstx   nxu   nx           IF keyword_set memeindices  THEN BEGIN             firstyu   firstyt   lastyu   lastyt   nyu   nyt           ENDIF ELSE BEGIN             dom   where   gphiu fstx:lstx    GE lat1  AND  gphiu fstx:lstx    LE lat2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty U points box  we use the same index as T points                      firstyu   firstyt   lastyu   lastyt   nyu   nyt                   END                    ELSE:BEGIN                     print   WARNING  empty U points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamu fstx:lstx    gphiu fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamu fstx:lstx    gphiu fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  fstx  lstx  min gphiu fstx:lstx   neig1  max gphiu fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  fstx  lstx  min gphiu fstx:lstx   neig1  max gphiu fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                 ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any U points                  firstyu    1   lastyu    1   nyu   0               ENDELSE             ENDIF ELSE BEGIN               jyu   temporary dom    nx               firstyu   min temporary jyu  max   lastyu                nyu   lastyu   firstyu   1             ENDELSE           ENDELSE           IF nyu NE 0 THEN lon1u   min glamu firstxu:lastxu  firstyu:lastyu  max   lon2u          ENDIF   find lon1v  lon2v  firstxv  firstxv  firstyv  firstyv  nxv   and nyv according to x1  x2  lat1 and lat2         IF  where gridtype eq  V 0  NE  1 THEN BEGIN           firstxv   fstx   lastxv   lstx   nxv   nx           IF keyword_set memeindices  THEN BEGIN             firstyv   firstyt   lastyv   lastyt   nyv   nyt           ENDIF ELSE BEGIN             dom   where   gphiv fstx:lstx    GE lat1  AND  gphiv fstx:lstx    LE lat2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as T points                      firstyv   firstyt   lastyv   lastyt   nyv   nyt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as U points                      firstyv   firstyu   lastyv   lastyu   nyv   nyu                   END                    ELSE:BEGIN                     print   WARNING  empty V points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamv fstx:lstx    gphiv fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamv fstx:lstx    gphiv fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  fstx  lstx  min gphiv fstx:lstx   neig1  max gphiv fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  fstx  lstx  min gphiv fstx:lstx   neig1  max gphiv fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                  ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any V points                  firstyv    1   lastyv    1   nyv   0               ENDELSE             ENDIF ELSE BEGIN               jyv   temporary dom    nx               firstyv   min temporary jyv  max   lastyv                nyv   lastyv   firstyv   1             ENDELSE           ENDELSE           IF nyv NE 0 THEN lon1v   min glamv firstxv:lastxv  firstyv:lastyv  max   lon2v          ENDIF   find lon1f  lon2f  firstxf  firstxf  firstyf  firstyf  nxf   and nyf according to x1  x2  lat1 and lat2         IF  where gridtype eq  F 0  NE  1 THEN BEGIN           firstxf   fstx   lastxf   lstx   nxf   nx           IF keyword_set memeindices  THEN BEGIN             firstyf   firstyt   lastyf   lastyt   nyf   nyt           ENDIF ELSE BEGIN             dom   where   gphif fstx:lstx    GE lat1  AND  gphif fstx:lstx    LE lat2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as T points                      firstyf   firstyt   lastyf   lastyt   nyf   nyt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as U points                      firstyf   firstyu   lastyf   lastyu   nyf   nyu                   END                     where gridtype eq  V 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as V points                      firstyf   firstyv   lastyf   lastyv   nyf   nyv                   END                    ELSE:BEGIN                     print   WARNING  empty F points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamf fstx:lstx    gphif fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamf fstx:lstx    gphif fstx:lstx    sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  fstx  lstx  min gphif fstx:lstx   neig1  max gphif fstx:lstx   neig2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  fstx  lstx  min gphif fstx:lstx   neig1  max gphif fstx:lstx   neig2  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   XINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                 ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any F points                  firstyf    1   lastyf    1   nyf   0               ENDELSE             ENDIF ELSE BEGIN               jyf   temporary dom    nx               firstyf   min temporary jyf  max   lastyf                nyf   lastyf   firstyf   1             ENDELSE           ENDELSE           IF nyf NE 0 THEN lon1f   min glamf firstxf:lastxf  firstyf:lastyf  max   lon2f          ENDIF         lon1   min lon1t  lon1u  lon1v  lon1f          lon2   max lon2t  lon2u  lon2v  lon2f        END       horizontal domain defined with the Y index and lon1 lon2           keyword_set yindex :BEGIN         fsty   min y1  y2  max   lsty          IF fsty LT 0 OR lsty GE jpj THEN BEGIN           ras   report Bad definition of Y1 or Y2            return         ENDIF         ny   lsty   fsty   1         lon1   min x1  x2  max   lon2    find lat1t  lat2t  firstxt  firstxt  firstyt  firstyt  nxt   and nyt according to x1  x2  lon1 and lon2         IF  where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1 THEN BEGIN           firstyt   fsty   lastyt   lsty   nyt   ny           dom   where   glamt  fsty:lsty  GE lon1  AND  glamt  fsty:lsty  LE lon2              IF  dom 0  EQ  1  THEN BEGIN             IF keyword_set findalways  THEN BEGIN               print   WARNING  empty T points box  we get the neighnors to define a new box                neig1   neighbor lon1  lat1  glamt  fsty:lsty  gphit  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                neig2   neighbor lon2  lat2  glamt  fsty:lsty  gphit  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                CASE N_PARAMS  OF                 4:domdef  min glamt  fsty:lsty neig1  max glamt  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                 6:domdef  min glamt  fsty:lsty neig1  max glamt  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex               ENDCASE               RETURN             ENDIF ELSE BEGIN               ras   report WARNING  The box does not contain any T points                firstxt    1   lastxt    1   nxt   0             ENDELSE           ENDIF ELSE BEGIN             jxt   temporary dom  MOD jpi             firstxt   min temporary jxt  max   lastxt              nxt   lastxt   firstxt   1           ENDELSE           IF nxt NE 0 THEN lat1t   min gphit firstxt:lastxt  firstyt:lastyt  max   lat2t          ENDIF   find lat1u  lat2u  firstxu  firstxu  firstyu  firstyu  nxu   and nyu according to x1  x2  lon1 and lon2         IF  where gridtype eq  U 0  NE  1 THEN BEGIN           firstyu   fsty   lastyu   lsty   nyu   ny           IF keyword_set memeindices  THEN BEGIN             firstxu   firstyt   lastxu   lastyt   nxu   nxt           ENDIF ELSE BEGIN             dom   where   glamu  fsty:lsty  GE lon1  AND  glamu  fsty:lsty  LE lon2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty U points box  we use the same index as T points                      firstxu   firstxt   lastxu   lastxt   nxu   nxt                   END                    ELSE:BEGIN                     print   WARNING  empty U points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamu  fsty:lsty  gphiu  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamu  fsty:lsty  gphiu  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  min glamu  fsty:lsty neig1  max glamu  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  min glamu  fsty:lsty neig1  max glamu  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                 ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any U points                  firstxu    1   lastxu    1   nxu   0               ENDELSE             ENDIF ELSE BEGIN               jxu   temporary dom  MOD jpi               firstxu   min temporary jxu  max   lastxu                nxu   lastxu   firstxu   1             ENDELSE           ENDELSE           IF nxu NE 0 THEN lat1u   min gphiu firstxu:lastxu  firstyu:lastyu  max   lat2u          ENDIF   find lat1v  lat2v  firstxv  firstxv  firstyv  firstyv  nxv   and nyv according to x1  x2  lon1 and lon2         IF  where gridtype eq  V 0  NE  1 THEN BEGIN           firstyv   fsty   lastyv   lsty   nyv   ny           IF keyword_set memeindices  THEN BEGIN             firstxv   firstyt   lastxv   lastyt   nxv   nxt           ENDIF ELSE BEGIN             dom   where   glamv  fsty:lsty  GE lon1  AND  glamv  fsty:lsty  LE lon2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as T points                      firstxv   firstxt   lastxv   lastxt   nxv   nxt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty V points box  we use the same index as U points                      firstxv   firstxu   lastxv   lastxu   nxv   nxu                   END                    ELSE:BEGIN                     print   WARNING  empty V points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamv  fsty:lsty  gphiv  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamv  fsty:lsty  gphiv  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  min glamv  fsty:lsty neig1  max glamv  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  min glamv  fsty:lsty neig1  max glamv  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                  ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any V points                  firstxv    1   lastxv    1   nxv   0               ENDELSE             ENDIF ELSE BEGIN               jxv   temporary dom  MOD jpi               firstxv   min temporary jxv  max   lastxv                nxv   lastxv   firstxv   1             ENDELSE           ENDELSE           IF nxv NE 0 THEN lat1v   min gphiv firstxv:lastxv  firstyv:lastyv  max   lat2v          ENDIF   find lat1f  lat2f  firstxf  firstxf  firstyf  firstyf  nxf   and nyf according to x1  x2  lon1 and lon2         IF  where gridtype eq  F 0  NE  1 THEN BEGIN           firstyf   fsty   lastyf   lsty   nyf   ny           IF keyword_set memeindices  THEN BEGIN             firstxf   firstyt   lastxf   lastyt   nxf   nxt           ENDIF ELSE BEGIN             dom   where   glamf  fsty:lsty  GE lon1  AND  glamf  fsty:lsty  LE lon2                IF  dom 0  EQ  1  THEN BEGIN               IF keyword_set findalways  THEN BEGIN                 CASE 1 OF                    where gridtype eq  T 0  NE  1 OR  where gridtype EQ  W 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as T points                      firstxf   firstxt   lastxf   lastxt   nxf   nxt                   END                     where gridtype eq  U 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as U points                      firstxf   firstxu   lastxf   lastxu   nxf   nxu                   END                     where gridtype eq  V 0  NE  1:BEGIN                     print   WARNING  empty F points box  we use the same index as V points                      firstxf   firstxv   lastxf   lastxv   nxf   nxv                   END                    ELSE:BEGIN                     print   WARNING  empty F points box  we get the neighnors to define a new box                      neig1   neighbor lon1  lat1  glamf  fsty:lsty  gphif  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      neig2   neighbor lon2  lat2  glamf  fsty:lsty  gphif  fsty:lsty  sphere   keyword_set key_onearth    keyword_set key_irregular                      CASE N_PARAMS  OF                       4:domdef  min glamf  fsty:lsty neig1  max glamf  fsty:lsty neig2  fsty  lsty  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                       6:domdef  min glamf  fsty:lsty neig1  max glamf  fsty:lsty neig2  fsty  lsty  z1  z2  GRIDTYPE   gridtype  MEMEINDICES   memeindices   YINDEX  ZINDEX   zindex  _extra   ex                     ENDCASE                     RETURN                   END                  ENDCASE                ENDIF ELSE BEGIN                 ras   report WARNING  The box does not contain any F points                  firstxf    1   lastyf    1   nxf   0               ENDELSE             ENDIF ELSE BEGIN               jxf   temporary dom  MOD jpi               firstxf   min temporary jxf  max   lastxf                nxf   lastxf   firstxf   1             ENDELSE           ENDELSE           IF nxf NE 0 THEN lat1f   min gphif firstxf:lastxf  firstyf:lastyf  max   lat2f          ENDIF         lat1   min lat1t  lat1u  lat1v  lat1f          lat2   max lat2t  lat2u  lat2v  lat2f        END     ENDCASE   ENDELSE      The extracted domain is it regular or not       CASE 1 OF      where gridtype eq  T 0  NE  1 OR  where gridtype eq  W 0  NE  1  AND nxt NE 0 AND nyt NE 0:BEGIN   to get faster  we first test the most basic cases befor testing the   full array        CASE 0 OF         array_equal glamt firstxt:lastxt  firstyt  glamt firstxt:lastxt  lastyt :key_irregular   1b         array_equal gphit firstxt  firstyt:lastyt  gphit lastxt  firstyt:lastyt :key_irregular   1b         array_equal glamt firstxt:lastxt  firstyt:lastyt                          glamt firstxt:lastxt  firstyt replicate 1  nyt :key_irregular   1b         array_equal gphit firstxt:lastxt  firstyt:lastyt                          replicate 1  nxt gphit firstxt  firstyt:lastyt :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END      where gridtype eq  U 0  NE  1 AND nxu NE 0 AND nyu NE 0:BEGIN       CASE 0 OF         array_equal glamu firstxu:lastxu  firstyu  glamu firstxu:lastxu  lastyu :key_irregular   1b         array_equal gphiu firstxu  firstyu:lastyu  gphiu lastxu  firstyu:lastyu :key_irregular   1b         array_equal glamu firstxu:lastxu  firstyu:lastyu                          glamu firstxu:lastxu  firstyu replicate 1  nyu :key_irregular   1b         array_equal gphiu firstxu:lastxu  firstyu:lastyu                          replicate 1  nxu gphiu firstxu  firstyu:lastyu :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END      where gridtype eq  V 0  NE  1 AND nxv NE 0 AND nyv NE 0:BEGIN       CASE 0 OF         array_equal glamv firstxv:lastxv  firstyv  glamv firstxv:lastxv  lastyv :key_irregular   1b         array_equal gphiv firstxv  firstyv:lastyv  gphiv lastxv  firstyv:lastyv :key_irregular   1b         array_equal glamv firstxv:lastxv  firstyv:lastyv                          glamv firstxv:lastxv  firstyv replicate 1  nyv :key_irregular   1b         array_equal gphiv firstxv:lastxv  firstyv:lastyv                          replicate 1  nxv gphiv firstxv  firstyv:lastyv :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END      where gridtype eq  F 0  NE  1 AND nxf NE 0 AND nyf NE 0:BEGIN       CASE 0 OF         array_equal glamf firstxf:lastxf  firstyf  glamf firstxf:lastxf  lastyf :key_irregular   1b         array_equal gphif firstxf  firstyf:lastyf  gphif lastxf  firstyf:lastyf :key_irregular   1b         array_equal glamf firstxf:lastxf  firstyf:lastyf                          glamf firstxf:lastxf  firstyf replicate 1  nyf :key_irregular   1b         array_equal gphif firstxf:lastxf  firstyf:lastyf                          replicate 1  nxf gphif firstxf  firstyf:lastyf :key_irregular   1b         ELSE:key_irregular   0b       ENDCASE     END     ELSE:   ENDCASE         define all vertical parameters     vert1  vert2   firstz tw  lastz tw  nz tw          vertical:       vertical domain defined with vert1  vert2     IF NOT  keyword_set zindex  OR keyword_set index  THEN BEGIN   define vert1 et vert2     CASE N_PARAMS  OF       2:vert1   min x1  x2  max   vert2        6:vert1   min z1  z2  max   vert2        ELSE:BEGIN         IF  inter byte gridtype  byte T   U   V   F 0  NE  1 THEN             vert1t   min gdept  max   vert2t          IF  where gridtype eq  W 0  NE  1 AND n_elements gdepw  NE 0 THEN             vert1w   min gdepw  max   vert2w          vert1   min vert1t  vert1w          vert2   max vert2t  vert2w        END     ENDCASE   define firstzt  firstzt  nzt     IF  inter byte gridtype  byte T   U   V   F 0  NE  1 THEN BEGIN       domz   where gdept ge vert1 and gdept le vert2  nzt        IF nzt NE 0 THEN BEGIN         firstzt   domz 0          lastzt   domz nzt 1        ENDIF ELSE BEGIN          ras   report WARNING  The box does not contain any T level          firstzt    1         lastzt    1       ENDELSE      ENDIF   define firstzw  firstzw  nzw     IF  where gridtype eq  W 0  NE  1 AND n_elements gdepw  NE 0 THEN BEGIN       IF keyword_set memeindices  THEN BEGIN         firstzw   firstzt         lastzw   lastzt         nzw   nzt       ENDIF ELSE BEGIN          domz   where gdepw ge vert1 and gdepw le vert2  nzw          IF nzw NE 0 THEN BEGIN           firstzw   domz 0            lastzw   domz nzw 1          ENDIF ELSE BEGIN            ras   report WARNING  The box does not contain any W level            firstzw    1           lastzw    1         ENDELSE        ENDELSE      ENDIF     vertical domain defined with the Z index     ENDIF ELSE BEGIN      CASE N_PARAMS  OF       2:fstz   min x1  x2  max   lstz        4:return       6:fstz   min z1  z2  max   lstz      ENDCASE     IF fstz LT 0 OR lstz GE jpk THEN BEGIN       ras   report Bad definition of X1  X2  Z1 or Z2        return     ENDIF     nz   lstz   fstz   1   find vert1t  vert2t  firstzt  firstzt  nzt   according to  x1  x2  or  z1  z2      IF  where gridtype eq  T 0  NE  1 THEN BEGIN       vert1t   min gdept fstz:lstz  max   vert2t        firstzt   fstz   lastzt   lstz   nzt   nz     ENDIF         find vert1w  vert2w  firstzw  firstzw  nzw   according to  x1  x2  or  z1  z2      IF  where gridtype eq  W 0  NE  1 AND n_elements gdepw  NE 0 THEN BEGIN       vert1w   min gdepw fstz:lstz  max   vert2w        firstzw   fstz   lastzw   lstz   nzw   nz     ENDIF           vert1   min vert1t  vert1w      vert2   max vert2t  vert2w    ENDELSE       IF NOT keyword_set key_forgetold  THEN BEGIN  updateold   ENDIF      if keyword_set key_performance  THEN print   temps domdef  systime 1 tempsun         return end"); 
     201a[199] = new Array("./ToBeReviewed/GRILLE/f2v.html", "f2v.pro", "", "             file_comments   Allows to pass a field refering to the grid F on the grid V     thanks to the average:    res   0 5 res   shift res  1  0           categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id: f2v pro 142 2006 07 21 12:47:49Z navarro             FUNCTION f2v  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp  We force nxt nxf  etc      firstxv   firstxf    lastxv   lastxf    firstyv   firstyf    lastyv   lastyf    nxv   nxf    nyv   nyf    vargrid    V     if NOT keyword_set valmask  then valmask   1e20    lon1   glamv firstxv  0     lon2   glamf lastxf  0     case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxf and taille 2  eq nyf:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxf:lastxf  firstyf:lastyf              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask    fmask firstxf:lastxf  firstyf:lastyf  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  1  0           if NOT  keyword_set key_periodic  AND nxf EQ jpi  then res 0       values f_nan          mask    vmask firstxf:lastxf  firstyf:lastyf  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ nzt:             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxf:lastxf  firstyf:lastyf  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxf:lastxf  firstyf:lastyf                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask    fmask firstxf:lastxf  firstyf:lastyf  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxf  nyf  jpt   over           ENDIF ELSE mask    fmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0           if NOT  keyword_set key_periodic  AND nxf EQ jpi  then res 0         values f_nan          if taille 3  EQ jpt then BEGIN             mask   tmask firstxf:lastxf  firstyf:lastyf  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxf  nyf  jpt   over           ENDIF ELSE mask    vmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxf and taille 2  eq nyf AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxf:lastxf  firstyf:lastyf  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask    fmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxf  nyf  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0  0           if NOT  keyword_set key_periodic  AND nxf EQ jpi  then res 0           values f_nan          mask    vmask firstxf:lastxf  firstyf:lastyf  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxf  nyf  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END    endcase     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold    ENDIF         return  res END "); 
     202a[200] = new Array("./ToBeReviewed/GRILLE/fmask.html", "fmask.pro", "", "             file_comments   calculate fmask  Economize memory  we do not need to keep fmask anymore       categories   Utilities      returns   A 3d array corresponding to fmask       examples   Used like if fmask was a known array by substituing fmask by  fmask    For example: Instaed of write fmask domainef  we have to write  fmask domainef       history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98      version    Id: fmask pro 142 2006 07 21 12:47:49Z navarro             FUNCTION fmask       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance      CASE size tmask   n_dimensions  OF     2:res   tmask shift tmask   1  0 shift tmask  0   1 shift tmask   1   1      3:res   tmask shift tmask   1  0  0 shift tmask  0   1  0 shift tmask   1   1  0    ENDCASE     if NOT keyword_set key_periodic  then res jpi 1        fmaskredy   res  jpj 1      fmaskredx     if keyword_set key_performance  THEN print   temps fmask  systime 1 tempsun       return  res end"); 
     203a[201] = new Array("./ToBeReviewed/GRILLE/grille.html", "grille.pro", "", "             file_comments   Choose the grid which must be used to do the graph in function of   vargrid and send back corresponding parameters calculated in   domdef pro and reduced at the domain defined by domdef  contrarily   to grandegrille pro    BEWARE  The choice of the grid is made from the value of the    global variable vargrid  which can be equal to  T   U   V   W  ou  F       categories      keyword TRI    This keyword serve to obtain  thanks to grille  the triangulation which   refer to the grid but only on the part of the zoom  This of triangulation   is passed in the variable we have equate at TRI    For example: grille tri triangulation_reduite    This keyword is used in plt pro      keyword WDEPTH   To specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W        keyword FORPLT   In plt  we want that land points  glam and gphi  be equal to glamt and    gphit regardless of the grid       keyword NOTRI   Useful only when TRI is activated  In this case  grill send back  1 in the    variable tri even if the variable of the common triangles_list is defined    and different of 1       keyword _EXTRA    Used to pass your keywords      keyword TOUT      param MASK  out optional    For the definition  see domdef and the management of subdomains on the web        param  GLAM  out optional    For the definition  see domdef and the management of subdomains on the web        param  GPHI  out optional    For the definition  see domdef and the management of subdomains on the web        param  GDEP  out optional    For the definition  see domdef and the management of subdomains on the web        param  NX  out optional    For the definition  see domdef and the management of subdomains on the web        param  NY  out optional    For the definition  see domdef and the management of subdomains on the web        param  NZ  out optional    For the definition  see domdef and the management of subdomains on the web        param  FIRSTX  out optional    For the definition  see domdef and the management of subdomains on the web        param  FIRSTY  out optional    For the definition  see domdef and the management of subdomains on the web        param  FIRSTZ  out optional    For the definition  see domdef and the management of subdomains on the web                param LASTX  out optional    For the definition  see domdef and the management of subdomains on the web        param  LASTY  out optional    For the definition  see domdef and the management of subdomains on the web        param  LASTZ  out optional    For the definition  see domdef and the management of subdomains on the web        param  E1  out optional    For the definition  see domdef and the management of subdomains on the web       param  E2  out optional    For the definition  see domdef and the management of subdomains on the web        param  E3  out optional    For the definition  see domdef and the management of subdomains on the web       uses   cm_4mesh    cm_4data      restrictions    Use the variable vargrid      restrictions   Vargrid must be  T   W   U   V  ou  F       history    Sebastien Masson  smasson lodyc jussieu fr   12 2 1999                         10 11 1999  forplt      version    Id: grille pro 142 2006 07 21 12:47:49Z navarro         todo Comment ecrire la remarque sur les inputs             pro grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz  e1  e2  e3  TRI   tri  NOTRI   notri  TOUT   tout  FORPLT   forplt  IFPLTZ   ifpltz  WDEPTH   wdepth  _EXTRA   ex     include commons     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance     vargrid   strupcase strmid vargrid 0 reverse_offset      if vargrid eq  W  then wdepth   1   if keyword_set tout  then begin     savedbox   1b     saveboxparam   boxparam4grille dat      domdef  gridtype   vargrid  _EXTRA   ex   endif   tempdeux   systime 1            For key_performance  2       IF keyword_set wdepth  THEN BEGIN     firstz   firstzw      lastz   lastzw     nz   nzw   ENDIF ELSE BEGIN     firstz   firstzt     lastz   lastzt     nz   nzt   ENDELSE       CASE 1 OF      grid T and W       vargrid eq  T  OR vargrid eq  W  : begin  scalars       nx   nxt       ny   nyt       firstx   firstxt       firsty   firstyt       lastx   lastxt       lasty   lastyt  2d vectors       IF arg_present glam  THEN glam   glamt firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphit firstx:lastx  firsty:lasty        IF arg_present e1  THEN e1   e1t firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2   e2t firstx:lastx  firsty:lasty   3d vectors        IF keyword_set forplt  THEN mask   tmask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask   tmask firstx:lastx  firsty:lasty  firstz:lastz      end     grid U       vargrid eq  U : begin  scalars       nx   nxu       ny   nyu       firstx   firstxu       firsty   firstyu       lastx   lastxu       lasty   lastyu  2d vectors       IF arg_present glam  THEN glam   glamu firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphiu firstx:lastx  firsty:lasty        if keyword_set forplt  then BEGIN         mask   1b tmask firstx:lastx  firsty:lasty  firstz          eastboarder   mask shift mask  1  0 mask         westboarder   mask shift mask   1  0 mask         if key_periodic NE 1 OR nx NE jpi then westboarder nx 1      0b         tmp1   shift eastboarder  0  1          tmp1  0    0b         tmp2   shift eastboarder  0   1          tmp2  ny 1    0b         add    temporary tmp1 temporary tmp2 1b eastboarder 1b temporary westboarder          eastboarder   temporary eastboarder temporary add          tmp1    mask shift mask  0   1 shift mask  0  1  NE 1b         tmp1  ny 1    1b         tmp1  0    1b         tmp2    mask shift mask   1  0 shift mask  1  0  NE 1b         if key_periodic NE 1 OR nx NE jpi then begin           tmp2 nx 1      1b           tmp2 0      0b         endif         no1   temporary tmp1 temporary tmp2          tmp   temporary eastboarder temporary no1 mask         mask 0:nx 2      0b          tmp   temporary tmp temporary mask          tmp   where tmp GE 1          if tmp 0  NE  1 then begin           glam tmp     glamt firstx:lastx  firsty:lasty tmp            gphi tmp     gphit firstx:lastx  firsty:lasty tmp          endif       ENDIF       IF arg_present e1  THEN e1    e1u firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2    e2u firstx:lastx  firsty:lasty   3d vectors       IF keyword_set forplt  THEN mask    umask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask    umask firstx:lastx  firsty:lasty  firstz:lastz      end     grid V       vargrid eq  OPAPTDHV  or vargrid eq  OPAPT3DV          or vargrid eq  V : begin  scalars       nx   nxv       ny   nyv       firstx   firstxv       firsty   firstyv       lastx   lastxv       lasty   lastyv  2d vectors       IF arg_present glam  THEN glam   glamv firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphiv firstx:lastx  firsty:lasty        if keyword_set forplt  then BEGIN          mask   1b tmask firstx:lastx  firsty:lasty  firstz          northboarder   mask shift mask  0  1 mask         southboarder   mask shift mask  0   1 mask         southboarder  ny 1    0b         tmp1   shift northboarder   1  0          if key_periodic NE 1 OR nx NE jpi then tmp1 nx 1      0b         tmp2   shift northboarder  1  0          if key_periodic NE 1 OR nx NE jpi then tmp2 0      0b         add    temporary tmp1 temporary tmp2 1b northboarder 1b southboarder          northboarder   temporary northboarder temporary add          tmp1    mask shift mask  0   1 shift mask  0  1  NE 1b         tmp1  ny 1    1b         tmp1  0    0b         tmp2    mask shift mask   1  0 shift mask  1  0  NE 1b         if key_periodic NE 1 OR nx NE jpi then begin           tmp2 nx 1      1b           tmp2 0      1b         endif         no1   temporary tmp1 temporary tmp2          tmp   temporary northboarder mask temporary no1          mask  0:ny 2    0b         tmp   temporary tmp temporary mask          tmp   where tmp GE 1          if tmp 0  NE  1 then begin           glam tmp     glamt firstx:lastx  firsty:lasty tmp            gphi tmp     gphit firstx:lastx  firsty:lasty tmp          endif       ENDIF       IF arg_present e1  THEN e1    e1v firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2    e2v firstx:lastx  firsty:lasty   3d vecteurs       IF keyword_set forplt  THEN mask    vmask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask    vmask firstx:lastx  firsty:lasty  firstz:lastz      end     grid F       vargrid eq  OPAPTDHF  or vargrid eq  OPAPT3DF           or vargrid eq  F : begin  scalars       nx   nxf       ny   nyf       firstx   firstxf       firsty   firstyf       lastx   lastxf       lasty   lastyf  2d vectors       IF arg_present glam  THEN glam   glamf firstx:lastx  firsty:lasty        IF arg_present gphi  THEN gphi   gphif firstx:lastx  firsty:lasty        if keyword_set forplt  then BEGIN          mask   1b tmask firstx:lastx  firsty:lasty  firstz          eastboarder   mask shift mask  1  0 mask         westboarder   mask shift mask   1  0 mask         westboarder nx 1      0b         northboarder   mask shift mask  0  1 mask         southboarder   mask shift mask  0   1 mask         southboarder  ny 1    0b         tmp1   shift northboarder   1  0          if key_periodic NE 1 OR nx NE jpi then tmp1 nx 1      0b         tmp2   shift northboarder  1  0          if key_periodic NE 1 OR nx NE jpi then tmp2 0      0b         add    temporary tmp1 temporary tmp2 1b northboarder 1b southboarder          northboarder   temporary northboarder temporary add          tmp1   shift eastboarder  0  1          tmp1  0    0b         tmp2   shift eastboarder  0   1          tmp2  ny 1    0b         add    temporary tmp1 temporary tmp2 1b eastboarder 1b temporary westboarder          eastboarder   temporary eastboarder temporary add          tmp1    mask shift mask  0   1 shift mask  0  1  NE 1b         tmp1  ny 1    1b         tmp1  0    1b         tmp2    mask shift mask   1  0 shift mask  1  0  NE 1b         if key_periodic NE 1 OR nx NE jpi then begin           tmp2 nx 1      1b           tmp2 0      1b         endif         no1   temporary tmp1 temporary tmp2          tmp    temporary northboarder temporary eastboarder mask temporary no1          mask 0:nx 2      0b          mask  0:ny 2    0b          tmp   temporary tmp temporary mask          tmp   where tmp GE 1          if tmp 0  NE  1 then begin           glam tmp     glamt firstx:lastx  firsty:lasty tmp            gphi tmp     gphit firstx:lastx  firsty:lasty tmp          endif       ENDIF       IF arg_present e1  THEN e1    e1f firstx:lastx  firsty:lasty        IF arg_present e2  THEN e2    e2f firstx:lastx  firsty:lasty   3d vectors        IF keyword_set forplt  THEN mask    fmask firstx:lastx  firsty:lasty  firstz          ELSE IF arg_present mask  THEN mask    fmask firstx:lastx  firsty:lasty  firstz:lastz      END       ELSE:BEGIN        ras   report Wrong definition of vargrid    vargrid  Only T  U  V  W or F are acceptable        stop     END   ENDCASE   IF testvar var   key_performance  EQ 2 THEN       print   temps grille: attribution des scalaires  vecteurs et tableaux   systime 1 tempdeux           Variables refering to the vertical dimension             tempdeux   systime 1            For key_performance  2   if keyword_set wdepth  then begin     gdep   gdepw firstz:lastz      e3   e3w firstz:lastz    endif else begin     gdep   gdept firstz:lastz      e3   e3t firstz:lastz    ENDELSE   for the vertical sections with partial steps   IF keyword_set ifpltz  AND keyword_set key_partialstep  THEN BEGIN     CASE 1 OF       ifpltz EQ  xz  AND ny EQ 1:BEGIN         bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3          good   where bottom NE 0 AND bottom NE nz keyword_set wdepth          bottom   lindgen nx bottom 1l keyword_set wdepth nx         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            IF lastz EQ jpk 1 THEN gdep nz 1    max hdepw            gdep   replicate 1  nx gdep           if keyword_set wdepth  THEN               truegdep   hdepw firstx:lastx  firsty:lasty              ELSE truegdep   hdept firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       ifpltz EQ  yz  AND nx EQ 1:BEGIN         bottom   total tmask firstx:lastx  firsty:lasty  firstz:lastz  3          good   where bottom NE 0 AND bottom NE nz keyword_set wdepth          bottom   lindgen ny bottom 1l keyword_set wdepth ny         IF good 0  NE  1 THEN BEGIN           bottom   bottom good            IF lastz EQ jpk 1 THEN gdep nz 1    max hdepw            gdep   replicate 1  ny gdep           if keyword_set wdepth  THEN               truegdep   hdepw firstx:lastx  firsty:lasty              ELSE truegdep   hdept firstx:lastx  firsty:lasty            gdep bottom    truegdep good          ENDIF       END       ELSE:     ENDCASE   ENDIF   IF testvar var   key_performance  EQ 2 THEN       print   temps grille: Variables se rapportant a la dimension verticale   systime 1 tempdeux     Triangulation vector when TRI is activated      if arg_present TRI  then       if triangles_list 0  EQ  1 OR keyword_set notri  then tri    1 ELSE BEGIN      tempdeux   systime 1          pour key_performance  2     msk   bytarr jpi  jpj      msk firstx:lastx  firsty:lasty    1     ind   where  msk triangles_list 0   msk triangles_list 1   msk triangles_list 2    EQ 1       tri   triangles_list  ind firstx firsty jpi      y   tri jpi     x   tri y jpi     tri   x y nx     IF testvar var   key_performance  EQ 2 THEN         print   temps grille: decoupage de la triangulation   systime 1 tempdeux   ENDELSE     To make sure there is not any degenerated dimension  1         mask reform mask   over       glam reform glam   over       gphi reform gphi   over       gdep reform gdep   over       e1 reform e1   over       e2 reform e2   over       e3 reform e3   over     if keyword_set savedbox  THEN restoreboxparam   boxparam4grille dat    if keyword_set key_performance  THEN print   temps grille  systime 1 tempsun       IF NOT keyword_set key_forgetold  THEN BEGIN  updateold   ENDIF      return  end       "); 
     204a[202] = new Array("./ToBeReviewed/GRILLE/t2v.html", "t2v.pro", "", "             file_comments   Allows to pass a field refering to the grid T on the grid V     thanks to the average res   0 5 res   shift res  0   1        categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id: t2v pro 142 2006 07 21 12:47:49Z navarro             FUNCTION t2v  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp   We force nxt nxv  etc      firstxv   firstxt    lastxv   lastxt    firstyv   firstyt    lastyv   lastyt    nxv   nxt    nyv   nyt    vargrid    V     if NOT keyword_set valmask  then valmask   1e20    lat1   gphit 0  firstyt     lat2   gphiv 0  lastyv     case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxt and taille 2  eq nyt:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxt:lastxt  firstyt:lastyt              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask   tmask firstxt:lastxt  firstyt:lastyt  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  0   1           res  nyt 1     values f_nan          mask    vmask firstxt:lastxt  firstyt:lastyt  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ nzt:             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxt:lastxt  firstyt:lastyt  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxt:lastxt  firstyt:lastyt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask   tmask firstxt:lastxt  firstyt:lastyt  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxt  nyt  jpt   over           ENDIF ELSE mask   tmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0           res  nyt 1       values f_nan          if taille 3  EQ jpt then BEGIN             mask    vmask firstxt:lastxt  firstyt:lastyt  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxt  nyt  jpt   over           ENDIF ELSE mask    vmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxt and taille 2  eq nyt AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxt:lastxt  firstyt:lastyt  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask   tmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxt  nyt  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0  0           res  nyt 1         values f_nan          mask    vmask firstxt:lastxt  firstyt:lastyt  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxt  nyt  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END     ENDCASE    IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF      return  res END "); 
     205a[203] = new Array("./ToBeReviewed/GRILLE/tracegrille.html", "tracegrille.pro", "", "             file_comments   Draw the grid      categories       param GLAMIN  in required    The 1d or 2d array in longitude of points of the grid If GLAM GLAMIN    is not specified  it trace the grid specified by vargrid  on the    domain defined by domdef       param GPHIIN  in required    The 1d or 2d array in latitude of points of the grid If GPHI GPHIIN    is not specified  it trace the grid specified by vargrid  on the    domain defined by domdef       keyword XSTRIDE    It is an integer to specify that we want to trace only one line of    constant i every xstride points      keyword YSTRIDE    It is an integer to specify that we want to trace only one line of    constant j every xstride points      keyword OCEAN    To trace the grid only on ocean points        keyword EARTH   To trace the grid only on land points pour ne tracer la grille que sur les points terre      keyword RMOUT   Select to remove all cell having one corner out of the   plot boundaries  x range   y range       keyword _EXTRA   Used to pass your keywords        uses   common pro       examples         IDL  plt indgen jpi jpj nocontour nofill       IDL  vargrid T        IDL  tracegrille ocean color 20       IDL  tracegrille earth color 80        history   Sebastien Masson  smasson lodyc jussieu fr       version    Id: tracegrille pro 142 2006 07 21 12:47:49Z navarro                               PRO tracegrille  glamin  gphiin  OCEAN   ocean  EARTH   earth                      XSTRIDE   xstride  YSTRIDE   ystride  RMOUT   rmout                      _extra   extra       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance   to avoid warning message   oldexcept    except    except   0   if n_elements key_gridtype  EQ 0 then key_gridtype    c      if n_elements glamin    n_elements gphiin  EQ 0 then BEGIN     grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz     IF keyword_set ocean  AND key_gridtype EQ  c  THEN BEGIN   we reduce the mask to take into account the point located ON the coastline        CASE vargrid OF          U :BEGIN           mask   tmask firstx:lastx  firsty:lasty            IF NOT keyword_set key_periodic  OR nx NE jpi               THEN tmpx   mask nx 1              mask    mask shift mask   1  0    1           IF NOT keyword_set key_periodic  OR nx NE jpi               THEN mask nx 1      temporary tmpx          END          V :BEGIN           mask   tmask firstx:lastx  firsty:lasty            tmpy   mask  ny 1            mask    mask shift mask  0   1    1           mask  ny 1    temporary tmpy          END          F :BEGIN           mask   tmask firstx:lastx  firsty:lasty            IF NOT keyword_set key_periodic  OR nx NE jpi               THEN tmpx   mask nx 1              tmpy   mask  ny 1            mask    mask shift mask   1  0 shift mask  0   1 shift mask   1   1    1           mask  ny 1    temporary tmpy            IF NOT keyword_set key_periodic  OR nx NE jpi               THEN mask nx 1      temporary tmpx          END         ELSE:       ENDCASE     ENDIF   ENDIF ELSE BEGIN     glam   glamin     gphi   gphiin     IF  size glam 0  EQ 1 AND  size gphi 0  EQ 1 THEN BEGIN       nx   n_elements glam         ny   n_elements gphi         glam   glam replicate 1  ny        gphi   replicate 1  nx gphi     ENDIF ELSE BEGIN       nx    size glam 1        ny    size glam 2      ENDELSE   ENDELSE   if n_elements mask  EQ 0 then mask   replicate 1b  nx  ny    if  size mask 0  EQ 3 then mask   mask    0      IF keyword_set RMOUT  THEN BEGIN     out   where glam GT max x range  OR glam LT min x range                    OR gphi GT max y range  OR gphi LT min y range      IF out 0  NE  1 THEN BEGIN       glam out     values f_nan       gphi out     values f_nan     ENDIF   ENDIF     IF keyword_set ocean  then BEGIN     earth   where mask EQ 0      if earth 0  NE  1 then begin       glam earth     values f_nan       gphi earth     values f_nan     ENDIF     earth   0   ENDIF     IF keyword_set earth  THEN BEGIN     ocean   where mask EQ 1      if ocean 0  NE  1 then begin       glam ocean     values f_nan       gphi ocean     values f_nan     ENDIF     ocean   0   ENDIF     if NOT keyword_set xstride  then xstride   1   if NOT keyword_set ystride  then ystride   1   case key_gridtype of      c :BEGIN       for i   0  ny 1  ystride do begin         plots   glam  i  gphi  i  _extra   extra       endfor       for i   0  nx 1  xstride do begin         plots   glam i    gphi i    _extra   extra       endfor     END      e :BEGIN       shifted   glam 0  0  LT glam 0  1        glam2   glam glam 1 glam 0 2        if shifted then begin         for i   0  ny 2 do BEGIN           xx    transpose glam  i   glam2  i            yy    transpose gphi  i   gphi  i 1            plots  xx 0:2 nx 2  yy 0:2 nx 2  _extra   extra         ENDFOR       ENDIF ELSE BEGIN         for i   1  ny 1 do BEGIN           xx    transpose glam  i   glam2  i            yy    transpose gphi  i   gphi  i 1            plots  xx 0:2 nx 2  yy 0:2 nx 2  _extra   extra         ENDFOR       ENDELSE       for i   1   ny 1 2 do           plots   glam 0  2 i 1  glam 0  2 i               gphi 0  2 i 1  gphi 0  2 i  _extra   extra       for i   0   ny 2 2 do           plots   glam nx 1  2 i  glam nx 1  2 i 1               gphi nx 1  2 i  gphi nx 1  2 i 1  _extra   extra     END   endcase    if keyword_set key_performance  THEN print   temps trace grille  systime 1 tempsun     except   oldexcept    return end"); 
     206a[204] = new Array("./ToBeReviewed/GRILLE/u2t.html", "u2t.pro", "", "             file_comments   Allows to pass a field refering to the grid U on the grid T     thanks to the average:    res   0 5 res   shift res  1  0           categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id: u2t pro 142 2006 07 21 12:47:49Z navarro             FUNCTION u2t  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp  on force nxt nxu  etc      firstxt   firstxu    lastxt   lastxu    firstyt   firstyu    lastyt   lastyu    nxt   nxu    nyt   nyu    vargrid    T     if NOT keyword_set valmask  then valmask   1e20    lon1   glamt firstxt  0     lon2   glamu lastxu  0      case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxu and taille 2  eq nyu:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxu:lastxu  firstyu:lastyu              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask    umask firstxu:lastxu  firstyu:lastyu  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  1  0           if NOT  keyword_set key_periodic  AND nxu EQ jpi  then res 0       values f_nan          mask   tmask firstxu:lastxu  firstyu:lastyu  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ nzt:             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxu:lastxu  firstyu:lastyu  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxu:lastxu  firstyu:lastyu                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask    umask firstxu:lastxu  firstyu:lastyu  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxu  nyu  jpt   over           ENDIF ELSE mask    umask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0           if NOT  keyword_set key_periodic  AND nxu EQ jpi  then res 0         values f_nan          if taille 3  EQ jpt then BEGIN             mask   tmask firstxu:lastxu  firstyu:lastyu  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxu  nyu  jpt   over           ENDIF ELSE mask   tmask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxu and taille 2  eq nyu AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxu:lastxu  firstyu:lastyu  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask    umask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxu  nyu  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  1  0  0  0           if NOT  keyword_set key_periodic  AND nxu EQ jpi  then res 0           values f_nan          mask   tmask firstxu:lastxu  firstyu:lastyu  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxu  nyu  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END    endcase    IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF        return  res END "); 
     207a[205] = new Array("./ToBeReviewed/GRILLE/umask.html", "umask.pro", "", "             file_comments   calculate umask  Economize memory  we do not need to keep umask anymore       categories   Utilities       returns   A 3d array corresponding to umask        uses   common pro      examples   Used like if umask was a known array by substituing umask by  umask    For example: Instaed of write umask domainef  we have to write  umask domainef      MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                          6 99 introduction of the key_shift                         20 9 99 cas jpk 1  Thanks to  jpblod ipsl jussieu fr       version    Id: umask pro 142 2006 07 21 12:47:49Z navarro             FUNCTION umask       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     tempsun   systime 1             For key_performance     CASE size tmask   n_dimensions  OF     2:res   tmask shift tmask   1  0      3:res   tmask shift tmask   1  0  0    ENDCASE        if NOT keyword_set key_periodic  then res jpi 1        umaskred   if keyword_set key_performance  THEN print   temps umask  systime 1 tempsun      return  res end"); 
     208a[206] = new Array("./ToBeReviewed/GRILLE/v2t.html", "v2t.pro", "", "             file_comments   Allows to pass a field refering to the grid V on the grid T     thanks to the average:    res   0 5 res   shift res  1  0           categories    Grille      param TEMP  in required    A 2  3 or 4d array      returns   res  a 2  3 or 4d array      uses   common pro      restrictions    Force parameters of the zoom on the grid V to be the same as    those on the grid T       restrictions    Points which can not be calculated are put at the value NaN    consecrated by IDL:  values f_nan      history   From Marina Levy s programs   Sebastien Masson  smasson lodyc jussieu fr :   Validation  5 6 2000      version    Id: v2t pro 142 2006 07 21 12:47:49Z navarro        todo seb: nom du input            FUNCTION v2t  temp       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF      res   temp  We force nxt nxv  etc      firstxt   firstxv    lastxt   lastxv    firstyt   firstyv    lastyt   lastyv    nxt   nxv    nyt   nyv    vargrid    T     if NOT keyword_set valmask  then valmask   1e20    lat1   gphit 0  firstyt     lat2   gphiv 0  lastyv     case on tha array s size and application    taille   size temp     CASE taille 0  OF        1: res    1       2: BEGIN           case 1 of             taille 1  eq nxv and taille 2  eq nyv:             taille 1  eq jpi and taille 2  eq jpj:                res res firstxv:lastxv  firstyv:lastyv              else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           endcase          mask    vmask firstxv:lastxv  firstyv:lastyv  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre     values f_nan          res   0 5 res   shift res  0   1           res  0     values f_nan          mask   tmask firstxv:lastxv  firstyv:lastyv  0           terre   where mask EQ 0            IF terre 0  NE  1 THEN res terre    valmask       END       3: BEGIN           case 1 of             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ nzt:             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ jpk:                res res    firstzt:lastzt              taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ jpt:             taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk:                res res firstxv:lastxv  firstyv:lastyv  firstzt:lastzt              taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpt:                res res firstxv:lastxv  firstyv:lastyv                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          if taille 3  EQ jpt then begin             mask    vmask firstxv:lastxv  firstyv:lastyv  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxv  nyv  jpt   over           ENDIF ELSE mask    vmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0           res  0       values f_nan          if taille 3  EQ jpt then BEGIN             mask   tmask firstxv:lastxv  firstyv:lastyv  lastzt nzt NE jpk              mask   temporary mask replicate 1  jpt              mask   reform mask  nxv  nyv  jpt   over           ENDIF ELSE mask   tmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END       4: BEGIN           case 1 of             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ nzt AND taille 4  EQ jpt:             taille 1  eq nxv and taille 2  eq nyv AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res    firstzt:lastzt                taille 1  eq jpi and taille 2  eq jpj AND taille 3  EQ jpk AND taille 4  EQ jpt:                res res firstxv:lastxv  firstyv:lastyv  firstzt:lastzt                else:                return  report Probleme d adequation entre les tailles du domaine et de la boite           ENDCASE          mask    vmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxv  nyv  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre     values f_nan          res   0 5 res   shift res  0   1  0  0           res  0         values f_nan          mask   tmask firstxv:lastxv  firstyv:lastyv  firstzt:lastzt           mask   temporary mask replicate 1  jpt           mask   reform mask  nxv  nyv  nzt  jpt   over           terre   where temporary mask  EQ 0            IF terre 0  NE  1 THEN res temporary terre    valmask       END    endcase     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold    ENDIF       return  res END "); 
     209a[207] = new Array("./ToBeReviewed/GRILLE/vmask.html", "vmask.pro", "", "             file_comments   calculate fmask  Economize memory  we do not need to keep vmask anymore       categories   Utilities      returns   A 3d array corresponding to vmask       examples   Used like if vmask was a known array by substituing vmask by  vmask    For example: Instaed of write vmask domainef  we have to write  vmask domainef       history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                         20 9 99 cas jpk 1  merci jpblod ipsl jussieu fr       version    Id: vmask pro 142 2006 07 21 12:47:49Z navarro             FUNCTION vmask     compile_opt idl2  strictarrsubs    common   tempsun   systime 1             For key_performance     CASE size tmask   n_dimensions  OF     2:res   tmask shift tmask  0   1      3:res   tmask shift tmask  0   1  0    ENDCASE     res  jpj 1      vmaskred   if keyword_set key_performance  THEN print   temps vmask  systime 1 tempsun      return  res end"); 
    210210a[208] = new Array("./ToBeReviewed/HOPE/completetype.html", "completetype.pro", "", "       todo seb     function completetype  typein     compile_opt idl2  strictarrsubs      type typein    case type of        x :type type yzt         y :type type xzt         z :type type zyt         t :type type xyz         xy :type type zt         xz :type type yt         yz :type type xt         xt :type type yz         yt :type type xz         zt :type type xy         xyz :type type t         xyt :type type z         yzt :type type x         xyzt :    endcase    return  type  end  "); 
    211 a[209] = new Array("./ToBeReviewed/HOPE/computehopegrid.html", "computehopegrid.pro", "", "             file_comments      categories   grille       param XAXIS      param YAXIS      param ZAXIS      param LINETYPE      keyword FORTHEMASK      keyword WPOINT      keyword FIRSTS      keyword LASTS      keyword PTTYPE      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                         2001 06      version    Id       todo seb           PRO computehopegrid  xaxis  yaxis  zaxis  linetype  FORTHEMASK   forthemask  WPOINT   wpoint  FIRSTS   firsts  LASTS   lasts  PTTYPE   pttype       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF        if not  keyword_set scalar keyword_set vector  then scalar 1      jpiglo   n_elements xaxis     jpjglo   n_elements yaxis     jpkglo   n_elements zaxis       jpi   jpiglo    jpj   jpjglo    jpk   jpkglo      if NOT keyword_set firsts  then firsts    0  0  0     if NOT keyword_set lasts  then lasts    jpi 1  jpj 1  jpk 1      depermination of the grid type and of the point type      if keyword_set pttype  then vargrid   pttype    if linetype EQ  odd even  then key_gridtype    e  ELSE key_gridtype    c      computation of the horizontal grid      if key_gridtype EQ  e  then begin       if vargrid EQ  T  then begin          glamt xaxis          glamt   glamt replicate 1  jpj           xstep glamt 1 0 glamt 0 0 2           glamt 2 lindgen jpj 2 glamt 2 lindgen jpj 2 xstep          glamu glamt xstep       ENDIF ELSE BEGIN          glamu xaxis          glamu   glamu replicate 1  jpj           xstep glamu 1 0 glamu 0 0 2           glamu 2 lindgen jpj 2 glamu 2 lindgen jpj 2 xstep          glamt glamu xstep       ENDELSE  zoom       glamt   glamt firsts 0 :lasts 0  firsts 1 :lasts 1        glamu   glamu firsts 0 :lasts 0  firsts 1 :lasts 1        jpiglo   lasts 0 firsts 0 1       jpi   jpiglo       jpjglo   lasts 1 firsts 1 1       jpj   jpjglo       glamv   glamu       glamf   glamu       gphit   yaxis firsts 1 :lasts 1        gphit   replicate 1  jpi gphit       gphif   gphit       gphiu   gphit       gphiv   gphif    ENDIF ELSE BEGIN       if vargrid eq  T  then begin          glamt xaxis          glamt   glamt replicate 1  jpj           glamu glamt glamt 1 0 glamt 0 0 2        ENDIF ELSE BEGIN          glamu xaxis          glamu   glamu replicate 1  jpj           xstep glamu 1 0 glamu 0 0 2           glamt glamu glamu 1 0 glamu 0 0 2        ENDELSE  zoom       glamt   glamt firsts 0 :lasts 0  firsts 1 :lasts 1        glamu   glamu firsts 0 :lasts 0  firsts 1 :lasts 1        jpiglo   lasts 0 firsts 0 1       jpi   jpiglo       jpjglo   lasts 1 firsts 1 1       jpj   jpjglo       glamv   glamt       glamf   glamu       gphit   yaxis firsts 1 :lasts 1        gphit   replicate 1  jpi gphit       gphiu   gphit       if jpj GT 1 then begin          gphiv   gphit gphit 0  1 gphit 0  0 2           gphif   gphit gphit 0  1 gphit 0  0 2        ENDIF ELSE BEGIN           gphiv   gphit          gphif   gphit       ENDELSE    ENDELSE     computation of the vertical grid      if keyword_set wpoint  then begin       gdepw   zaxis       if jpk ne 1 then begin          gdept shift gdepw   1 gdepw 2           gdept jpk 1 gdepw jpk 1 5 gdepw jpk 1 gdepw jpk 2        endif else gdept zaxis    endif else begin       gdept   zaxis       if jpk ne 1 then begin          gdepw shift gdept  1 gdept 2           gdepw 0 0       endif else gdepw   zaxis    endelse     computation of the vertical scale factors      if jpk ne 1 then begin       e3t   abs shift gdepw 1 gdepw        e3t jpk 1    abs gdept jpk 1 gdepw jpk 1        e3w   abs gdept shift gdept 1        e3w 0    abs gdept 0 gdepw 0     endif else begin       e3t 1       e3w 1    endelse   zoom    gdept   gdept firsts 2 :lasts 2     gdepw   gdepw firsts 2 :lasts 2     e3t   e3t firsts 2 :lasts 2     e3w   e3w firsts 2 :lasts 2     jpkglo   lasts 2 firsts 2 1    jpk   jpkglo     computation of the horizontal scale factors      e1t   replicate 1b jpi jpj     e2t   replicate 1b jpi jpj     e1u   e1t    e2u   e2t    e1v   e1t    e2v   e2t    e1f   e1t    e2f   e2t     mask       tmask   replicate 1b  jpi  jpj  jpk     if keyword_set forthemask  then BEGIN       land where forthemask ge valmask 10        if land 0  ne  1 then tmask land    0b    endif    umaskred   replicate 1  jpj  jpk     vmaskred   replicate 1  jpi  jpk     fmaskredy   replicate 1  jpj  jpk     fmaskredx   replicate 1  jpi  jpk      updateold    domdef    if keyword_set firsts  AND keyword_set lasts  then BEGIN       if vargrid EQ  T  then BEGIN          if jpj GT 1 then begin             lon1   min glamt 0   0  1              lon2   max glamt jpi 1   0  1           endif ELSE BEGIN             lon1   min glamt 0  0              lon2   max glamt jpi 1   0           ENDELSE       ENDIF ELSE BEGIN          if jpj GT 1 then begin             lon1   min glamu 0   0  1              lon2   max glamu jpi 1   0  1           endif ELSE BEGIN             lon1   min glamu 0  0              lon2   max glamu jpi 1  0           ENDELSE       ENDELSE       lat1   min gphit 0  0  gphit 0  jpj 1        lat2   max gphit 0  0  gphit 0  jpj 1        domdef  lon1  lon2  lat1  lat2  gdepw 0  gdept jpk 1  gridtype   vargrid    ENDIF      ixminmesh   0l    ixmaxmesh   long jpi 1     iyminmesh   0l    iymaxmesh   long jpj 1     izminmesh   0l    izmaxmesh   long jpk 1      for the triangulation      key_periodic   glamt 0  EQ  glamt jpi 1 glamt 1 glamt 0  MOD 360     if jpi gt 4 AND jpj GT 4 then begin       triangles_list   triangule shifted   glamt 0  0  LT glamt 0  1        twin_corners_up 1       twin_corners_dn 1    ENDIF ELSE BEGIN       triangles_list 1       twin_corners_up 1       twin_corners_dn 1    ENDELSE     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF       return end  "); 
     211a[209] = new Array("./ToBeReviewed/HOPE/computehopegrid.html", "computehopegrid.pro", "", "             file_comments      categories   grille       param XAXIS      param YAXIS      param ZAXIS      param LINETYPE      keyword FORTHEMASK      keyword WPOINT      keyword FIRSTS      keyword LASTS      keyword PTTYPE      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                         2001 06      version    Id: computehopegrid pro 142 2006 07 21 12:47:49Z navarro        todo seb           PRO computehopegrid  xaxis  yaxis  zaxis  linetype  FORTHEMASK   forthemask  WPOINT   wpoint  FIRSTS   firsts  LASTS   lasts  PTTYPE   pttype       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF        if not  keyword_set scalar keyword_set vector  then scalar 1      jpiglo   n_elements xaxis     jpjglo   n_elements yaxis     jpkglo   n_elements zaxis       jpi   jpiglo    jpj   jpjglo    jpk   jpkglo      if NOT keyword_set firsts  then firsts    0  0  0     if NOT keyword_set lasts  then lasts    jpi 1  jpj 1  jpk 1      depermination of the grid type and of the point type      if keyword_set pttype  then vargrid   pttype    if linetype EQ  odd even  then key_gridtype    e  ELSE key_gridtype    c      computation of the horizontal grid      if key_gridtype EQ  e  then begin       if vargrid EQ  T  then begin          glamt xaxis          glamt   glamt replicate 1  jpj           xstep glamt 1 0 glamt 0 0 2           glamt 2 lindgen jpj 2 glamt 2 lindgen jpj 2 xstep          glamu glamt xstep       ENDIF ELSE BEGIN          glamu xaxis          glamu   glamu replicate 1  jpj           xstep glamu 1 0 glamu 0 0 2           glamu 2 lindgen jpj 2 glamu 2 lindgen jpj 2 xstep          glamt glamu xstep       ENDELSE  zoom       glamt   glamt firsts 0 :lasts 0  firsts 1 :lasts 1        glamu   glamu firsts 0 :lasts 0  firsts 1 :lasts 1        jpiglo   lasts 0 firsts 0 1       jpi   jpiglo       jpjglo   lasts 1 firsts 1 1       jpj   jpjglo       glamv   glamu       glamf   glamu       gphit   yaxis firsts 1 :lasts 1        gphit   replicate 1  jpi gphit       gphif   gphit       gphiu   gphit       gphiv   gphif    ENDIF ELSE BEGIN       if vargrid eq  T  then begin          glamt xaxis          glamt   glamt replicate 1  jpj           glamu glamt glamt 1 0 glamt 0 0 2        ENDIF ELSE BEGIN          glamu xaxis          glamu   glamu replicate 1  jpj           xstep glamu 1 0 glamu 0 0 2           glamt glamu glamu 1 0 glamu 0 0 2        ENDELSE  zoom       glamt   glamt firsts 0 :lasts 0  firsts 1 :lasts 1        glamu   glamu firsts 0 :lasts 0  firsts 1 :lasts 1        jpiglo   lasts 0 firsts 0 1       jpi   jpiglo       jpjglo   lasts 1 firsts 1 1       jpj   jpjglo       glamv   glamt       glamf   glamu       gphit   yaxis firsts 1 :lasts 1        gphit   replicate 1  jpi gphit       gphiu   gphit       if jpj GT 1 then begin          gphiv   gphit gphit 0  1 gphit 0  0 2           gphif   gphit gphit 0  1 gphit 0  0 2        ENDIF ELSE BEGIN           gphiv   gphit          gphif   gphit       ENDELSE    ENDELSE     computation of the vertical grid      if keyword_set wpoint  then begin       gdepw   zaxis       if jpk ne 1 then begin          gdept shift gdepw   1 gdepw 2           gdept jpk 1 gdepw jpk 1 5 gdepw jpk 1 gdepw jpk 2        endif else gdept zaxis    endif else begin       gdept   zaxis       if jpk ne 1 then begin          gdepw shift gdept  1 gdept 2           gdepw 0 0       endif else gdepw   zaxis    endelse     computation of the vertical scale factors      if jpk ne 1 then begin       e3t   abs shift gdepw 1 gdepw        e3t jpk 1    abs gdept jpk 1 gdepw jpk 1        e3w   abs gdept shift gdept 1        e3w 0    abs gdept 0 gdepw 0     endif else begin       e3t 1       e3w 1    endelse   zoom    gdept   gdept firsts 2 :lasts 2     gdepw   gdepw firsts 2 :lasts 2     e3t   e3t firsts 2 :lasts 2     e3w   e3w firsts 2 :lasts 2     jpkglo   lasts 2 firsts 2 1    jpk   jpkglo     computation of the horizontal scale factors      e1t   replicate 1b jpi jpj     e2t   replicate 1b jpi jpj     e1u   e1t    e2u   e2t    e1v   e1t    e2v   e2t    e1f   e1t    e2f   e2t     mask       tmask   replicate 1b  jpi  jpj  jpk     if keyword_set forthemask  then BEGIN       land where forthemask ge valmask 10        if land 0  ne  1 then tmask land    0b    endif    umaskred   replicate 1  jpj  jpk     vmaskred   replicate 1  jpi  jpk     fmaskredy   replicate 1  jpj  jpk     fmaskredx   replicate 1  jpi  jpk      updateold    domdef    if keyword_set firsts  AND keyword_set lasts  then BEGIN       if vargrid EQ  T  then BEGIN          if jpj GT 1 then begin             lon1   min glamt 0   0  1              lon2   max glamt jpi 1   0  1           endif ELSE BEGIN             lon1   min glamt 0  0              lon2   max glamt jpi 1   0           ENDELSE       ENDIF ELSE BEGIN          if jpj GT 1 then begin             lon1   min glamu 0   0  1              lon2   max glamu jpi 1   0  1           endif ELSE BEGIN             lon1   min glamu 0  0              lon2   max glamu jpi 1  0           ENDELSE       ENDELSE       lat1   min gphit 0  0  gphit 0  jpj 1        lat2   max gphit 0  0  gphit 0  jpj 1        domdef  lon1  lon2  lat1  lat2  gdepw 0  gdept jpk 1  gridtype   vargrid    ENDIF      ixminmesh   0l    ixmaxmesh   long jpi 1     iyminmesh   0l    iymaxmesh   long jpj 1     izminmesh   0l    izmaxmesh   long jpk 1      for the triangulation      key_periodic   glamt 0  EQ  glamt jpi 1 glamt 1 glamt 0  MOD 360     if jpi gt 4 AND jpj GT 4 then begin       triangles_list   triangule shifted   glamt 0  0  LT glamt 0  1        twin_corners_up 1       twin_corners_dn 1    ENDIF ELSE BEGIN       triangles_list 1       twin_corners_up 1       twin_corners_dn 1    ENDELSE     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF       return end  "); 
    212212a[210] = new Array("./ToBeReviewed/HOPE/createhopestruct.html", "createhopestruct.pro", "", "       todo seb     FUNCTION createhopestruct  event     compile_opt idl2  strictarrsubs      widget_control  event top  get_uvalue top_uvalue   find the selected variable    selected    top_uvalue 1  findline top_uvalue   selected    get the variable id    varid top_uvalue 1  findline top_uvalue   datavarid selected    get the section type    type    top_uvalue 1  findline top_uvalue   sectype selected    get its dimension    dimsvar top_uvalue 1  findline top_uvalue   dimvar selected     tosort sortdim completetype type     dimsvar dimsvar tosort    get the specified spatial domain and build reading parameters    linetype  top_uvalue 1  findline top_uvalue   linetype selected     case linetype of        odd :domainid   widget_info event top find_by_uname    basedomainodd         even :domainid   widget_info event top find_by_uname    basedomaineven         odd even :domainid   widget_info event top find_by_uname    basedomainodd even     endcase    allaxes top_uvalue 1  findline top_uvalue   dimlist     xaxis allaxes dimsvar 0     xlimits    top_uvalue 1  findline top_uvalue   xlimits     if NOT keyword_set xlimits  then begin       xid widget_info domainid find_by_uname    xinterval        widget_control  xid  get_value xint    endif ELSE xint   xaxis where xaxis GE xlimits 0  AND xaxis LE xlimits 1     yaxis allaxes dimsvar 1     yaxis   reverse yaxis          latitudes from the south to the north    ylimits    top_uvalue 1  findline top_uvalue   ylimits     if NOT keyword_set ylimits  then begin       yid widget_info domainid find_by_uname    yinterval        widget_control  yid  get_value yint    endif ELSE yint   yaxis where yaxis GE ylimits 0  AND yaxis LE ylimits 1     zaxis allaxes dimsvar 2     zlimits    top_uvalue 1  findline top_uvalue   zlimits     if NOT keyword_set zlimits  then begin       zid widget_info domainid find_by_uname    zinterval        widget_control  zid  get_value zint    endif ELSE zint   zaxis where zaxis GE zlimits 0  AND zaxis LE zlimits 1    time axis and time interval    time allaxes dimsvar 3     yyyymmdd   vairdate time     tlimits    top_uvalue 1  findline top_uvalue   tlimits     if NOT keyword_set tlimits  then BEGIN       date1id   widget_info event top  find_by_uname    date1        widget_control  date1id  get_value   date1       date2id   widget_info event top  find_by_uname    date2        widget_control  date2id  get_value   date2       tlimits    date1  date2     ENDIF    tint   time where yyyymmdd GE tlimits 0  AND yyyymmdd LE tlimits 1       limits of the domain      nxt   n_elements xint     nyt   n_elements yint     nzt   n_elements zint     jpt   n_elements tint        firstx    where xaxis GE xint 0 0     firsty    where yaxis GE yint 0 0     lasty   firsty nyt 1    firstz    where zaxis GE zint 0 0     firstt    where time GE tint 0 0      read the array      cdfid ncdf_open top_uvalue 1  findline top_uvalue   filename     offset firstx n_elements yaxis lasty 1 firstz firstt     count nxt nyt nzt jpt     tosortinv sortdim completetype type inv    sort the offset and count for the case of the array is not written   as a xyzt array but for example as a yzxt array     offset offset tosortinv     count count tosortinv    call to ncdf_varget    ncdf_varget  cdfid  varid  array  offset offset  count count     force to keep the dimension equal to 1    if count 3  eq 1 then array reform array count 0 count 1 count 2 count 3 over     if not  array_equal tosort  lindgen 4  then array transpose temporary array tosort     count nxt nyt nzt jpt     if jpt eq 1 then array reform array count 0 count 1 count 2 count 3 over     array reverse array  2   over    if there is no longitude zoom  shift the array to obtain longitude   between 20 and 380    if nxt EQ 128 OR nxt EQ 256 then begin       key_shift    where xaxis GE 20 0        xaxis   shift temporary xaxis  key_shift        xaxis where xaxis LT 20    xaxis where xaxis LT 20 360       array   shift temporary array  key_shift  0  0  0     ENDIF ELSE key_shift   0   get some informations about the array    insidevar ncdf_varinq cdfid varid     if insidevar natts NE 0 then begin       attnames   strarr insidevar natts        for attiq 0 insidevar natts 1 do attnames attiq strlowcase ncdf_attname cdfid varid attiq    get the name       if  where attnames EQ  long_name 0  EQ  1 then value             ELSE ncdf_attget cdfid varid long_name value       varname   strtrim string value  2    get the units       if  where attnames EQ  units 0  EQ  1 then value             ELSE ncdf_attget cdfid varid units value       varunit   strtrim string value  2    get the  missing_value        if  where attnames EQ  missing_value 0  EQ  1 then valmask   1e20         ELSE ncdf_attget cdfid varid missing_value  valmask    ENDIF ELSE BEGIN        varunit           valmask   1e20       varname        ENDELSE    varexp         build arguments to use computehopegrid and put it together in a structure    firsts    firstx firsty firstz     lasts    firstx nxt 1 firsty nyt 1 firstz nzt 1     vargrid    top_uvalue 1  findline top_uvalue   pointtype selected     hopegrid    xaxis:xaxis  yaxis:yaxis  zaxis:zaxis  firsts:firsts  lasts:lasts  type:type  linetype:linetype  pttype:vargrid     hopestru    array:array  unit:varunit  name:varname  date:time firstt:firstt jpt 1  grid:vargrid  hopegrid:hopegrid    we close the netcdf file before living     ncdf_close   cdfid    return  hopestru end"); 
    213213a[211] = new Array("./ToBeReviewed/HOPE/cw_selectinterval.html", "cw_selectinterval.pro", "", "       todo seb       PRO testwid_event  event         compile_opt idl2  strictarrsubs          widget_control  event id  get_uvalue uval      if n_elements uval  EQ 0 then return      case uval of          done :widget_control  event top   destroy          get :BEGIN            id   widget_info event top find_by_uname    discret             widget_control  id  get_value   value1            help  value1            print   value1  value1            id   widget_info event top find_by_uname    continus             widget_control  id  get_value   value2            help  value2            print   value2  value2         END         ELSE:      endcase      return   end   PRO testwid  _extra   ex         compile_opt idl2  strictarrsubs          base widget_base COLUMN       nothing   widget_label base  value    beginning of the test           nothing   cw_selectinterval base  10 indgen 5  _extra   ex  uname    discret  uvalue    discret       print  nothing      nothing   cw_selectinterval base  indgen 20  _extra   ex  uname    continus  uvalue    continus       print  nothing          nothing   widget_button base  value    get  uvalue    get       nothing   widget_button base  value    done  uvalue    done       widget_control  base   REALIZE      xmanager testwid  base   no_block      return   end       function cw_selectinterval_get_value  id     compile_opt idl2  strictarrsubs      bgroupid widget_info id  find_by_uname    bgroup    the widget is a set of button    if bgroupid ne 0 then begin       widget_control  bgroupid  get_value   selected       widget_control  bgroupid  get_uvalue   vecteur       vecteur   vecteur vecteur    endif else begin   the widget is 2 sliders       Minid   Widget_Info Id  Find_by_uname    min        widget_control  minid  get_value   minval       minval   minval value       maxid   widget_info id  find_by_uname    max        widget_control  maxid  get_value   maxval       maxval   maxval value       widget_control  minid  get_uvalue   vecteur       vecteur   vecteur vecteur       selected   where vecteur ge minval and vecteur le maxval     ENDELSE   if selected 0  eq  1 then return   1 else return  vecteur selected  END   function cw_selectinterval_event  event     compile_opt idl2  strictarrsubs      widget_control  event id  get_uvalue uval    case uval name of        min :begin                 change the value if the minimum for the slider called max          maxid widget_info event handler  find_by_uname    max           widget_control  maxid  set_value SLIDER_MIN:event value 1        end        max :begin                 change the value if the maximum for the slider called min          minid widget_info event handler  find_by_uname    min           widget_control  minid  set_value SLIDER_MAX:event value 1        end        bgroup :    endcase    return   ID:event handler  TOP:event top  HANDLER:0L  END    function cw_selectinterval  parent  vecteur  _extra   ex     compile_opt idl2  strictarrsubs       base   widget_base parent                           EVENT_FUNC    cw_selectinterval_event                            FUNC_GET_VALUE cw_selectinterval_get_value                            PRO_SET_VALUE cw_selectinterval_set_value                             ROW  _extra   ex     if n_elements vecteur  le 10 then begin       nothing   CW_BGROUP base  strtrim vecteur 1 nonexclusive row  uvalue    name: bgroup  vecteur:vecteur  uname bgroup        buttvalue bytarr n_elements nothing        buttvalue 0 1       widget_control  nothing  set_value buttvalue    endif else begin       min min floor vecteur        max max ceil vecteur        nothing cw_slider_pm base  value   min  min min  max max 1  uvalue    name: min  vecteur:vecteur  uname min        nothing cw_slider_pm base  value   max  min min 1  max max  uvalue    name: max  uname max     endelse    return  base end"); 
    214214a[212] = new Array("./ToBeReviewed/HOPE/domainpart.html", "domainpart.pro", "", "       todo seb     pro domainpart  top_uvalue  basedomain  selected  DESTROY   destroy     compile_opt idl2  strictarrsubs       if keyword_set destroy  then BEGIN         id   widget_info basedomain find_by_uname    title          IF id NE 0 THEN widget_control  id   destroy       id   widget_info basedomain find_by_uname    oddsecchoice        IF id NE 0 THEN widget_control  id   destroy       id   widget_info basedomain find_by_uname    evensecchoice        IF id NE 0 THEN widget_control  id   destroy       id   widget_info basedomain find_by_uname    odd evensecchoice        IF id NE 0 THEN widget_control  id   destroy       id   widget_info basedomain find_by_uname    basex        IF id NE 0 THEN widget_control  id   destroy       id   widget_info basedomain find_by_uname    basey        IF id NE 0 THEN widget_control  id   destroy       id   widget_info basedomain find_by_uname    basez        IF id NE 0 THEN widget_control  id   destroy       return    endif     we get the size of the dimenstion id of this section      dimvar    top_uvalue 1  findline top_uvalue   dimvar     selecteddim   dimvar  selected     typedim    top_uvalue 1  findline top_uvalue   typedim     sorteddim   selecteddim sortdim typedim selecteddim     dimlist    top_uvalue 1  findline top_uvalue   dimlist       longitude part      basex widget_info basedomain find_by_uname    basex     IF basex NE 0 THEN widget_control  basex   destroy    basex widget_base basedomain row  uname basex     nothing widget_text basex value longitude  xsize   10     nothing cw_selectinterval basex dimlist sorteddim 0 uname xinterval uvalue name: xinterval       latitude part      basey widget_info basedomain find_by_uname    basey     IF basey NE 0 THEN widget_control  basey   destroy    basey widget_base basedomain row  uname basey     nothing widget_text basey value latitude  xsize   10     nothing cw_selectinterval basey reverse dimlist sorteddim 1  uname yinterval uvalue name: yinterval       depth part      basez widget_info basedomain find_by_uname    basez     IF basez NE 0 THEN widget_control  basez   destroy    basez widget_base basedomain row  uname basez     nothing widget_text basez value depth  xsize   10     nothing cw_selectinterval basez dimlist sorteddim 2 uname zinterval uvalue name: zinterval    end  "); 
    215215a[213] = new Array("./ToBeReviewed/HOPE/findlineandpointtype.html", "findlineandpointtype.pro", "", "       todo seb     FUNCTION findlineandpointtype  sectype  xaxis  yaxis  iodir   the file  HOPE_lonlat nc  is used in this function  This file must   be localized in iodir   netcdf HOPE_lonlat     dimensions:           latTlow   242             lonTlowodd   128             latThigh   390             lonThighodd   256     variables:           float latTlow latTlow                      latTlow:units    degrees_north              float lonTlowodd lonTlowodd                      lonTlowodd:units    degrees_east                      lonTlowodd:point_spacing    even                      lonTlowodd:modulo                   float latThigh latThigh                      latThigh:units    degrees_north              float lonThighodd lonThighodd                      lonThighodd:units    degrees_east                      lonThighodd:point_spacing    even                      lonThighodd:modulo                 compile_opt idl2  strictarrsubs      jpi   n_elements xaxis     jpj   n_elements yaxis      depermination of the grid type and of the point type     low resolution grid: jpi 128  jpj 121   x 2  jpk 20                     0        1 4         2 8       4 2        5 6      odd                    T          u          T          u  93 3      even        T          u          T          u             92 2      odd                    T          u          T          u  91 1      even        T          u          T          u             90 0       high resolution grid: jpi 256  jpj 195   x 2  jpk 29                     0        0 7         1 4        2 1        2 8             odd                    T          u          T          u  91 6      even        T          u          T          u             91 0      odd                    T          u          T          u  90 5      even        T          u          T          u             90 0        x0   floor xaxis 0 10 10     y0   floor yaxis 0 10 10     case sectype of        xy :BEGIN          if  jpi NE 128 and jpi NE 256              OR  jpj NE 121 AND jpj NE 121 2 AND jpj NE 195 AND jpj NE 195 2  then begin             print    CASE NOT coded              stop          ENDIF          case 1 of             jpj EQ 195: BEGIN                case X0 OF                   0:BEGIN                      line    even                       vargrid    T                    END                   0 7:BEGIN                      case y0 OF                         91 6:BEGIN                            line    odd                             vargrid    T                          END                         91 0:BEGIN                            line    even                             vargrid    U                          END                         ELSE:BEGIN                            print    CASE NOT coded                             stop                         END                      endcase                   END                   1 4:BEGIN                      line    odd                       vargrid    U                    END                endcase             END             jpj EQ 121:BEGIN                case x0 OF                   0:BEGIN                      line    even                       vargrid    T                    END                   1 4:BEGIN                      case y0 OF                         93 3:BEGIN                            line    odd                             vargrid    T                          END                         92 2:BEGIN                            line    even                             vargrid    U                          END                         ELSE:BEGIN                            print    CASE NOT coded                             stop                         END                      endcase                   END                   2 8:BEGIN                      line    odd                       vargrid    U                    END                endcase             END             jpj EQ 195 2:BEGIN                line    odd even                 case x0 OF                   0 7:vargrid    T                    1 4:vargrid    U                    ELSE:BEGIN                      print    CASE NOT coded                       stop                   END                endcase             END             jpj EQ 121 2:BEGIN                line    odd even                 case x0 OF                   1 4:vargrid    T                    2 8:vargrid    U                    ELSE:BEGIN                      print    CASE NOT coded                       stop                   END                endcase             END             ELSE:BEGIN                print    CASE NOT coded                 stop             END          endcase       END        xz :BEGIN          if  jpi NE 128 and jpi NE 256  then begin             print    CASE NOT coded              stop          ENDIF          case X0 OF             0:BEGIN                line    even                 vargrid    T              END             0 7:BEGIN                id   ncdf_open iodir HOPE_lonlat nc                 ncdf_varget  id   latThigh  lat                test    where lat EQ yaxis 0 0                 if test EQ  1 then begin                   print    CASE NOT coded                    stop                endif                IF  test MOD 2  EQ 1 THEN BEGIN                   line    even                    vargrid    U                 ENDIF ELSE BEGIN                   line    odd                    vargrid    T                 ENDELSE                ncdf_close  id             END             1 4:BEGIN                if jpi EQ 128 then begin                   id   ncdf_open iodir HOPE_lonlat nc                    ncdf_varget  id   latTlow  lat                   test    where lat EQ yaxis 0 0                    if test EQ  1 then begin                      print    CASE NOT coded                       stop                   endif                   IF  test MOD 2  EQ 1 THEN BEGIN                      line    even                       vargrid    U                    ENDIF ELSE BEGIN                      line    odd                       vargrid    T                    ENDELSE                   ncdf_close  id                ENDIF ELSE BEGIN                   line    odd                    vargrid    U                 ENDELSE             END             2 8:BEGIN                line    odd                 vargrid    U              END          endcase       END        yz :BEGIN          if  jpj NE 121 AND jpj NE 195  then begin             print    CASE NOT coded              stop          ENDIF          id   ncdf_open iodir HOPE_lonlat nc           case y0 of             93 3:BEGIN                line    odd                 ncdf_varget  id   lonTlowodd  lonTodd                xstep    lonTodd 1 lonTodd 0 2                 case 1 OF                    where lonTodd EQ xaxis 0 0  NE  1:vargrid    T                     where lonTodd xstep EQ xaxis 0 0  NE  1:vargrid    U                    ELSE:BEGIN                      print    CASE NOT coded                       stop                   END                endcase             END             92 2:BEGIN                line    even                 ncdf_varget  id   lonTlowodd  lonTodd                xstep    lonTodd 1 lonTodd 0 2                 case 1 OF                    where lonTodd EQ xaxis 0 0  NE  1:vargrid    U                     where lonTodd xstep EQ xaxis 0 0  NE  1:vargrid    T                    ELSE:BEGIN                      print    CASE NOT coded                       stop                   END                endcase             END             91 6:BEGIN                line    odd                 ncdf_varget  id   lonThighodd  lonTodd                xstep    lonTodd 1 lonTodd 0 2                 case 1 OF                    where lonTodd EQ xaxis 0 0  NE  1:vargrid    T                     where lonTodd xstep EQ xaxis 0 0  NE  1:vargrid    U                    ELSE:BEGIN                      print    CASE NOT coded                       stop                   END                endcase             END             91 0:BEGIN                line    even                 ncdf_varget  id   lonThighodd  lonTodd                xstep    lonTodd 1 lonTodd 0 2                 case 1 OF                    where lonTodd EQ xaxis 0 0  NE  1:vargrid    U                     where lonTodd xstep EQ xaxis 0 0  NE  1:vargrid    T                    ELSE:BEGIN                      print    CASE NOT coded                       stop                   END                endcase             END             ELSE:BEGIN                print    CASE NOT coded                 stop             END          endcase          ncdf_close  id       END       else:BEGIN          print   case not coded           stop       END    endcase     return   linetype:line  pointtype:vargrid  end"); 
    216 a[214] = new Array("./ToBeReviewed/HOPE/read_hope.html", "read_hope.pro", "", "  pro read_hope_event  event     compile_opt idl2  strictarrsubs      widget_control  event id  get_uvalue uval    widget_control  event top  get_uvalue top_uvalue    case uval name OF          cancel :begin   close the file          cdfid top_uvalue 1  findline top_uvalue   cdfid           ncdf_close  cdfid   clear the pointer          for i 0 n_elements top_uvalue 1 do ptr_free  top_uvalue i    kill the widget          widget_control event top destroy       end          type choice :begin   find the new type of selected section          typeindex widget_info event id droplist_select           selectedtype top_uvalue 1  findline top_uvalue   type choice typeindex    find the available variables for this type of section          sectype    top_uvalue 1  findline top_uvalue   sectype           goodvar   where sectype EQ selectedtype           namevar    top_uvalue 1  findline top_uvalue   namevar           goodnamevar   namevar goodvar    find the selected var name          varchoiceid   widget_info event top find_by_uname    var choice           varindex   widget_info varchoiceid droplist_select           varchoice    top_uvalue 1  findline top_uvalue   var choice           selectedvarname varchoice varindex    do we change the variable           if  where goodnamevar EQ selectedvarname 0  EQ  1 then begin             selectedvarname   goodnamevar 0              varindex    where varchoice EQ selectedvarname 0              widget_control  varchoiceid  set_droplist_select   varindex          ENDIF   displays the different domains          selected   goodvar where goodnamevar EQ selectedvarname           rh_alldomains  event top  selected       end          var choice :BEGIN   find the new variable          varindex widget_info event id droplist_select           selectedvar top_uvalue 1  findline top_uvalue   var choice varindex    find the available variables for this type of section          namevar    top_uvalue 1  findline top_uvalue   namevar           goodvar   where namevar EQ selectedvar           sectype    top_uvalue 1  findline top_uvalue   sectype           goodtype   sectype goodvar    find the selected type of section          typechoiceid   widget_info event top find_by_uname    type choice           typeindex   widget_info typechoiceid droplist_select           typechoice    top_uvalue 1  findline top_uvalue   type choice           selectedtype typechoice typeindex    do we change the type of section            if  where goodtype EQ selectedtype 0  EQ  1 then begin             selectedtype   goodtype 0              typeindex    where typechoice EQ selectedtype 0              widget_control  typechoiceid  set_droplist_select   typeindex          ENDIF   displays the different domains          selected   goodvar where goodtype EQ selectedtype           rh_alldomains  event top  selected       END          plot :BEGIN   plot the array          res   createhopestruct event    type of section          selected    top_uvalue 1  findline top_uvalue   selected           type    top_uvalue 1  findline top_uvalue   sectype selected    get the informations of cw_specifie          specifieid widget_info event top find_by_uname    specifie           widget_control  specifieid  get_value   specifie          specifie   struct2string specifie direct2string           case type of              x :command    plt1d res x specifie              y :command    plt1d res y specifie              z :command    plt1d res z specifie              t :command    pltt res t   specifie              xy :command    plt  res specifie              xz :command    pltz  res xz specifie              yz :command    pltz  res yz specifie              xt :command    pltt res xt specifie              yt :command    pltt res yt specifie              zt :command    pltt res zt specifie              xyz :              xyt :              yzt :              xyzt :          ENDCASE          test   execute command           if test EQ 0 then stop       end          linechoice :BEGIN          if event select EQ 1 then begin             sensitive   bytarr 3              sensitive where odd   even   odd even  eq event value    1             basedomainodd widget_info event top find_by_uname    basedomainodd              widget_control  basedomainodd  sensitive   sensitive 0              basedomaineven widget_info event top find_by_uname    basedomaineven              widget_control  basedomaineven  sensitive   sensitive 1              basedomainoddeven widget_info event top find_by_uname    basedomainodd even              widget_control  basedomainoddeven  sensitive   sensitive 2              case  where sensitive EQ 1 0  of                0:BEGIN                   widget_control  basedomainodd  get_uvalue   oddsecchoice                   oddsecchoiceid widget_info event top find_by_uname    oddsecchoice                    if oddsecchoiceid NE 0 then                      index   widget_info oddsecchoiceid   droplist_select                      ELSE index   0                    top_uvalue 1  findline top_uvalue   selected    oddsecchoice index                 END                1:BEGIN                   widget_control  basedomaineven  get_uvalue   evensecchoice                   evensecchoiceid widget_info event top find_by_uname    evensecchoice                    if evensecchoiceid NE 0 then                      index   widget_info evensecchoiceid   droplist_select                      ELSE index   0                    top_uvalue 1  findline top_uvalue   selected    evensecchoice index                 END                2:BEGIN                   widget_control  basedomainodd  get_uvalue   oddevensecchoice                   oddevensecchoiceid widget_info event top find_by_uname    odd evensecchoice                    if oddevensecchoiceid NE 0 then                      index   widget_info oddevensecchoiceid   droplist_select                      ELSE index   0                    top_uvalue 1  findline top_uvalue   selected    oddevensecchoice index                 END             endcase          endif       END          oddsecchoice :BEGIN          widget_control  event top  update 0          basedomainodd widget_info event top find_by_uname    basedomainodd           widget_control  basedomainodd  get_uvalue   oddsecchoice          domainpart  top_uvalue  basedomainodd  oddsecchoice event index            top_uvalue 1  findline top_uvalue   selected    oddsecchoice event index           widget_control  event top  update 1       END          evensecchoice :BEGIN          widget_control  event top  update 0          basedomaineven widget_info event top find_by_uname    basedomaineven           widget_control  basedomaineven  get_uvalue   evensecchoice          domainpart  top_uvalue  basedomaineven  evensecchoice event index            top_uvalue 1  findline top_uvalue   selected    evensecchoice event index           widget_control  event top  update 1       END          odd evensecchoice :BEGIN          widget_control  event top  update 0          basedomainoddeven widget_info event top find_by_uname    basedomainodd even           widget_control  basedomainoddeven  get_uvalue   oddevensecchoice          domainpart  top_uvalue  basedomainoddeven  oddevensecchoice event index            top_uvalue 1  findline top_uvalue   selected    oddevensecchoice event index           widget_control  event top  update 1       END          date1 :BEGIN          date2id   widget_info event top  find_by_uname    date2           widget_control  date2id  get_value   date2          if event value GT date2 then widget_control  date2id  set_value   event value       END          date2 :BEGIN          date1id   widget_info event top  find_by_uname    date1           widget_control  date1id  get_value   date1          if event value LT date1 then widget_control  date1id  set_value   event value       END         else:    endcase    return end                file_comments   Read the Hope grid file converted in NetCdf by xconv      categories   Reading      param TYPEIN  in required    A string specifing from which type of section the 4D   array based:  xy   xz   yz       param VARNAMEIN   A string the name of the cariable to be read  in   lower or upper case       keyword FILENAME   The name of the file to be read      keyword XLIMITS   A two elements vertor  lonmin  lonmax    the bondary of the longitudes  from 0 to 360       keyword YLIMITS   A two elements vertor  latmin  latmax    the bondary of the latitudes  from  90 to 90       keyword ZLIMITS   A two elements vertor  depthmin  depthmax    the bondary of the depth      keyword TLIMITS   A two elements vertor  date1  date2    the bondary of the calendar with date1 and date2   folowing the syntaxe yyyymmdd      keyword ODDPT   Activate to read only the sections located on ODD   points       keyword EVENPT   Activate to read only the sections located on even   points       keyword ODDEVENPT   Activate to read only the sections located on   both even and odd points  horizontal sections       keyword _EXTRA   Used to pass yor keywords      returns    1 if typein and varnamein are undefine  this is the widget   version      A structure which but be read by litchamp pro and is   necessary to complute the grid associated to the data  see   the example       uses   common pro  usefull only for the definition of iodir       restrictions    x   y   z   t   xt   yt  and  zt  section not coded  xconv   must be able to works with this kind of fonction    The grib file has no zoom possibilities on horizontal dimensions       restrictions     When typein and varnamein are defined  the methode to find the   godd variable is:    1  find the variables which are available on this type of   sections woth this name    2  if ODDPT  EVENPT or ODDEVENPT are specified  consider only   these types of sections    3  For an XY section the chosen variable is the one which has   the most level in the vertical domain specified by ZLIMITS        For an XZ section the chosen variable is the one which has   the most points in the latitude domain specified by YLIMITS        For an YZ section the chosen variable is the one which has   the most points in the longitude domain specified by XLIMITS         examples         IDL  a read_hope xy ocpt filename CLIM_CNT_1993 1998 nc        IDL  help  a struct         Structure   6 tags  length 1860176  refs 1:          ARRAY           FLOAT     Array 128  242  15           UNIT            STRING     deg C           NAME            STRING     Ocean potential temperature           DATE            FLOAT     Array 1           GRID            STRING     T           HOPEGRID        STRUCT       Array 1        IDL  help  a hopegrid struct         Structure   8 tags  length 1588  refs 2:          XAXIS           FLOAT     Array 128           YAXIS           FLOAT     Array 242           ZAXIS           FLOAT     Array 15           FIRSTS          LONG      Array 3           LASTS           LONG      Array 3           TYPE            STRING     xy           LINETYPE        STRING     odd even           PTTYPE          STRING     T        IDL  help  litchamp a            FLOAT       Array 128  242  15       history   Sebastien Masson  smasson lodyc jussieu fr                         June 2001      version    Id            FUNCTION read_hope  typein  varnamein  FILENAME   filename  XLIMITS   xlimits  YLIMITS   ylimits   ZLIMITS   zlimits  TLIMITS   tlimits  ODDPT   oddpt  ODDEVENPT   oddevenpt  EVENPT   evenpt  _extra   ex     compile_opt idl2  strictarrsubs    common                           usefull only for the definition of iodir    if n_elements filename  EQ 0 then filename   isafile iodirectory   iodir  _extra   ex    IF size filename   type  NE 7 THEN return   1   filename   isafile filename   filename  iodirectory   iodir  _extra   ex      cdfid   ncdf_open filename          id of the netcdf file    wathinside   ncdf_inquire cdfid     structure with global informations       dimensions      namedim   strarr wathinside ndims     name of the dimensions   typedim   strarr wathinside ndims     type of the dimensions  x y z t    sizedim   lonarr wathinside ndims     size of each dimension   loop on the dimensions to get the names and sizes   for dimiq   0  wathinside ndims 1 do begin     ncdf_diminq  cdfid  dimiq  name  value     namedim dimiq    name     case 1 of        STRCMP name   lon  3   FOLD_CASE :typedim dimiq     x        STRCMP name   lat  3   FOLD_CASE :typedim dimiq     y        STRCMP name   z  1   FOLD_CASE :typedim dimiq     z        STRCMP name   t  1   FOLD_CASE :typedim dimiq     t        ELSE:BEGIN         ncdf_close  cdfid         return  report Unknown name of dimension        END     endcase     sizedim dimiq    value   endfor   dimlist: structure which contains the name and the value of each   dimension   we suppose that there is always a variable which has the    same name that the dimension and which gives the values of   this dimension   ncdf_varget  cdfid  namedim 0  value   dimlist   create_struct namedim 0  value    for dimiq   1  wathinside ndims 1 do begin     ncdf_varget  cdfid  namedim dimiq  value  get the value     dimlist   create_struct dimlist  namedim dimiq  value    endfor       variables      namevar   strarr wathinside nvars      names of the variables   ndimsvar   lonarr wathinside nvars     number of dim for each variable   dimvar   replicate 1  wathinside ndims  wathinside nvars    dims of each variables   loop over the variable ids to fill namevar  ndimsvar and dimvar   for varid   0  wathinside nvars 1 do begin     res   ncdf_varinq cdfid  varid      namevar varid    res name     namevar varid    strjoin strsplit namevar varid   _ 0 99   EXTRACT   REGEX      ndimsvar varid    res ndims     dimvar 0:res ndims 1  varid    res dim   ENDFOR   we cut dimvar to select only the interessant part   dimvar   dimvar 0:max ndimsvar 1      selection of the data variables which are diffrent from the   dimension variables   we suppose that that data variables are 4D array  with sometime   dimensions equal to 1  they must be different from dimension   variables which have only 1 dimension   datavarid   where ndimsvar eq 4    numberofvar   n_elements datavarid    namevar   namevar datavarid    ndimsvar   ndimsvar datavarid    dimvar   dimvar  datavarid      sectype   strarr numberofvar    the type of section for each variable : xy   xz   yz    linetype   strarr numberofvar    the line of the points : odd  even or odd even   pointtype   strarr numberofvar    the type of variable : scalar  T  or vector  U    for i   0  numberofvar 1 do begin     dimofthevar   dimvar  i      sectype i    typedim dimofthevar 0 typedim dimofthevar 1      xaxisid   dimofthevar where typedim dimofthevar  EQ  x      yaxisid   dimofthevar where typedim dimofthevar  EQ  y      lineandpt   findlineandpointtype sectype i  dimlist xaxisid 0  dimlist yaxisid 0  iodir      linetype i    lineandpt linetype     pointtype i    lineandpt pointtype   endfor                  definition of the widget               base   widget_base column        first base:       droplist to select the type of section      droplist to select the variable      button to select type of line : odd  even or odd even       base1   widget_base base   row   frame    typechoice   sectype uniq sectype  sort sectype    if n_elements typechoice  GT 1 then typechoice   typechoice sortdim typechoice    base11   widget_droplist base1  title    Type of section  value   typechoice  uvalue    name: type choice  uname    type choice    if n_elements typein  NE 0 then BEGIN     selectedtype   strmid typein  0  2      widget_control  base11  set_droplist_select                         0L    where typechoice EQ selectedtype 0    ENDIF ELSE selectedtype   typechoice 0       varchoice   namevar uniq namevar  sort namevar    base12   widget_droplist base1  title    Available data  value   varchoice  uvalue    name: var choice  uname    var choice    if n_elements varnamein  NE 0 THEN BEGIN     selectedname   varnamein     widget_control  base12  set_droplist_select                         0L    where strlowcase varchoice  EQ strlowcase varnamein 0    ENDIF ELSE selectedname   varchoice 0      base13   widget_base base1   row  uname    linechoicebase        base 2: base to select the domain of the odd points     base2   widget_base base   column  uname    basedomainodd   frame        base 3: base to select the domain of the even points     base3   widget_base base   column  uname    basedomaineven   frame        base 4: base to select the domain of the odd even points     base4   widget_base base   column  uname    basedomainodd even   frame        base 5: calendar     base5   widget_base base   row  uname    baset   frame    timename   strlowcase tag_names dimlist wathinside recdim    read the time axis in julina days   time   ncdf_timeget cdfid  timename    update the dimlist structure   dimlist wathinside recdim    time   base51   cw_calendar base5  time  uname    date1  uvalue    name: date1    base52   cw_calendar base5  time  uname    date2  uvalue    name: date2         base 6: base to select the min  max    and others keywords     base6   cw_specifie base   column  uname    specifie  uvalue    name: specifie         base 7: last base with the action buttons     base7   widget_base base   row  uname    finalaction    base71   widget_button base7  value    Plot  uvalue    name: plot    base72   widget_button base7  value    Cancel  uvalue    name: cancel        determination of the selected variable         goodname   0   where strlowcase namevar  EQ strlowcase selectedname    goodtype   0   where sectype EQ selectedtype    selected   inter goodname  goodtype    if selected 0  EQ  1 then BEGIN     widget_control  base   destroy     ncdf_close  cdfid     return  report impossible combinaison : type of section  selectedtype  variable name  selectedname    ENDIF   if n_elements typein  NE 0 then BEGIN     if NOT keyword_set xlimits  then xlimits    1e9  1e9      if NOT keyword_set ylimits  then ylimits    1e9  1e9      if NOT keyword_set zlimits  then zlimits    1e9  1e9      if NOT keyword_set tlimits  then tlimits    1e9  1e9    ENDIF   if n_elements typein  NE 0 AND n_elements selected  NE 1 then BEGIN     if keyword_set oddpt  then selected   inter selected  where linetype EQ  odd      if keyword_set evenpt  then selected   inter selected  where linetype EQ  even      if keyword_set oddevenpt  then selected   inter selected  where linetype EQ  odd even      if selected 0  EQ  1 then BEGIN       widget_control  base   destroy       ncdf_close  cdfid       return  report impossible combinaison : type of section  selectedtype  variable name  selectedname  and line type       endif     if n_elements selected  NE 1 then begin       case selectedtype of          xy :BEGIN   choice on the vertical axis   choice based on the variable which has the most available levels   between the zlimits            if NOT keyword_set zlimits  then begin             print   case not coded              stop           ENDIF           number   lonarr n_elements selected            for i   0  n_elements selected 1 do begin             zdim   dimvar 2  selected i              zaxis   dimlist zdim              nothing   where zaxis GE zlimits 0  AND zaxis LE zlimits 1  count              number i    count           ENDFOR           selected   selected where number EQ max number            if n_elements selected  NE 1 then begin             print   case not coded              stop           endif         END          xz :BEGIN   choice on the latitude axis           if NOT keyword_set ylimits  then begin             print   case not coded              stop           ENDIF           number   lonarr n_elements selected            for i   0  n_elements selected 1 do begin             ydim   dimvar 2  selected i              yaxis   dimlist ydim              nothing   where yaxis GE ylimits 0  AND yaxis LE ylimits 1  count              number i    count           ENDFOR           selected   selected where number EQ max number            if n_elements selected  NE 1 then begin             print   case not coded              stop           endif         END          yz :BEGIN   choice on the longitude axis           if NOT keyword_set xlimits  then begin             print   case not coded              stop           ENDIF           number   lonarr n_elements selected            for i   0  n_elements selected 1 do begin             xdim   dimvar 2  selected i              xaxis   dimlist xdim              nothing   where xaxis GE xlimits 0  AND xaxis LE xlimits 1  count              number i    count           ENDFOR           selected   selected where number EQ max number            if n_elements selected  NE 1 then begin             print   case not coded              stop           endif         END       endcase     endif   ENDIF       definition of the uvalue of the base which allows to share the   variables between programs         top_uvalue   ptrarr 2  18   allocate_heap     top_uvalue 0  0     type choice     top_uvalue 1  0    temporary typechoice     top_uvalue 0  1     var choice     top_uvalue 1  1    temporary varchoice     top_uvalue 0  2     namevar     top_uvalue 1  2    temporary namevar     top_uvalue 0  3     dimvar     top_uvalue 1  3    temporary dimvar     top_uvalue 0  4     sectype     top_uvalue 1  4    temporary sectype     top_uvalue 0  5     linetype     top_uvalue 1  5    temporary linetype     top_uvalue 0  6     pointtype     top_uvalue 1  6    temporary pointtype     top_uvalue 0  7     dimlist     top_uvalue 1  7    temporary dimlist     top_uvalue 0  8     typedim     top_uvalue 1  8    temporary typedim     top_uvalue 0  9     sizedim     top_uvalue 1  9    temporary sizedim     top_uvalue 0  10     cdfid     top_uvalue 1  10    cdfid    top_uvalue 0  11     datavarid     top_uvalue 1  11    datavarid    top_uvalue 0  12     selected     top_uvalue 1  12    selected    top_uvalue 0  13     filename     top_uvalue 1  13    filename    top_uvalue 0  14     xlimits     top_uvalue 1  14    testvar var   xlimits     top_uvalue 0  15     ylimits     top_uvalue 1  15    testvar var   ylimits     top_uvalue 0  16     zlimits     top_uvalue 1  16    testvar var   zlimits     top_uvalue 0  17     tlimits     top_uvalue 1  17    testvar var   tlimits      widget_control  base  set_uvalue   top_uvalue   rh_alldomains  base  selected    if n_params  EQ 0 then BEGIN   we use the widget     widget_control  base   REALIZE     xmanager   read_hope  base   no_block     return    1   ENDIF   get the output   output   createhopestruct top:base    clear the pointer   for i   0  n_elements top_uvalue 1 do ptr_free  top_uvalue i    close the file   ncdf_close  cdfid   return  output end"); 
     216a[214] = new Array("./ToBeReviewed/HOPE/read_hope.html", "read_hope.pro", "", "  pro read_hope_event  event     compile_opt idl2  strictarrsubs      widget_control  event id  get_uvalue uval    widget_control  event top  get_uvalue top_uvalue    case uval name OF          cancel :begin   close the file          cdfid top_uvalue 1  findline top_uvalue   cdfid           ncdf_close  cdfid   clear the pointer          for i 0 n_elements top_uvalue 1 do ptr_free  top_uvalue i    kill the widget          widget_control event top destroy       end          type choice :begin   find the new type of selected section          typeindex widget_info event id droplist_select           selectedtype top_uvalue 1  findline top_uvalue   type choice typeindex    find the available variables for this type of section          sectype    top_uvalue 1  findline top_uvalue   sectype           goodvar   where sectype EQ selectedtype           namevar    top_uvalue 1  findline top_uvalue   namevar           goodnamevar   namevar goodvar    find the selected var name          varchoiceid   widget_info event top find_by_uname    var choice           varindex   widget_info varchoiceid droplist_select           varchoice    top_uvalue 1  findline top_uvalue   var choice           selectedvarname varchoice varindex    do we change the variable           if  where goodnamevar EQ selectedvarname 0  EQ  1 then begin             selectedvarname   goodnamevar 0              varindex    where varchoice EQ selectedvarname 0              widget_control  varchoiceid  set_droplist_select   varindex          ENDIF   displays the different domains          selected   goodvar where goodnamevar EQ selectedvarname           rh_alldomains  event top  selected       end          var choice :BEGIN   find the new variable          varindex widget_info event id droplist_select           selectedvar top_uvalue 1  findline top_uvalue   var choice varindex    find the available variables for this type of section          namevar    top_uvalue 1  findline top_uvalue   namevar           goodvar   where namevar EQ selectedvar           sectype    top_uvalue 1  findline top_uvalue   sectype           goodtype   sectype goodvar    find the selected type of section          typechoiceid   widget_info event top find_by_uname    type choice           typeindex   widget_info typechoiceid droplist_select           typechoice    top_uvalue 1  findline top_uvalue   type choice           selectedtype typechoice typeindex    do we change the type of section            if  where goodtype EQ selectedtype 0  EQ  1 then begin             selectedtype   goodtype 0              typeindex    where typechoice EQ selectedtype 0              widget_control  typechoiceid  set_droplist_select   typeindex          ENDIF   displays the different domains          selected   goodvar where goodtype EQ selectedtype           rh_alldomains  event top  selected       END          plot :BEGIN   plot the array          res   createhopestruct event    type of section          selected    top_uvalue 1  findline top_uvalue   selected           type    top_uvalue 1  findline top_uvalue   sectype selected    get the informations of cw_specifie          specifieid widget_info event top find_by_uname    specifie           widget_control  specifieid  get_value   specifie          specifie   struct2string specifie direct2string           case type of              x :command    plt1d res x specifie              y :command    plt1d res y specifie              z :command    plt1d res z specifie              t :command    pltt res t   specifie              xy :command    plt  res specifie              xz :command    pltz  res xz specifie              yz :command    pltz  res yz specifie              xt :command    pltt res xt specifie              yt :command    pltt res yt specifie              zt :command    pltt res zt specifie              xyz :              xyt :              yzt :              xyzt :          ENDCASE          test   execute command           if test EQ 0 then stop       end          linechoice :BEGIN          if event select EQ 1 then begin             sensitive   bytarr 3              sensitive where odd   even   odd even  eq event value    1             basedomainodd widget_info event top find_by_uname    basedomainodd              widget_control  basedomainodd  sensitive   sensitive 0              basedomaineven widget_info event top find_by_uname    basedomaineven              widget_control  basedomaineven  sensitive   sensitive 1              basedomainoddeven widget_info event top find_by_uname    basedomainodd even              widget_control  basedomainoddeven  sensitive   sensitive 2              case  where sensitive EQ 1 0  of                0:BEGIN                   widget_control  basedomainodd  get_uvalue   oddsecchoice                   oddsecchoiceid widget_info event top find_by_uname    oddsecchoice                    if oddsecchoiceid NE 0 then                      index   widget_info oddsecchoiceid   droplist_select                      ELSE index   0                    top_uvalue 1  findline top_uvalue   selected    oddsecchoice index                 END                1:BEGIN                   widget_control  basedomaineven  get_uvalue   evensecchoice                   evensecchoiceid widget_info event top find_by_uname    evensecchoice                    if evensecchoiceid NE 0 then                      index   widget_info evensecchoiceid   droplist_select                      ELSE index   0                    top_uvalue 1  findline top_uvalue   selected    evensecchoice index                 END                2:BEGIN                   widget_control  basedomainodd  get_uvalue   oddevensecchoice                   oddevensecchoiceid widget_info event top find_by_uname    odd evensecchoice                    if oddevensecchoiceid NE 0 then                      index   widget_info oddevensecchoiceid   droplist_select                      ELSE index   0                    top_uvalue 1  findline top_uvalue   selected    oddevensecchoice index                 END             endcase          endif       END          oddsecchoice :BEGIN          widget_control  event top  update 0          basedomainodd widget_info event top find_by_uname    basedomainodd           widget_control  basedomainodd  get_uvalue   oddsecchoice          domainpart  top_uvalue  basedomainodd  oddsecchoice event index            top_uvalue 1  findline top_uvalue   selected    oddsecchoice event index           widget_control  event top  update 1       END          evensecchoice :BEGIN          widget_control  event top  update 0          basedomaineven widget_info event top find_by_uname    basedomaineven           widget_control  basedomaineven  get_uvalue   evensecchoice          domainpart  top_uvalue  basedomaineven  evensecchoice event index            top_uvalue 1  findline top_uvalue   selected    evensecchoice event index           widget_control  event top  update 1       END          odd evensecchoice :BEGIN          widget_control  event top  update 0          basedomainoddeven widget_info event top find_by_uname    basedomainodd even           widget_control  basedomainoddeven  get_uvalue   oddevensecchoice          domainpart  top_uvalue  basedomainoddeven  oddevensecchoice event index            top_uvalue 1  findline top_uvalue   selected    oddevensecchoice event index           widget_control  event top  update 1       END          date1 :BEGIN          date2id   widget_info event top  find_by_uname    date2           widget_control  date2id  get_value   date2          if event value GT date2 then widget_control  date2id  set_value   event value       END          date2 :BEGIN          date1id   widget_info event top  find_by_uname    date1           widget_control  date1id  get_value   date1          if event value LT date1 then widget_control  date1id  set_value   event value       END         else:    endcase    return end                file_comments   Read the Hope grid file converted in NetCdf by xconv      categories   Reading      param TYPEIN  in required    A string specifing from which type of section the 4D   array based:  xy   xz   yz       param VARNAMEIN   A string the name of the cariable to be read  in   lower or upper case       keyword FILENAME   The name of the file to be read      keyword XLIMITS   A two elements vertor  lonmin  lonmax    the bondary of the longitudes  from 0 to 360       keyword YLIMITS   A two elements vertor  latmin  latmax    the bondary of the latitudes  from  90 to 90       keyword ZLIMITS   A two elements vertor  depthmin  depthmax    the bondary of the depth      keyword TLIMITS   A two elements vertor  date1  date2    the bondary of the calendar with date1 and date2   folowing the syntaxe yyyymmdd      keyword ODDPT   Activate to read only the sections located on ODD   points       keyword EVENPT   Activate to read only the sections located on even   points       keyword ODDEVENPT   Activate to read only the sections located on   both even and odd points  horizontal sections       keyword _EXTRA   Used to pass yor keywords      returns    1 if typein and varnamein are undefine  this is the widget   version      A structure which but be read by litchamp pro and is   necessary to complute the grid associated to the data  see   the example       uses   common pro  usefull only for the definition of iodir       restrictions    x   y   z   t   xt   yt  and  zt  section not coded  xconv   must be able to works with this kind of fonction    The grib file has no zoom possibilities on horizontal dimensions       restrictions     When typein and varnamein are defined  the methode to find the   godd variable is:    1  find the variables which are available on this type of   sections woth this name    2  if ODDPT  EVENPT or ODDEVENPT are specified  consider only   these types of sections    3  For an XY section the chosen variable is the one which has   the most level in the vertical domain specified by ZLIMITS        For an XZ section the chosen variable is the one which has   the most points in the latitude domain specified by YLIMITS        For an YZ section the chosen variable is the one which has   the most points in the longitude domain specified by XLIMITS         examples         IDL  a read_hope xy ocpt filename CLIM_CNT_1993 1998 nc        IDL  help  a struct         Structure   6 tags  length 1860176  refs 1:          ARRAY           FLOAT     Array 128  242  15           UNIT            STRING     deg C           NAME            STRING     Ocean potential temperature           DATE            FLOAT     Array 1           GRID            STRING     T           HOPEGRID        STRUCT       Array 1        IDL  help  a hopegrid struct         Structure   8 tags  length 1588  refs 2:          XAXIS           FLOAT     Array 128           YAXIS           FLOAT     Array 242           ZAXIS           FLOAT     Array 15           FIRSTS          LONG      Array 3           LASTS           LONG      Array 3           TYPE            STRING     xy           LINETYPE        STRING     odd even           PTTYPE          STRING     T        IDL  help  litchamp a            FLOAT       Array 128  242  15       history   Sebastien Masson  smasson lodyc jussieu fr                         June 2001      version    Id: read_hope pro 142 2006 07 21 12:47:49Z navarro             FUNCTION read_hope  typein  varnamein  FILENAME   filename  XLIMITS   xlimits  YLIMITS   ylimits   ZLIMITS   zlimits  TLIMITS   tlimits  ODDPT   oddpt  ODDEVENPT   oddevenpt  EVENPT   evenpt  _extra   ex     compile_opt idl2  strictarrsubs    common                           usefull only for the definition of iodir    if n_elements filename  EQ 0 then filename   isafile iodirectory   iodir  _extra   ex    IF size filename   type  NE 7 THEN return   1   filename   isafile filename   filename  iodirectory   iodir  _extra   ex      cdfid   ncdf_open filename          id of the netcdf file    wathinside   ncdf_inquire cdfid     structure with global informations       dimensions      namedim   strarr wathinside ndims     name of the dimensions   typedim   strarr wathinside ndims     type of the dimensions  x y z t    sizedim   lonarr wathinside ndims     size of each dimension   loop on the dimensions to get the names and sizes   for dimiq   0  wathinside ndims 1 do begin     ncdf_diminq  cdfid  dimiq  name  value     namedim dimiq    name     case 1 of        STRCMP name   lon  3   FOLD_CASE :typedim dimiq     x        STRCMP name   lat  3   FOLD_CASE :typedim dimiq     y        STRCMP name   z  1   FOLD_CASE :typedim dimiq     z        STRCMP name   t  1   FOLD_CASE :typedim dimiq     t        ELSE:BEGIN         ncdf_close  cdfid         return  report Unknown name of dimension        END     endcase     sizedim dimiq    value   endfor   dimlist: structure which contains the name and the value of each   dimension   we suppose that there is always a variable which has the    same name that the dimension and which gives the values of   this dimension   ncdf_varget  cdfid  namedim 0  value   dimlist   create_struct namedim 0  value    for dimiq   1  wathinside ndims 1 do begin     ncdf_varget  cdfid  namedim dimiq  value  get the value     dimlist   create_struct dimlist  namedim dimiq  value    endfor       variables      namevar   strarr wathinside nvars      names of the variables   ndimsvar   lonarr wathinside nvars     number of dim for each variable   dimvar   replicate 1  wathinside ndims  wathinside nvars    dims of each variables   loop over the variable ids to fill namevar  ndimsvar and dimvar   for varid   0  wathinside nvars 1 do begin     res   ncdf_varinq cdfid  varid      namevar varid    res name     namevar varid    strjoin strsplit namevar varid   _ 0 99   EXTRACT   REGEX      ndimsvar varid    res ndims     dimvar 0:res ndims 1  varid    res dim   ENDFOR   we cut dimvar to select only the interessant part   dimvar   dimvar 0:max ndimsvar 1      selection of the data variables which are diffrent from the   dimension variables   we suppose that that data variables are 4D array  with sometime   dimensions equal to 1  they must be different from dimension   variables which have only 1 dimension   datavarid   where ndimsvar eq 4    numberofvar   n_elements datavarid    namevar   namevar datavarid    ndimsvar   ndimsvar datavarid    dimvar   dimvar  datavarid      sectype   strarr numberofvar    the type of section for each variable : xy   xz   yz    linetype   strarr numberofvar    the line of the points : odd  even or odd even   pointtype   strarr numberofvar    the type of variable : scalar  T  or vector  U    for i   0  numberofvar 1 do begin     dimofthevar   dimvar  i      sectype i    typedim dimofthevar 0 typedim dimofthevar 1      xaxisid   dimofthevar where typedim dimofthevar  EQ  x      yaxisid   dimofthevar where typedim dimofthevar  EQ  y      lineandpt   findlineandpointtype sectype i  dimlist xaxisid 0  dimlist yaxisid 0  iodir      linetype i    lineandpt linetype     pointtype i    lineandpt pointtype   endfor                  definition of the widget               base   widget_base column        first base:       droplist to select the type of section      droplist to select the variable      button to select type of line : odd  even or odd even       base1   widget_base base   row   frame    typechoice   sectype uniq sectype  sort sectype    if n_elements typechoice  GT 1 then typechoice   typechoice sortdim typechoice    base11   widget_droplist base1  title    Type of section  value   typechoice  uvalue    name: type choice  uname    type choice    if n_elements typein  NE 0 then BEGIN     selectedtype   strmid typein  0  2      widget_control  base11  set_droplist_select                         0L    where typechoice EQ selectedtype 0    ENDIF ELSE selectedtype   typechoice 0       varchoice   namevar uniq namevar  sort namevar    base12   widget_droplist base1  title    Available data  value   varchoice  uvalue    name: var choice  uname    var choice    if n_elements varnamein  NE 0 THEN BEGIN     selectedname   varnamein     widget_control  base12  set_droplist_select                         0L    where strlowcase varchoice  EQ strlowcase varnamein 0    ENDIF ELSE selectedname   varchoice 0      base13   widget_base base1   row  uname    linechoicebase        base 2: base to select the domain of the odd points     base2   widget_base base   column  uname    basedomainodd   frame        base 3: base to select the domain of the even points     base3   widget_base base   column  uname    basedomaineven   frame        base 4: base to select the domain of the odd even points     base4   widget_base base   column  uname    basedomainodd even   frame        base 5: calendar     base5   widget_base base   row  uname    baset   frame    timename   strlowcase tag_names dimlist wathinside recdim    read the time axis in julina days   time   ncdf_timeget cdfid  timename    update the dimlist structure   dimlist wathinside recdim    time   base51   cw_calendar base5  time  uname    date1  uvalue    name: date1    base52   cw_calendar base5  time  uname    date2  uvalue    name: date2         base 6: base to select the min  max    and others keywords     base6   cw_specifie base   column  uname    specifie  uvalue    name: specifie         base 7: last base with the action buttons     base7   widget_base base   row  uname    finalaction    base71   widget_button base7  value    Plot  uvalue    name: plot    base72   widget_button base7  value    Cancel  uvalue    name: cancel        determination of the selected variable         goodname   0   where strlowcase namevar  EQ strlowcase selectedname    goodtype   0   where sectype EQ selectedtype    selected   inter goodname  goodtype    if selected 0  EQ  1 then BEGIN     widget_control  base   destroy     ncdf_close  cdfid     return  report impossible combinaison : type of section  selectedtype  variable name  selectedname    ENDIF   if n_elements typein  NE 0 then BEGIN     if NOT keyword_set xlimits  then xlimits    1e9  1e9      if NOT keyword_set ylimits  then ylimits    1e9  1e9      if NOT keyword_set zlimits  then zlimits    1e9  1e9      if NOT keyword_set tlimits  then tlimits    1e9  1e9    ENDIF   if n_elements typein  NE 0 AND n_elements selected  NE 1 then BEGIN     if keyword_set oddpt  then selected   inter selected  where linetype EQ  odd      if keyword_set evenpt  then selected   inter selected  where linetype EQ  even      if keyword_set oddevenpt  then selected   inter selected  where linetype EQ  odd even      if selected 0  EQ  1 then BEGIN       widget_control  base   destroy       ncdf_close  cdfid       return  report impossible combinaison : type of section  selectedtype  variable name  selectedname  and line type       endif     if n_elements selected  NE 1 then begin       case selectedtype of          xy :BEGIN   choice on the vertical axis   choice based on the variable which has the most available levels   between the zlimits            if NOT keyword_set zlimits  then begin             print   case not coded              stop           ENDIF           number   lonarr n_elements selected            for i   0  n_elements selected 1 do begin             zdim   dimvar 2  selected i              zaxis   dimlist zdim              nothing   where zaxis GE zlimits 0  AND zaxis LE zlimits 1  count              number i    count           ENDFOR           selected   selected where number EQ max number            if n_elements selected  NE 1 then begin             print   case not coded              stop           endif         END          xz :BEGIN   choice on the latitude axis           if NOT keyword_set ylimits  then begin             print   case not coded              stop           ENDIF           number   lonarr n_elements selected            for i   0  n_elements selected 1 do begin             ydim   dimvar 2  selected i              yaxis   dimlist ydim              nothing   where yaxis GE ylimits 0  AND yaxis LE ylimits 1  count              number i    count           ENDFOR           selected   selected where number EQ max number            if n_elements selected  NE 1 then begin             print   case not coded              stop           endif         END          yz :BEGIN   choice on the longitude axis           if NOT keyword_set xlimits  then begin             print   case not coded              stop           ENDIF           number   lonarr n_elements selected            for i   0  n_elements selected 1 do begin             xdim   dimvar 2  selected i              xaxis   dimlist xdim              nothing   where xaxis GE xlimits 0  AND xaxis LE xlimits 1  count              number i    count           ENDFOR           selected   selected where number EQ max number            if n_elements selected  NE 1 then begin             print   case not coded              stop           endif         END       endcase     endif   ENDIF       definition of the uvalue of the base which allows to share the   variables between programs         top_uvalue   ptrarr 2  18   allocate_heap     top_uvalue 0  0     type choice     top_uvalue 1  0    temporary typechoice     top_uvalue 0  1     var choice     top_uvalue 1  1    temporary varchoice     top_uvalue 0  2     namevar     top_uvalue 1  2    temporary namevar     top_uvalue 0  3     dimvar     top_uvalue 1  3    temporary dimvar     top_uvalue 0  4     sectype     top_uvalue 1  4    temporary sectype     top_uvalue 0  5     linetype     top_uvalue 1  5    temporary linetype     top_uvalue 0  6     pointtype     top_uvalue 1  6    temporary pointtype     top_uvalue 0  7     dimlist     top_uvalue 1  7    temporary dimlist     top_uvalue 0  8     typedim     top_uvalue 1  8    temporary typedim     top_uvalue 0  9     sizedim     top_uvalue 1  9    temporary sizedim     top_uvalue 0  10     cdfid     top_uvalue 1  10    cdfid    top_uvalue 0  11     datavarid     top_uvalue 1  11    datavarid    top_uvalue 0  12     selected     top_uvalue 1  12    selected    top_uvalue 0  13     filename     top_uvalue 1  13    filename    top_uvalue 0  14     xlimits     top_uvalue 1  14    testvar var   xlimits     top_uvalue 0  15     ylimits     top_uvalue 1  15    testvar var   ylimits     top_uvalue 0  16     zlimits     top_uvalue 1  16    testvar var   zlimits     top_uvalue 0  17     tlimits     top_uvalue 1  17    testvar var   tlimits      widget_control  base  set_uvalue   top_uvalue   rh_alldomains  base  selected    if n_params  EQ 0 then BEGIN   we use the widget     widget_control  base   REALIZE     xmanager   read_hope  base   no_block     return    1   ENDIF   get the output   output   createhopestruct top:base    clear the pointer   for i   0  n_elements top_uvalue 1 do ptr_free  top_uvalue i    close the file   ncdf_close  cdfid   return  output end"); 
    217217a[215] = new Array("./ToBeReviewed/HOPE/rh_alldomains.html", "rh_alldomains.pro", "", "       todo seb     PRO rh_alldomains  topid  selected     compile_opt idl2  strictarrsubs       widget_control  topid  get_uvalue top_uvalue    widget_control  topid  update 0      selectedline top_uvalue 1  findline top_uvalue   linetype selected      we get the size of the dimenstion id of this section      dimvar    top_uvalue 1  findline top_uvalue   dimvar     typedim    top_uvalue 1  findline top_uvalue   typedim     dimlist    top_uvalue 1  findline top_uvalue   dimlist     sizedim    top_uvalue 1  findline top_uvalue   sizedim      buttons to select type of line : odd  even or odd even      linechoicebase widget_info topid find_by_uname    linechoicebase     id   widget_info linechoicebase find_by_uname    linechoice     IF id NE 0 THEN widget_control  id   destroy    choice        if  where selectedline EQ  odd 0  NE  1 then choice    choice   odd     if  where selectedline EQ  even 0  NE  1 then choice    choice   even     if  where selectedline EQ  odd even 0  NE  1 then choice    choice   odd even     choice   choice 1:n_elements choice 1     nothing   cw_bgroup linechoicebase choice   row exclusive   return_name  uname    linechoice  uvalue    name: linechoice     widget_control  nothing  set_value   0    sensitive   bytarr 3     sensitive where odd   even   odd even  eq choice 0    1      odd points domain      basedomainodd widget_info topid find_by_uname    basedomainodd     id   widget_info basedomainodd find_by_uname    title     IF id NE 0 THEN widget_control  id   destroy    oddsecchoice   where selectedline EQ  odd     if oddsecchoice 0  NE  1 then BEGIN       oddsecchoice   selected oddsecchoice        nothing widget_label basedomainodd  value    Domain of the odd points  uname    title        IF n_elements oddsecchoice  GT 1 THEN BEGIN          selecteddim   dimvar  oddsecchoice           sorteddim   selecteddim          FOR i   0  n_elements oddsecchoice 1 DO             sorteddim  i    selecteddim sortdim typedim selecteddim  i  i           zdim   sorteddim 2             sizedims   sizedim zdim           sortedzdim   sort sizedims           sizedims   sizedims sortedzdim           oddsecchoice   oddsecchoice sortedzdim           nothing widget_droplist basedomainodd title    number of levels  value   strtrim sizedims  2  uvalue    name: oddsecchoice  uname oddsecchoice        ENDIF        domainpart  top_uvalue  basedomainodd  oddsecchoice 0        widget_control  basedomainodd  set_uvalue   oddsecchoice    ENDIF ELSE BEGIN        nothing widget_label basedomainodd  value       uname    title        domainpart  top_uvalue  basedomainodd   destroy       widget_control  basedomainodd  set_uvalue    1    ENDELSE    widget_control  basedomainodd  sensitive   sensitive 0       even points domain      basedomaineven widget_info topid find_by_uname    basedomaineven     id   widget_info basedomaineven find_by_uname    title     IF id NE 0 THEN widget_control  id   destroy    evensecchoice   where selectedline EQ  even     if evensecchoice 0  NE  1 then BEGIN       evensecchoice   selected evensecchoice        nothing widget_label basedomaineven  value    Domain of the even points  uname    title        IF n_elements evensecchoice  GT 1 THEN BEGIN          selecteddim   dimvar  evensecchoice           sorteddim   selecteddim          FOR i   0  n_elements evensecchoice 1 DO             sorteddim  i    selecteddim sortdim typedim selecteddim  i  i           zdim   sorteddim 2             sizedims   sizedim zdim           sortedzdim   sort sizedims           sizedims   sizedims sortedzdim           evensecchoice   evensecchoice sortedzdim           nothing widget_droplist basedomaineven title    number of levels  value   strtrim sizedims  2  uvalue    name: evensecchoice  uname evensecchoice        ENDIF        domainpart  top_uvalue  basedomaineven  evensecchoice 0        widget_control  basedomaineven  set_uvalue   evensecchoice    ENDIF ELSE BEGIN       domainpart  top_uvalue  basedomaineven   destroy       nothing widget_label basedomaineven  value       uname    title        widget_control  basedomaineven  set_uvalue    1    ENDELSE    widget_control  basedomaineven  sensitive   sensitive 1       odd even points domain      basedomainoddeven widget_info topid find_by_uname    basedomainodd even     id   widget_info basedomainoddeven find_by_uname    title     IF id NE 0 THEN widget_control  id   destroy    oddevensecchoice   where selectedline EQ  odd even     if oddevensecchoice 0  NE  1 then BEGIN       oddevensecchoice   selected oddevensecchoice        nothing widget_label basedomainoddeven  value    Domain of the odd even points  uname    title        IF n_elements oddevensecchoice  GT 1 THEN BEGIN          selecteddim   dimvar  oddevensecchoice           sorteddim   selecteddim          FOR i   0  n_elements oddevensecchoice 1 DO             sorteddim  i    selecteddim sortdim typedim selecteddim  i  i           zdim   sorteddim 2             sizedims   sizedim zdim           sortedzdim   sort sizedims           sizedims   sizedims sortedzdim           oddevensecchoice   oddevensecchoice sortedzdim           nothing widget_droplist basedomainoddeven title    number of levels  value   strtrim sizedims  2  uvalue    name: odd evensecchoice  uname odd evensecchoice        ENDIF        domainpart  top_uvalue  basedomainoddeven  oddevensecchoice 0        widget_control  basedomainoddeven  set_uvalue   oddevensecchoice    ENDIF ELSE BEGIN       domainpart  top_uvalue  basedomainoddeven   destroy       nothing widget_label basedomainoddeven  value       uname    title        widget_control  basedomainoddeven  set_uvalue    1    ENDELSE    widget_control  basedomainoddeven  sensitive   sensitive 2       case  where sensitive EQ 1 0  of       0: top_uvalue 1  findline top_uvalue   selected    oddsecchoice 0        1: top_uvalue 1  findline top_uvalue   selected    evensecchoice 0        2: top_uvalue 1  findline top_uvalue   selected    oddevensecchoice 0     endcase      widget_control  topid  update 1    return end"); 
    218218a[216] = new Array("./ToBeReviewed/HOPE/sortdim.html", "sortdim.pro", "", "       todo seb       function sortdim  dims  inverse inverse       IDL  a x y t z       IDL  b a sortdim a       IDL  print  a      x y t z     IDL  print  b      x y z t     IDL  print  b sortdim a inv       x y t z     IDL  a xytz      IDL  print  sortdim a                 0           1           3           2           compile_opt idl2  strictarrsubs      tosort   dims    if n_elements tosort  eq 1 then       tosort   string reform byte tosort 1 strlen tosort 0     tosort   strrepl tosort strwhere tosort x a     tosort   strrepl tosort strwhere tosort y b     tosort   strrepl tosort strwhere tosort z c     tosort   strrepl tosort strwhere tosort t d     tosort   uniq tosort sort tosort     if keyword_set inverse  then tosort sort tosort     return  tosort  end   "); 
    219219a[217] = new Array("./ToBeReviewed/HOPE/xrh.html", "xrh.pro", "", "       todo seb       procedure to call read_hope in the widget mode PRO xrh  _extra   ex     compile_opt idl2  strictarrsubs      a   read_hope _extra   ex     return end"); 
    220 a[218] = new Array("./ToBeReviewed/IMAGE/animgif.html", "animgif.pro", "", "             file_comments    Build a gif animation      categories    Animated drawings       param NOMFIC  in required     It is the name of the gif file containing the animation             Comment: this file is placed in the directory defined by iodir       uses    common pro      restrictions    We use the Z buffer to go faster                 So  if it failed in animgif  you have to do:                IDL  device   close                IDL  set_plot   x                 IDL  retall      restrictions    If we want to delete the  common                  we have to define manually the picture s size                   variables xsize and ysize  just as iodir       history    Guillaume Roullet  grlod ipsl jussieu fr             Sebastien Masson  smasson lodyc jussieu fr             30 4 1999      version     Id: animgif pro 134 2006 07 07 10:19:08Z navarro             PRO animgif  nomfic     compile_opt idl2  strictarrsubs    common      It recuperates the color palette and put it in red  green  blue       tvlct   rouge vert bleu get      It completes the current palette on 256 colors       red    rouge  replicate 255  256 n_elements rouge      green    vert  replicate 255  256 n_elements rouge      blue    bleu  replicate 255  256 n_elements rouge       It rocks on the z device  allowing to create the picture without display it     thisOS    VERSION OS_FAMILY    thisOS   STRMID thisOS  0  3     thisOS   STRUPCASE thisOS     set_plot   z    size of the picture  in pixel :    xsize   30 min page_size  max   ma key_portrait   ma 1 key_portrait     ysize   30 min page_size  max   ma 1 key_portrait    ma key_portrait     device  set_resolution    xsize  ysize      Beginning of the gif file  Writing of an empty picture        reinitplt    plot   0   0   nodata    write_gif iodir nomfic tvrd red  green  blue   multiple         Beggining of the part we want to change        Loop of picture s creation       calen   TIMEGEN 366  START JULDAY 1 1 2000      debut   where calen EQ 19810105     debut   where calen EQ 19790105     debut   debut 0     if debut EQ  1 then begin       device   close       CASE thisOS of           MAC : SET_PLOT  thisOS           WIN : SET_PLOT  thisOS          ELSE: SET_PLOT   X        ENDCASE       stop    endif     for i   0  73 15 1 do begin     for i   0  3 2 1 do begin     for i   0  73 2 1 do begin       print   Image numero :  strtrim i  2        date   calen debut i        erase  255       plt  nlec sst  date   ATF  19  29  int    5   noerase        plt  nlec sss  date   ATF  label   2   noerase        plt  nlec htoth  date   RE3 nlec hpycn  date   RE3  10  60  int   5   inv   noerase        domdef  290 340 5 15         plt  norme nlec unsurf  date   RE3  nlec vnsurf  date   RE3  0  1 2  int    1   noerase         Writing of the picture in the file  gif          write_gif iodir nomfic tvrd red  green  blue   multiple    ENDFOR      End of the part we want to change        Closing of the file     write_gif iodir nomfic close    Rerock on terminal X mode      device   close    CASE thisOS of        MAC : SET_PLOT  thisOS        WIN : SET_PLOT  thisOS       ELSE: SET_PLOT   X     ENDCASE      return end"); 
    221 a[219] = new Array("./ToBeReviewed/INIT/initncdf.html", "initncdf.pro", "", "             file_comments   Initfile for Netcdf file  define all the grid parameters      categories         param NCFILEIN  in required    A string giving the name of the NetCdf file      keyword INVMASK   To inverse the mask: mask   1 mask      keyword MASKNAME   A string giving the name of the variable in the file    that contains the land sea mask      keyword MISSING_VALUE   To define  or redifine if the attribute is   already existing  the missing values used with USEASMASK   keyword      keyword START1   Index the axis from 1 instead of 0 when using    xyindex and or zindex      keyword 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      keyword XAXISNAME   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             keyword YAXISNAME   A string giving the name of the variable in the file    that contains the  xyz axis     for Y axis  default name must be  y   latitude   nav_lat  or  lat       keyword ZAXISNAME   A string giving the name of the variable in the file    that contains the  xyz axis     for Z axis  default name must be  z   level   lev   depth       keyword 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      keyword ZINDEX   To define the z axis with index instead of using   the values contained in ZAXISNAME     zaxis   keyword_set start1    findgen jpk         keyword _EXTRA   Used to pass your keywords       uses   common pro      restrictions   Change the grid parameters of the common pro      restrictions   the file must contain an x and an y axis   1 ou 2 dimentional array       examples    IDL  initncdf toto nc glam 180 180       history   Sebastien Masson  smasson lodyc jussieu fr                         8 May 2002      version    Id            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"); 
     220a[218] = new Array("./ToBeReviewed/IMAGE/animgif.html", "animgif.pro", "", "             file_comments    Build a gif animation      categories    Animated drawings       param NOMFIC  in required     It is the name of the gif file containing the animation             Comment: this file is placed in the directory defined by iodir       uses    common pro      restrictions    We use the Z buffer to go faster                 So  if it failed in animgif  you have to do:                IDL  device   close                IDL  set_plot   x                 IDL  retall      restrictions    If we want to delete the    common                  we have to define manually the picture s size                   variables xsize and ysize  just as iodir       history    Guillaume Roullet  grlod ipsl jussieu fr             Sebastien Masson  smasson lodyc jussieu fr             30 4 1999      version     Id: animgif pro 142 2006 07 21 12:47:49Z navarro             PRO animgif  nomfic     compile_opt idl2  strictarrsubs    common      It recuperates the color palette and put it in red  green  blue       tvlct   rouge vert bleu get      It completes the current palette on 256 colors       red    rouge  replicate 255  256 n_elements rouge      green    vert  replicate 255  256 n_elements rouge      blue    bleu  replicate 255  256 n_elements rouge       It rocks on the z device  allowing to create the picture without display it     thisOS    VERSION OS_FAMILY    thisOS   STRMID thisOS  0  3     thisOS   STRUPCASE thisOS     set_plot   z    size of the picture  in pixel :    xsize   30 min page_size  max   ma key_portrait   ma 1 key_portrait     ysize   30 min page_size  max   ma 1 key_portrait    ma key_portrait     device  set_resolution    xsize  ysize      Beginning of the gif file  Writing of an empty picture        reinitplt    plot   0   0   nodata    write_gif iodir nomfic tvrd red  green  blue   multiple         Beggining of the part we want to change        Loop of picture s creation       calen   TIMEGEN 366  START JULDAY 1 1 2000      debut   where calen EQ 19810105     debut   where calen EQ 19790105     debut   debut 0     if debut EQ  1 then begin       device   close       CASE thisOS of           MAC : SET_PLOT  thisOS           WIN : SET_PLOT  thisOS          ELSE: SET_PLOT   X        ENDCASE       stop    endif     for i   0  73 15 1 do begin     for i   0  3 2 1 do begin     for i   0  73 2 1 do begin       print   Image numero :  strtrim i  2        date   calen debut i        erase  255       plt  nlec sst  date   ATF  19  29  int    5   noerase        plt  nlec sss  date   ATF  label   2   noerase        plt  nlec htoth  date   RE3 nlec hpycn  date   RE3  10  60  int   5   inv   noerase        domdef  290 340 5 15         plt  norme nlec unsurf  date   RE3  nlec vnsurf  date   RE3  0  1 2  int    1   noerase         Writing of the picture in the file  gif          write_gif iodir nomfic tvrd red  green  blue   multiple    ENDFOR      End of the part we want to change        Closing of the file     write_gif iodir nomfic close    Rerock on terminal X mode      device   close    CASE thisOS of        MAC : SET_PLOT  thisOS        WIN : SET_PLOT  thisOS       ELSE: SET_PLOT   X     ENDCASE      return end"); 
     221a[219] = new Array("./ToBeReviewed/INIT/initncdf.html", "initncdf.pro", "", "             file_comments   Initfile for Netcdf file  define all the grid parameters      categories         param NCFILEIN  in required    A string giving the name of the NetCdf file      keyword INVMASK   To inverse the mask: mask   1 mask      keyword MASKNAME   A string giving the name of the variable in the file    that contains the land sea mask      keyword MISSING_VALUE   To define  or redifine if the attribute is   already existing  the missing values used with USEASMASK   keyword      keyword START1   Index the axis from 1 instead of 0 when using    xyindex and or zindex      keyword 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      keyword XAXISNAME   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             keyword YAXISNAME   A string giving the name of the variable in the file    that contains the  xyz axis     for Y axis  default name must be  y   latitude   nav_lat  or  lat       keyword ZAXISNAME   A string giving the name of the variable in the file    that contains the  xyz axis     for Z axis  default name must be  z   level   lev   depth       keyword 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      keyword ZINDEX   To define the z axis with index instead of using   the values contained in ZAXISNAME     zaxis   keyword_set start1    findgen jpk         keyword _EXTRA   Used to pass your keywords       uses   common pro      restrictions   Change the grid parameters of the common pro      restrictions   the file must contain an x and an y axis   1 ou 2 dimentional array       examples    IDL  initncdf toto nc glam 180 180       history   Sebastien Masson  smasson lodyc jussieu fr                         8 May 2002      version    Id: initncdf pro 142 2006 07 21 12:47:49Z navarro             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"); 
    222222a[220] = new Array("./ToBeReviewed/INIT/initncdfxxx.html", "initncdfxxx.pro", "", ""); 
    223223a[221] = new Array("./ToBeReviewed/INIT/initorca05.html", "initorca05.pro", "", ""); 
     
    237237a[235] = new Array("./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits.html", "scan_grib_nbits.pro", "", "FUNCTION scan_grib_nbits  num  recstart     compile_opt idl2  strictarrsubs        nrec    n_elements recstart    nbits   bytarr nrec      FOR i   0L  nrec 1 DO BEGIN     offset   recstart i 8     a   assoc num  bytarr 1   nozero  offset 1      sizepds   bit2int binary a 1  binary a 2  binary a 3      flag   binary a 8      gdsnotomitted   flag 0      bmsnotomitted   flag 1      ddd    bit2int binary a 27  binary a 28   checkneg        offset   offset sizepds       IF gdsnotomitted THEN BEGIN       a   assoc num  bytarr 1   nozero  offset 1        sizedds   bit2int binary a 1  binary a 2  binary a 3        offset   offset sizedds     ENDIF       IF bmsnotomitted THEN BEGIN       a   assoc num  bytarr 1   nozero  offset 1        sizebms   bit2int binary a 1  binary a 2  binary a 3        offset   offset sizebms     ENDIF      a   assoc num  bytarr 1   nozero  offset 1      nbits i    a 11     ENDFOR     RETURN  nbits END"); 
    238238a[236] = new Array("./ToBeReviewed/LECTURE/GRIB/scan_grib_recstart.html", "scan_grib_recstart.pro", "", "FUNCTION scan_grib_recstart  num     compile_opt idl2  strictarrsubs      infofile   fstat num    minimum size of one record   minisize   8L 28L 4L 4L   maxoffset   infofile size minisize     start   0L   offset   0L   previousrecsize   0L    WHILE offset LT maxoffset DO BEGIN   Every record must begin with  GRIB    However  their is no rule to define the space between 2 records     1  we try space   previousrecsize MOD 8  because for echam outputs    the total size of the records is rounded to modulo 8     addoff   8    previousrecsize MOD 8      offset   offset addoff     IF offset GE maxoffset THEN GOTO  out     a   assoc num  bytarr 4   nozero  offset      typefile   string a 0      IF typefile NE  GRIB  THEN offset   offset addoff    2  we try space   previousrecsize MOD 120  because for ecmwf   outputs  the total size of the records is rounded to modulo 120     addoff   120    previousrecsize MOD 120      IF typefile NE  GRIB  THEN BEGIN       offset   offset addoff       IF offset GE maxoffset THEN GOTO  out       a   assoc num  bytarr 4   nozero  offset        typefile   string a 0        IF typefile NE  GRIB  THEN offset   offset addoff     ENDIF    3  we try space   0     IF typefile NE  GRIB  THEN BEGIN       a   assoc num  bytarr 4   nozero  offset        typefile   string a 0      ENDIF    4  we try any value for space     IF typefile NE  GRIB  THEN BEGIN       REPEAT BEGIN         CASE 1 OF           array_equal a 0 3    byte G    :offset   offset 3           array_equal a 0 2:3  byte GR   :offset   offset 2           array_equal a 0 1:3  byte GRI :offset   offset 1           else:offset   offset 4         ENDCASE         IF offset GE maxoffset THEN GOTO  out         a   assoc num  bytarr 4   nozero  offset          typefile   string a 0        ENDREP UNTIL typefile EQ  GRIB      ENDIF       start    start  offset            a   assoc num  bytarr 1   nozero  offset 4      recsize   bit2int binary a 0  binary a 1  binary a 2      offset   offset recsize     previousrecsize   recsize     ENDWHILE   out:     RETURN  start 1:n_elements start 1   END"); 
    239 a[237] = new Array("./ToBeReviewed/LECTURE/binary.html", "binary.pro", "", "     file_comments   Returns the binary representation of a number of any numerical type        param NUMBER  in required    scalar or array of numbers  any numerical type        Returns   Byte array with binary representation of numbers        Examples     Binary representation of 11b:       IDL  print  binary 11b        0 0 0 0 1 0 1 1     Binary representation of pi  x86: Little endian IEEE representation :       IDL  print  format z9 8 5x 4 1x 8i1  long pi 0  binary pi         40490fdb      01000000 01001001 00001111 11011011  x86 Linux         0fdb4149      00001111 11011011 01000001 01001001  Alpha OpenVMS        IDL  print  format 8 1x 8i0  binary dpi         01000000 00001001 00100001 11111011 01010100 01000100 00101101 00011000     Some first tests before type double was added:       print  format 2a6 4x 2z9 8 4x 8z3 2             version arch   version os  long dpi 0 2  byte dpi 0 8          x86 linux     54442d18 400921fb     18 2d 44 54 fb 21 09 40       sparc sunos     400921fb 54442d18     40 09 21 fb 54 44 2d 18       alpha   vms     0fda4149 68c0a221     49 41 da 0f 21 a2 c0 68        Beginning with IDL 5 1  Alpha VMS uses IEEE representation as well        history:      19 Dec 1997  Originally a news posting by David Fanning                           Re: bits from bytes       20 Dec 1997   Complete  rewrite: eliminate loops       22 Dec 1997  Bit shift instead of exponentiation  return byte        array  handle input arrays         Think about double and complex types       22 Sep 1998  Complete rewrite: reduce every numerical type to        single bytes  Check that big and little endian machines        return exactly the same results  if IEEE       7 May 2003     Added newish data types  unsigned and long64   BT      version    Id      function binary  number     compile_opt idl2  strictarrsubs     s   size number    type   s s 0    1    n_no   s s 0    2    Numerical types:  will have to be completed if IDL adds double long      1: byte              1 byte unsigned integer    2: integer           2 byte   signed integer    3: long              4 byte   signed integer    4: floating point    4 byte  single precision    5: double precision  8 byte  double precision    6: complex         2x4 byte  single precision    9: double complex  2x8 byte  double precision    12: uInt       2 byte  unsigned integer    13: uLong      4 byte  unsigned integer    14: Long64        8 byte  signed integer    15: uLong64       8 byte  unsigned integer    Non numerical types:   0: undefined  7: string  8: structure  10: pointer  11: object reference    nbyt    0  1  2  4  4  8  8  0  0  16  0  0    number of bytes per type   code    0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15    nbyt    0  1  2  4  4  8  8  0  0  16  0  0   2   4   8   8    ntyp   nbyt type    if ntyp eq 0 then message   Invalid argument  must be numerical type    bits    128  64  32  16   8   4   2   1      ishft 1b  7 indgen 8    For correct array handling and byte comparison   number  and  bits  require   same dimensions   numvalue and bitvalue   bitvalue    bits  intarr ntyp    intarr n_no    little_endian    byte 1  0  1 0    In case of complex type and little endian machine  swap the two float values   before the complete second dimension is reversed at returning    if  type eq 6 or type eq 9  and little_endian then     type complex     numvalue   reform byte number  0  1  ntyp 2  2  n_no                         intarr 8     1 0    8  ntyp  n_no      else numvalue    byte number  0  1  ntyp  n_no intarr 8        On little endian machines  the second dimension of the return value must   be reversed    if little_endian AND type NE 1 then       return  reverse numvalue and bitvalue  ne 0  2  else       return           numvalue and bitvalue  ne 0 end"); 
     239a[237] = new Array("./ToBeReviewed/LECTURE/binary.html", "binary.pro", "", "     file_comments   Returns the binary representation of a number of any numerical type        param NUMBER  in required    scalar or array of numbers  any numerical type        Returns   Byte array with binary representation of numbers        Examples     Binary representation of 11b:       IDL  print  binary 11b        0 0 0 0 1 0 1 1     Binary representation of pi  x86: Little endian IEEE representation :       IDL  print  format z9 8 5x 4 1x 8i1  long pi 0  binary pi         40490fdb      01000000 01001001 00001111 11011011  x86 Linux         0fdb4149      00001111 11011011 01000001 01001001  Alpha OpenVMS        IDL  print  format 8 1x 8i0  binary dpi         01000000 00001001 00100001 11111011 01010100 01000100 00101101 00011000     Some first tests before type double was added:       print  format 2a6 4x 2z9 8 4x 8z3 2             version arch   version os  long dpi 0 2  byte dpi 0 8          x86 linux     54442d18 400921fb     18 2d 44 54 fb 21 09 40       sparc sunos     400921fb 54442d18     40 09 21 fb 54 44 2d 18       alpha   vms     0fda4149 68c0a221     49 41 da 0f 21 a2 c0 68        Beginning with IDL 5 1  Alpha VMS uses IEEE representation as well        history:      19 Dec 1997  Originally a news posting by David Fanning                           Re: bits from bytes       20 Dec 1997   Complete  rewrite: eliminate loops       22 Dec 1997  Bit shift instead of exponentiation  return byte        array  handle input arrays         Think about double and complex types       22 Sep 1998  Complete rewrite: reduce every numerical type to        single bytes  Check that big and little endian machines        return exactly the same results  if IEEE       7 May 2003     Added newish data types  unsigned and long64   BT      version    Id: binary pro 142 2006 07 21 12:47:49Z navarro       function binary  number     compile_opt idl2  strictarrsubs     s   size number    type   s s 0    1    n_no   s s 0    2    Numerical types:  will have to be completed if IDL adds double long      1: byte              1 byte unsigned integer    2: integer           2 byte   signed integer    3: long              4 byte   signed integer    4: floating point    4 byte  single precision    5: double precision  8 byte  double precision    6: complex         2x4 byte  single precision    9: double complex  2x8 byte  double precision    12: uInt       2 byte  unsigned integer    13: uLong      4 byte  unsigned integer    14: Long64        8 byte  signed integer    15: uLong64       8 byte  unsigned integer    Non numerical types:   0: undefined  7: string  8: structure  10: pointer  11: object reference    nbyt    0  1  2  4  4  8  8  0  0  16  0  0    number of bytes per type   code    0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15    nbyt    0  1  2  4  4  8  8  0  0  16  0  0   2   4   8   8    ntyp   nbyt type    if ntyp eq 0 then message   Invalid argument  must be numerical type    bits    128  64  32  16   8   4   2   1      ishft 1b  7 indgen 8    For correct array handling and byte comparison   number  and  bits  require   same dimensions   numvalue and bitvalue   bitvalue    bits  intarr ntyp    intarr n_no    little_endian    byte 1  0  1 0    In case of complex type and little endian machine  swap the two float values   before the complete second dimension is reversed at returning    if  type eq 6 or type eq 9  and little_endian then     type complex     numvalue   reform byte number  0  1  ntyp 2  2  n_no                         intarr 8     1 0    8  ntyp  n_no      else numvalue    byte number  0  1  ntyp  n_no intarr 8        On little endian machines  the second dimension of the return value must   be reversed    if little_endian AND type NE 1 then       return  reverse numvalue and bitvalue  ne 0  2  else       return           numvalue and bitvalue  ne 0 end"); 
    240240a[238] = new Array("./ToBeReviewed/LECTURE/changeread.html", "changeread.pro", "", "       todo seb     FUNCTION changeread  newread       compile_opt idl2  strictarrsubs    common       newread must be two structures      if size newread   type  NE 8 then return  0     we compare the two structure which caracterise the read        case 1 of       ccreadparameters funclec_name NE newread funclec_name:       ccreadparameters jpidta NE newread jpidta:       ccreadparameters jpjdta NE newread jpjdta:       ccreadparameters jpkdta NE newread jpkdta:       ccreadparameters ixmindta NE newread ixmindta:       ccreadparameters ixmaxdta NE newread ixmaxdta:       ccreadparameters iymindta NE newread iymindta:       ccreadparameters iymaxdta NE newread iymaxdta:       ccreadparameters izmindta NE newread izmindta:       ccreadparameters izmaxdta NE newread izmaxdta:       ELSE:return  0    endcase     update the common paramaters      ccreadparameters   newread    jpidta   newread jpidta    jpjdta   newread jpjdta    jpkdta   newread jpkdta    ixmindta   newread ixmindta    ixmaxdta   newread ixmaxdta    iymindta   newread iymindta    iymaxdta   newread iymaxdta    izmindta   newread izmindta    izmaxdta   newread izmaxdta      return  1 end"); 
    241 a[239] = new Array("./ToBeReviewed/LECTURE/inverse_binary.html", "inverse_binary.pro", "", "       file_comments   Inverse function of the binary pro function   given a   input array of 0 1  return its corresponding byte integer long   representation      categories      param BINNUMB  in required    Must be a binary type array containing only 0 and 1    According to binary pro outputs  binnum array must have the   following dimensions values:  8  t  d1  d2    t gives the output type: t   1   byte                               t   2   integer                               t   4   long           d1  d2  are the output dimensions        returns    A byte integer long array with  d1  d2  dimensions      restrictions   The binary number can represent only byte integer long      examples         IDL  a indgen 5        IDL  b binary a        IDL  help  b       B               BYTE        Array 8  2  5        IDL  print  b          0   0   0   0   0   0   0   0          0   0   0   0   0   0   0   0                 0   0   0   0   0   0   0   0          0   0   0   0   0   0   0   1                 0   0   0   0   0   0   0   0          0   0   0   0   0   0   1   0                 0   0   0   0   0   0   0   0          0   0   0   0   0   0   1   1                 0   0   0   0   0   0   0   0          0   0   0   0   0   1   0   0       IDL  help  inverse_binary b            INT         Array 5        IDL  print  inverse_binary b               0       1       2       3       4      history        Sebastien Masson  smasson jamstec go jp         July 2004      version    Id          FUNCTION inverse_binary  binnumb       compile_opt idl2  strictarrsubs     s   size binnumb   dimensions    IF n_elements s  EQ 1 THEN numbofbit   8 ELSE numbofbit   8 s 1    nvalues   n_elements binnumb numbofbit   bn   reform long binnumb  numbofbit  nvalues      CASE numbofbit OF     8:res   byte total temporary bn 2b reverse indgen numbofbit replicate 1b  nvalues  1  1      16:res   fix total temporary bn 2 reverse indgen numbofbit replicate 1  nvalues  1  1   double      32:res   long total temporary bn 2L reverse indgen numbofbit replicate 1L  nvalues  1  1   double    ENDCASE     CASE n_elements s  OF     1:res   res 0      2:res   res 0      3:     ELSE:res   reform res  s 2:n_elements s 1   over    ENDCASE     return  res end"); 
    242 a[240] = new Array("./ToBeReviewed/LECTURE/litchamp.html", "litchamp.pro", "", "             file_comments   Allows to read an array or a sructure cooresponding to a field    If we have in input:       an array  litchamp send back the array       a structure  litchamp send back the first element of the structure      which must be the field in an array      Litchamp profit of this to look other elements of the structure et     update if needed global variables which refer to the field:     vargrid  varname  varunit  vardate  varexp   valmask et time       categories   graphic      param STRUCT  in required    It is either an array or a structure     If STRUCT is a structure  it must follow following rules:           the first element is the array containing the field            other elements are strings containing informations on the field exept          for the one about the date  This one can be either a string to designate          a particular date  ex:  August 1999  or a vector of julian days  of IDL           corresponding  to the calendar to be associated with the field if it is a          temporal series            the order of elements  exept the first  has not any importance             the other elements  exept the first  are optional            they are recognize by the first letter of their names:               g  to update vargrid               u  to update varunit               e  to update varexp               d  to update vardate               n  to update varname               m  to update valmask      keyword GRID   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  g  if it exist    and   if it does not       keyword UNIT   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  u  if it exist    and   if it does not       keyword EXP   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  u  if it exist    and   if it does not       keyword DATE   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  d  if it exist    and   if it does not       keyword NAME   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  n  if it exist    and   if it does not       keyword LEVEL   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  l  if it exist    and  1 if it does not          keyword MASK   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  m  if it exist    and  1 if it does not       returns   It is the array containing the field       uses   common pro      restrictions   Update if needed global variables vargrid    varname  varunit  vardate  varexp  valmask and time       examples             IDL  print  vargrid    varname    varunit    vardate    varexp           T        0         IDL  help  litchamp a:indgen 5  u: C  name: toto              INT         Array 5       IDL  print  vargrid    varname    varunit    vardate    varexp            T  toto  C  0         IDL  help  litchamp a:indgen 5  da: 1999              INT         Array 5       IDL  print  vargrid    varname    varunit    vardate    varexp           T  toto  C  1999            history   Sebastien Masson  smasson lodyc jussieu fr                          28 5 1999      version    Id            FUNCTION litchamp  struct  GRID   grid  NAME   name  UNIT   unit  EXP   exp  DATE   date                        LEVEL   level  MASK   mask     compile_opt idl2  strictarrsubs    common     if size struct   type  ne 8 then BEGIN   so contour is not a structure        if keyword_set grid  then return          if keyword_set name  then return          if keyword_set unit  then return          if keyword_set exp   then return          if keyword_set date   then return          if keyword_set level   then return   1       if keyword_set mask   then return   1       return   struct               ENDIF        IF n_tags struct  EQ 1 then BEGIN   The structure has only one element        if keyword_set grid  then return          if keyword_set name  then return          if keyword_set unit  then return          if keyword_set exp   then return          if keyword_set date   then return          if keyword_set level   then return   1       if keyword_set mask   then return   1       return   struct 0     ENDIF        nomelements   tag_names struct     for i   1  n_tags struct 1 do begin       case strlowcase strmid nomelements i  0  1  of           g :BEGIN             if keyword_set grid  then return  strupcase struct i              vargrid   strupcase struct i           END           n :BEGIN             if keyword_set name  then return  struct i              varname   struct i           END           u :BEGIN             if keyword_set unit  then return  struct i              varunit   struct i           END           e :BEGIN             if keyword_set exp  then return  struct i              varexp   struct i           END           m :BEGIN             if keyword_set mask  then return  struct i              valmask   struct i           END           d :BEGIN              if size struct i type  EQ 7 THEN BEGIN                 vardate   struct i              ENDIF ELSE BEGIN                time   struct i                 jpt   n_elements time                 if jpt EQ 1 then vardate    strtrim vairdate struct i 0  2                 ELSE vardate    strtrim vairdate struct i 0  2                         strtrim vairdate struct i jpt 1  2               ENDELSE             if keyword_set date  then return  vardate          END           h :BEGIN             computehopegrid   struct i xaxis   struct i yaxis                   struct i zaxis   struct i linetype                  FIRSTS    struct i firsts  LASTS    struct i lasts                  FORTHEMASK   struct 0  pttype    struct i pttype          END          ELSE:BEGIN              ras   report Le nom  nomelements i  ne correspont a aucun element reconnu de la structure  cf  IDL  xhelp   litchamp           end       endcase    endfor      if keyword_set grid  then return       if keyword_set name  then return       if keyword_set unit  then return       if keyword_set exp   then return       if keyword_set date   then return       if keyword_set level   then return   1    if keyword_set mask   then return   1     return   struct 0  end"); 
    243 a[241] = new Array("./ToBeReviewed/LECTURE/ncdf_lec.html", "ncdf_lec.pro", "", "             file_comments   Give informations on a file net cdf and allows to recuperate    variables which are write in       categories   Reading      param NOM  in required    Name of a file net cdf situated in the directory stipulated by iodir       keyword ATT    global  or at the name of a variable  Allows to see all attributes    joined at a variable      keyword DIM   Give the list of dimensions       keyword VAR         1   var: Gove the list of dimensions          2  var nom de variable : in this case the function send back the variable       keyword IODIR   String containing the directory containing the file to be read      keyword _EXTRA   Allows to pass keywords defined by IDL to functions NETCDF   particularly OFFSET    and COUNT in ncdf_varget       returns    1  exept if var nom de variable  then the function send back the variable       restrictions   Variables s names of the program are similar to these used by the IDL manual     scientific data formats       history   Sebastien Masson  smasson lodyc jussieu fr                          4 1 98      version    Id        function ncdf_lec nom ATT att DIM dim VAR var  IODIR   iodir  _extra   ex     compile_opt idl2  strictarrsubs      res    1      if NOT keyword_set IODIR  then iodir        if not keyword_set att  or keyword_set dim  or keyword_set var  then BEGIN       att   1       dim   1       var   1        commande ncdump  c  iodir nom        spawn commande        goto fini    endif     opening of the file name       cdfid ncdf_open iodir nom      Wht does the file contain       wathinside ncdf_inquire cdfid      print in the file   iodir nom  there are:     if keyword_set dim  then begin        print nombre de dimensions:  strtrim wathinside ndims 1        print numero de la dimension dont la valeur est infini:  strtrim wathinside recdim 1     endif    if keyword_set var  then       if size var   type  NE 7 then print nombre de variables  : strtrim wathinside nvars 1     if keyword_set att  then begin       if strlowcase att  ne  global  then goto nonglobal       print nombre de attributs globaux : strtrim wathinside ngatts 1     endif     Global attributes      if keyword_set att  then begin       print          print ATTRIBUTS GLOBAUX        for attiq 0 wathinside ngatts 1 do begin          name ncdf_attname cdfid attiq global   attribute s name          ncdf_attget cdfid name value global  attribute s value          print name :  string value        endfor    endif nonglobal:     Display of different dimensions       if keyword_set dim  then begin        print          print DIMENSIONS     endif    nomdim    strarr wathinside ndims     tailledim lonarr wathinside ndims     for dimiq 0 wathinside ndims 1 do begin       ncdf_diminq cdfid dimiq name value   dimension s name and value       nomdim dimiq name       tailledim dimiq value       if keyword_set dim  then begin           print dimension numero  strtrim dimiq 1  nom:  nomdim dimiq                valeur:    strtrim tailledim dimiq 1        endif    endfor     Display of different variables         if keyword_set att  or keyword_set var  then begin    var s value  string or 1    help  var  output   nature    if  strpos nature   STRING 0  NE  1 then nature    string  ELSE nature    1    If we just have to read the variable     if nature EQ  string  then begin       ncdf_varget  cdfid  var  res  _extra   ex       GOTO  sortie    ENDIF    If it is to have pieces of information     if not keyword_set att  then att rien        print          for varid 0 wathinside nvars 1 do begin          varcontent ncdf_varinq cdfid varid    What does variable contain           if strlowcase att  eq strlowcase varcontent name  or keyword_set var              then begin             print variable numero:  strtrim varid 1  nom: varcontent name                  type:   varcontent datatype  dimensions: nomdim varcontent dim              if strlowcase att  eq strlowcase varcontent name  then begin                for attiq 0 varcontent natts 1 do begin                   name ncdf_attname cdfid varid attiq                    ncdf_attget cdfid varid name value                   print       strtrim attiq   name :  strtrim string value 1                 endfor                goto  sortie             endif          endif       endfor    endif   sortie:    ncdf_close cdfid     fini:     return  res end"); 
    244 a[242] = new Array("./ToBeReviewed/LECTURE/read_ftp.html", "read_ftp.pro", "", " pro ftp_post  u  cmd  res  out out  count count   compile_opt idl2   if  cmd ne   then begin     printf  u  cmd  format a      comment out the following line to disable debug info     print   cmd   endif   if  size out type  eq 0  then out 2      catch  err   if  err ne 0  then return   line    count 0   while arg_present res  do begin     readf  u  line     if count eq 0 then res line else res res line      count count 1     comment out the following line to disable debug info     print    READ_FTP   ftp: ftp rsinc com pub gzip README GZIP  DATA data     IDL  help  data            DATA            BYTE        Array 2134      IDL  print  string data                README file: Research Systems Anonymous FTP site  ftp rsinc com                      pub directory                     gzip directory                 2  Retrieve some files from podaac jpl nasa gov and store the files      in the current working directory:        IDL  files   string lindgen 10 50 format MGB370 3 3d gz       IDL  READ_FTP   podaac jpl nasa gov  files          IDL         pub sea_surface_height topex_poseidon mgdrb data MGB_370   FILE      IDL  spawn dir MGB log_output       Volume in drive C is Local Disk       Volume Serial Number is 34CE 24DF         Directory of C: test test0307        07 28 2003  11:58a             362 167 MGB370 050 gz      07 28 2003  11:58a             333 005 MGB370 051 gz      07 28 2003  11:58a             310 287 MGB370 052 gz      07 28 2003  11:58a             358 771 MGB370 053 gz      07 28 2003  11:59a             387 282 MGB370 054 gz      07 28 2003  11:59a             361 633 MGB370 055 gz      07 28 2003  11:59a             383 075 MGB370 056 gz      07 28 2003  11:59a             365 844 MGB370 057 gz      07 28 2003  11:59a             383 918 MGB370 058 gz      07 28 2003  12:00p             372 712 MGB370 059 gz                    10 File s       3 618 694 bytes      These compressed files can cosequently be opened with OPENR and the      COMPRESSED keyword       history      version    Id       todo seb: que fait on de  syntax  au debut du header       pro read_ftp  site  files  dir  port  data data  file file  user user                  pass pass  ptr ptr   compile_opt idl2   if n_elements port  eq 0 then port ftp    if n_elements files  eq 0 then begin     if strcmp site ftp: 6  then host strmid site 6  else host site     pos strpos host      dir strmid host pos      host strmid host 0 pos      pos strpos dir reverse_search      files strmid dir pos 1      dir strmid dir 0 pos    endif else host site   if  size user type  eq 0  then user anonymous    if  size pass type  eq 0  then pass test test com                                      socket  u  host  port  connect_timeout 5  read_timeout 5   get_lun   ftp_post  u    res   ftp_post  u   USER  user  res  out 3      ftp_post  u   PASS  pass  res   ftp_post  u   TYPE I  res   if  size dir type  ne 0  then ftp_post  u   CWD  dir  res   if keyword_set file  or arg_present data  then begin     bufsize 512     buffer bytarr bufsize      n n_elements files      if arg_present data  then dat ptrarr n      for i 0  n 1 do begin       ftp_post  u   SIZE  files i  res  out 213         sz long64 strmid res n_elements res 1 4        if arg_present data  then dat i ptr_new bytarr sz        ftp_post  u   PASV  res       ftp_parse_pasv  res  host  port       ftp_post  u   RETR  files i  res  out 1          socket  v  host  port  connect_timeout 5  read_timeout 5              get_lun   rawio       tc 0ll       if keyword_set file  then openw w files i get_lun       while  tc lt sz  do begin         if  sz tc lt bufsize  then begin           bufsize sz tc           buffer bytarr bufsize          endif         readu  v  buffer  transfer_count dtc         if arg_present data  then               dat i tc dtc eq bufsize buffer:buffer 0:dtc 1          if keyword_set file  then              writeu w dtc eq bufsize buffer:buffer 0:dtc 1          tc tc dtc       endwhile       free_lun  v       if keyword_set file  then free_lun  w       ftp_post  u    res     endfor     if arg_present data  then begin        if  n gt 1 or keyword_set ptr  then data dat          else data temporary dat 0       endif   endif   ftp_post  u   QUIT  res   free_lun  u end"); 
     241a[239] = new Array("./ToBeReviewed/LECTURE/inverse_binary.html", "inverse_binary.pro", "", "       file_comments   Inverse function of the binary pro function   given a   input array of 0 1  return its corresponding byte integer long   representation      categories      param BINNUMB  in required    Must be a binary type array containing only 0 and 1    According to binary pro outputs  binnum array must have the   following dimensions values:  8  t  d1  d2    t gives the output type: t   1   byte                               t   2   integer                               t   4   long           d1  d2  are the output dimensions        returns    A byte integer long array with  d1  d2  dimensions      restrictions   The binary number can represent only byte integer long      examples         IDL  a indgen 5        IDL  b binary a        IDL  help  b       B               BYTE        Array 8  2  5        IDL  print  b          0   0   0   0   0   0   0   0          0   0   0   0   0   0   0   0                 0   0   0   0   0   0   0   0          0   0   0   0   0   0   0   1                 0   0   0   0   0   0   0   0          0   0   0   0   0   0   1   0                 0   0   0   0   0   0   0   0          0   0   0   0   0   0   1   1                 0   0   0   0   0   0   0   0          0   0   0   0   0   1   0   0       IDL  help  inverse_binary b            INT         Array 5        IDL  print  inverse_binary b               0       1       2       3       4      history        Sebastien Masson  smasson jamstec go jp         July 2004      version    Id: inverse_binary pro 142 2006 07 21 12:47:49Z navarro           FUNCTION inverse_binary  binnumb       compile_opt idl2  strictarrsubs     s   size binnumb   dimensions    IF n_elements s  EQ 1 THEN numbofbit   8 ELSE numbofbit   8 s 1    nvalues   n_elements binnumb numbofbit   bn   reform long binnumb  numbofbit  nvalues      CASE numbofbit OF     8:res   byte total temporary bn 2b reverse indgen numbofbit replicate 1b  nvalues  1  1      16:res   fix total temporary bn 2 reverse indgen numbofbit replicate 1  nvalues  1  1   double      32:res   long total temporary bn 2L reverse indgen numbofbit replicate 1L  nvalues  1  1   double    ENDCASE     CASE n_elements s  OF     1:res   res 0      2:res   res 0      3:     ELSE:res   reform res  s 2:n_elements s 1   over    ENDCASE     return  res end"); 
     242a[240] = new Array("./ToBeReviewed/LECTURE/litchamp.html", "litchamp.pro", "", "             file_comments   Allows to read an array or a sructure cooresponding to a field    If we have in input:       an array  litchamp send back the array       a structure  litchamp send back the first element of the structure      which must be the field in an array      Litchamp profit of this to look other elements of the structure et     update if needed global variables which refer to the field:     vargrid  varname  varunit  vardate  varexp   valmask et time       categories   graphic      param STRUCT  in required    It is either an array or a structure     If STRUCT is a structure  it must follow following rules:           the first element is the array containing the field            other elements are strings containing informations on the field exept          for the one about the date  This one can be either a string to designate          a particular date  ex:  August 1999  or a vector of julian days  of IDL           corresponding  to the calendar to be associated with the field if it is a          temporal series            the order of elements  exept the first  has not any importance             the other elements  exept the first  are optional            they are recognize by the first letter of their names:               g  to update vargrid               u  to update varunit               e  to update varexp               d  to update vardate               n  to update varname               m  to update valmask      keyword GRID   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  g  if it exist    and   if it does not       keyword UNIT   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  u  if it exist    and   if it does not       keyword EXP   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  u  if it exist    and   if it does not       keyword DATE   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  d  if it exist    and   if it does not       keyword NAME   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  n  if it exist    and   if it does not       keyword LEVEL   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  l  if it exist    and  1 if it does not          keyword MASK   We activate this keyword if we want litchamp to send back the variable    associated with the element of the structure starting by  m  if it exist    and  1 if it does not       returns   It is the array containing the field       uses   common pro      restrictions   Update if needed global variables vargrid    varname  varunit  vardate  varexp  valmask and time       examples             IDL  print  vargrid    varname    varunit    vardate    varexp           T        0         IDL  help  litchamp a:indgen 5  u: C  name: toto              INT         Array 5       IDL  print  vargrid    varname    varunit    vardate    varexp            T  toto  C  0         IDL  help  litchamp a:indgen 5  da: 1999              INT         Array 5       IDL  print  vargrid    varname    varunit    vardate    varexp           T  toto  C  1999            history   Sebastien Masson  smasson lodyc jussieu fr                          28 5 1999      version    Id: litchamp pro 142 2006 07 21 12:47:49Z navarro             FUNCTION litchamp  struct  GRID   grid  NAME   name  UNIT   unit  EXP   exp  DATE   date                        LEVEL   level  MASK   mask     compile_opt idl2  strictarrsubs    common     if size struct   type  ne 8 then BEGIN   so contour is not a structure        if keyword_set grid  then return          if keyword_set name  then return          if keyword_set unit  then return          if keyword_set exp   then return          if keyword_set date   then return          if keyword_set level   then return   1       if keyword_set mask   then return   1       return   struct               ENDIF        IF n_tags struct  EQ 1 then BEGIN   The structure has only one element        if keyword_set grid  then return          if keyword_set name  then return          if keyword_set unit  then return          if keyword_set exp   then return          if keyword_set date   then return          if keyword_set level   then return   1       if keyword_set mask   then return   1       return   struct 0     ENDIF        nomelements   tag_names struct     for i   1  n_tags struct 1 do begin       case strlowcase strmid nomelements i  0  1  of           g :BEGIN             if keyword_set grid  then return  strupcase struct i              vargrid   strupcase struct i           END           n :BEGIN             if keyword_set name  then return  struct i              varname   struct i           END           u :BEGIN             if keyword_set unit  then return  struct i              varunit   struct i           END           e :BEGIN             if keyword_set exp  then return  struct i              varexp   struct i           END           m :BEGIN             if keyword_set mask  then return  struct i              valmask   struct i           END           d :BEGIN              if size struct i type  EQ 7 THEN BEGIN                 vardate   struct i              ENDIF ELSE BEGIN                time   struct i                 jpt   n_elements time                 if jpt EQ 1 then vardate    strtrim vairdate struct i 0  2                 ELSE vardate    strtrim vairdate struct i 0  2                         strtrim vairdate struct i jpt 1  2               ENDELSE             if keyword_set date  then return  vardate          END           h :BEGIN             computehopegrid   struct i xaxis   struct i yaxis                   struct i zaxis   struct i linetype                  FIRSTS    struct i firsts  LASTS    struct i lasts                  FORTHEMASK   struct 0  pttype    struct i pttype          END          ELSE:BEGIN              ras   report Le nom  nomelements i  ne correspont a aucun element reconnu de la structure  cf  IDL  xhelp   litchamp           end       endcase    endfor      if keyword_set grid  then return       if keyword_set name  then return       if keyword_set unit  then return       if keyword_set exp   then return       if keyword_set date   then return       if keyword_set level   then return   1    if keyword_set mask   then return   1     return   struct 0  end"); 
     243a[241] = new Array("./ToBeReviewed/LECTURE/ncdf_lec.html", "ncdf_lec.pro", "", "             file_comments   Give informations on a file net cdf and allows to recuperate    variables which are write in       categories   Reading      param NOM  in required    Name of a file net cdf situated in the directory stipulated by iodir       keyword ATT    global  or at the name of a variable  Allows to see all attributes    joined at a variable      keyword DIM   Give the list of dimensions       keyword VAR         1   var: Gove the list of dimensions          2  var nom de variable : in this case the function send back the variable       keyword IODIR   String containing the directory containing the file to be read      keyword _EXTRA   Allows to pass keywords defined by IDL to functions NETCDF   particularly OFFSET    and COUNT in ncdf_varget       returns    1  exept if var nom de variable  then the function send back the variable       restrictions   Variables s names of the program are similar to these used by the IDL manual     scientific data formats       history   Sebastien Masson  smasson lodyc jussieu fr                          4 1 98      version    Id: ncdf_lec pro 142 2006 07 21 12:47:49Z navarro         function ncdf_lec nom ATT att DIM dim VAR var  IODIR   iodir  _extra   ex     compile_opt idl2  strictarrsubs      res    1      if NOT keyword_set IODIR  then iodir        if not keyword_set att  or keyword_set dim  or keyword_set var  then BEGIN       att   1       dim   1       var   1        commande ncdump  c  iodir nom        spawn commande        goto fini    endif     opening of the file name       cdfid ncdf_open iodir nom      Wht does the file contain       wathinside ncdf_inquire cdfid      print in the file   iodir nom  there are:     if keyword_set dim  then begin        print nombre de dimensions:  strtrim wathinside ndims 1        print numero de la dimension dont la valeur est infini:  strtrim wathinside recdim 1     endif    if keyword_set var  then       if size var   type  NE 7 then print nombre de variables  : strtrim wathinside nvars 1     if keyword_set att  then begin       if strlowcase att  ne  global  then goto nonglobal       print nombre de attributs globaux : strtrim wathinside ngatts 1     endif     Global attributes      if keyword_set att  then begin       print          print ATTRIBUTS GLOBAUX        for attiq 0 wathinside ngatts 1 do begin          name ncdf_attname cdfid attiq global   attribute s name          ncdf_attget cdfid name value global  attribute s value          print name :  string value        endfor    endif nonglobal:     Display of different dimensions       if keyword_set dim  then begin        print          print DIMENSIONS     endif    nomdim    strarr wathinside ndims     tailledim lonarr wathinside ndims     for dimiq 0 wathinside ndims 1 do begin       ncdf_diminq cdfid dimiq name value   dimension s name and value       nomdim dimiq name       tailledim dimiq value       if keyword_set dim  then begin           print dimension numero  strtrim dimiq 1  nom:  nomdim dimiq                valeur:    strtrim tailledim dimiq 1        endif    endfor     Display of different variables         if keyword_set att  or keyword_set var  then begin    var s value  string or 1    help  var  output   nature    if  strpos nature   STRING 0  NE  1 then nature    string  ELSE nature    1    If we just have to read the variable     if nature EQ  string  then begin       ncdf_varget  cdfid  var  res  _extra   ex       GOTO  sortie    ENDIF    If it is to have pieces of information     if not keyword_set att  then att rien        print          for varid 0 wathinside nvars 1 do begin          varcontent ncdf_varinq cdfid varid    What does variable contain           if strlowcase att  eq strlowcase varcontent name  or keyword_set var              then begin             print variable numero:  strtrim varid 1  nom: varcontent name                  type:   varcontent datatype  dimensions: nomdim varcontent dim              if strlowcase att  eq strlowcase varcontent name  then begin                for attiq 0 varcontent natts 1 do begin                   name ncdf_attname cdfid varid attiq                    ncdf_attget cdfid varid name value                   print       strtrim attiq   name :  strtrim string value 1                 endfor                goto  sortie             endif          endif       endfor    endif   sortie:    ncdf_close cdfid     fini:     return  res end"); 
     244a[242] = new Array("./ToBeReviewed/LECTURE/read_ftp.html", "read_ftp.pro", "", " pro ftp_post  u  cmd  res  out out  count count   compile_opt idl2   if  cmd ne   then begin     printf  u  cmd  format a      comment out the following line to disable debug info     print   cmd   endif   if  size out type  eq 0  then out 2      catch  err   if  err ne 0  then return   line    count 0   while arg_present res  do begin     readf  u  line     if count eq 0 then res line else res res line      count count 1     comment out the following line to disable debug info     print    READ_FTP   ftp: ftp rsinc com pub gzip README GZIP  DATA data     IDL  help  data            DATA            BYTE        Array 2134      IDL  print  string data                README file: Research Systems Anonymous FTP site  ftp rsinc com                      pub directory                     gzip directory                 2  Retrieve some files from podaac jpl nasa gov and store the files      in the current working directory:        IDL  files   string lindgen 10 50 format MGB370 3 3d gz       IDL  READ_FTP   podaac jpl nasa gov  files          IDL         pub sea_surface_height topex_poseidon mgdrb data MGB_370   FILE      IDL  spawn dir MGB log_output       Volume in drive C is Local Disk       Volume Serial Number is 34CE 24DF         Directory of C: test test0307        07 28 2003  11:58a             362 167 MGB370 050 gz      07 28 2003  11:58a             333 005 MGB370 051 gz      07 28 2003  11:58a             310 287 MGB370 052 gz      07 28 2003  11:58a             358 771 MGB370 053 gz      07 28 2003  11:59a             387 282 MGB370 054 gz      07 28 2003  11:59a             361 633 MGB370 055 gz      07 28 2003  11:59a             383 075 MGB370 056 gz      07 28 2003  11:59a             365 844 MGB370 057 gz      07 28 2003  11:59a             383 918 MGB370 058 gz      07 28 2003  12:00p             372 712 MGB370 059 gz                    10 File s       3 618 694 bytes      These compressed files can cosequently be opened with OPENR and the      COMPRESSED keyword       history      version    Id: read_ftp pro 142 2006 07 21 12:47:49Z navarro        todo seb: que fait on de  syntax  au debut du header       pro read_ftp  site  files  dir  port  data data  file file  user user                  pass pass  ptr ptr   compile_opt idl2   if n_elements port  eq 0 then port ftp    if n_elements files  eq 0 then begin     if strcmp site ftp: 6  then host strmid site 6  else host site     pos strpos host      dir strmid host pos      host strmid host 0 pos      pos strpos dir reverse_search      files strmid dir pos 1      dir strmid dir 0 pos    endif else host site   if  size user type  eq 0  then user anonymous    if  size pass type  eq 0  then pass test test com                                      socket  u  host  port  connect_timeout 5  read_timeout 5   get_lun   ftp_post  u    res   ftp_post  u   USER  user  res  out 3      ftp_post  u   PASS  pass  res   ftp_post  u   TYPE I  res   if  size dir type  ne 0  then ftp_post  u   CWD  dir  res   if keyword_set file  or arg_present data  then begin     bufsize 512     buffer bytarr bufsize      n n_elements files      if arg_present data  then dat ptrarr n      for i 0  n 1 do begin       ftp_post  u   SIZE  files i  res  out 213         sz long64 strmid res n_elements res 1 4        if arg_present data  then dat i ptr_new bytarr sz        ftp_post  u   PASV  res       ftp_parse_pasv  res  host  port       ftp_post  u   RETR  files i  res  out 1          socket  v  host  port  connect_timeout 5  read_timeout 5              get_lun   rawio       tc 0ll       if keyword_set file  then openw w files i get_lun       while  tc lt sz  do begin         if  sz tc lt bufsize  then begin           bufsize sz tc           buffer bytarr bufsize          endif         readu  v  buffer  transfer_count dtc         if arg_present data  then               dat i tc dtc eq bufsize buffer:buffer 0:dtc 1          if keyword_set file  then              writeu w dtc eq bufsize buffer:buffer 0:dtc 1          tc tc dtc       endwhile       free_lun  v       if keyword_set file  then free_lun  w       ftp_post  u    res     endfor     if arg_present data  then begin        if  n gt 1 or keyword_set ptr  then data dat          else data temporary dat 0       endif   endif   ftp_post  u   QUIT  res   free_lun  u end"); 
    245245a[243] = new Array("./ToBeReviewed/LECTURE/read_ncdf.html", "read_ncdf.pro", "", "            PURPOSE:fonction de lecture pour fichier net_cdf    Ce programme  est moins universel que ncdf_lec  il fait appelle au   variables declarees dans common pro  mais il est du cop bcp plus   facile d utilisation  Il prend en compte la declaration des   differents zoom qui ont ete definis  ixminmesh premierx  la   declaration de la variable key_shift  bref le resultat de   read_ncdf peut dorectement etre utilise dans plt    C est aussi ce programme qui est utilise par defaut dans mes   widgets pour la partie lecture      CATEGORY:lecture de fichiers NetCdf     CALLING SEQUENCE:res   read_ncdf name debut fin       INPUTS: name: un string definissant le champ a lire            debut et fin: sont relatifs a l axe des temps  Ce peut etre             2 dates du type yyyymmdd et ds ce cas on selectionne les           dates qui sont comprisent entre ces 2 dates              2 indices qui definissent entre quel et quel pas de temps             on doit extraire la dimension temporelle            exp: ne sert a rien      KEYWORD PARAMETERS: utilisables hors du contexte des widgets            BOXZOOM: contient la boxzoom sur laquelle on doit faire la          lecture          FILENAME: string contennant le nom du fichier           INIT  to call automatically initncdf  filename and thus          redefine all the grid parameters          GRID UTVWF  to specify the type of grid  Defaut is  1           based on the name of the file if the file ends by          GRID _ TUVFW NC  not case sensible  or  2  T if case  1           is not found           IODIRECTORY a string giving the name of iodirectory  see          isafile pro for all possibilities  default value is common           variable iodir          TIMESTEP:activer pour specifier que debut et fin font          reference a des indices de l axe du temps et non pas a des          dates            TOUT: activer si on veut lire le ficher sur l ensemble du          domaine sans tenir compte du sous domaine definit par boxzoom          ou lon1 lon2 lat1 lat2 vert1 vert2           NOSTRUCT: activer si on ne veut pas que read_ncdf reourne          une structure mais uniquement le tableau se rapportant au          champ            TIMEVAR: a string to define the name of the variable that          contains the time axis  This keyword can be usefull if there          is no unlimited dimension or if the time axis selected by defaut           the first 1D array with unlimited dimension  is not the good one        OUTPUTS:une stucture lisible par litchamp pro ou un simple tableau   si  NOSTRUCT est active      COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:le champ doit avoir une dimension temporelle     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr                         15 10 1999         FUNCTION read_ncdf  name  debut  fin  pour_etre_compatible  BOXZOOM   boxzoom  FILENAME   filename                         PARENTIN   parentin  TIMESTEP   timestep  TIMEVAR   timevar                         TOUT   tout  NOSTRUCT   nostruct  CONT_NOFILL   CONT_NOFILL  INIT   init                         GRID   grid  FBASE2TBASE   fbase2tbase  _EXTRA   ex       compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     we find the filename       print filename    is parent a valid widget     if keyword_set parentin  then BEGIN     parent   long parentin      parent   parent widget_info parent   managed    ENDIF   filename   isafile filename   filename  IODIRECTORY   iodir  _EXTRA   ex      ouverture du fichier nom     if size filename   type  NE 7 then       return  report read_ncdf cancelled    IF  version OS_FAMILY EQ  unix  THEN spawn   file  filename     dev null    cdfid   ncdf_open filename    contient   ncdf_inquire cdfid      we check if the variable name exists in the file      if ncdf_varid cdfid  name  EQ  1 then BEGIN     ncdf_close  cdfid     return  report variable  name   C not found in the file  filename    ENDIF   varcontient   ncdf_varinq cdfid  name      shall we redefine the grid parameters     if keyword_set init  THEN initncdf  filename  _extra   ex     check the time axis and the debut and fin dates     if n_elements debut  EQ 0 then begin     debut   0     timestep   1   endif   if keyword_set timestep  then begin     firsttps   debut 0      if n_elements fin  NE 0 then lasttps   fin 0  ELSE lasttps   firsttps     jpt   lasttps firsttps 1     time   julday 1  1  1    lindgen jpt    ENDIF ELSE BEGIN     if keyword_set parent  then BEGIN       widget_control  parent  get_uvalue   top_uvalue       filelist   extractatt top_uvalue   filelist        IF filelist 0  EQ  many   THEN filelist   filename       currentfile    where filelist EQ filename 0        time    extractatt top_uvalue   fileparameters currentfile time_counter       date1   date2jul debut 0        if n_elements fin  NE 0 then date2   date2jul fin 0  ELSE date2   date1       firsttps   where time EQ date1    firsttps   firsttps 0        lasttps   where time EQ date2    lasttps   lasttps 0      ENDIF ELSE BEGIN       IF keyword_set timevar  THEN BEGIN          timeid   ncdf_varid cdfid  timevar          IF timeid EQ  1 THEN BEGIN           ncdf_close  cdfid           return  report the file  filename  as no variable     timevar                                 C Use the TIMESTEP keyword          endif         timecontient   ncdf_varinq cdfid  timeid          contient recdim   timecontient dim 0        ENDIF ELSE BEGIN    we find the infinite dimension         timedim   contient recdim         if timedim EQ  1 then BEGIN           ncdf_close  cdfid           return  report the file  filename  as no infinite dimension   C Use TIMESTEP or TIMEVAR keyword          endif   we find the FIRST time axis               timeid   0         repeat BEGIN         tant que l on a pas trouve une variable qui n a qu                                    une dimension: la dimension infinie           timecontient   ncdf_varinq cdfid  timeid    que contient la variable           timeid   timeid 1         endrep until  n_elements timecontient dim  EQ 1                         AND timecontient dim 0  EQ contient recdim              OR timeid EQ contient nvars 1           if timeid EQ contient nvars 1 then BEGIN           ncdf_close  cdfid           return  report the file  filename  as no time axis variable   C Use the TIMESTEP keyword          endif         timeid   timeid 1       ENDELSE    we must found the time origin of the julian calendar used in the   time axis     does the attribut units an dcalendar exist for the variable time axis        if timecontient natts EQ 0 then BEGIN         ncdf_close  cdfid         return  report the variable  timecontient name  has no attribut C Use the TIMESTEP keyword or add the attribut  units  to the variable        endif       attnames   strarr timecontient natts        for attiq   0  timecontient natts 1 do attnames attiq    ncdf_attname cdfid  timeid  attiq        if  where attnames EQ  units 0  EQ  1 then BEGIN         ncdf_close  cdfid         return  report Attribut  units  not found for the variable  timecontient name   C Use the TIMESTEP keyword        ENDIF     now we try to find the attribut called calendar    the the attribute  calendar  exists    If no  we suppose that the calendar is gregorian calendar         if  where attnames EQ  calendar 0  NE  1 then BEGIN         ncdf_attget  cdfid  timeid   calendar  value         value   string value          CASE value OF            noleap :key_caltype    noleap             360d :key_caltype    360d             greg :IF n_elements key_caltype  EQ 0 THEN key_caltype    greg            ELSE:BEGIN              notused   report Unknown calendar:  value  we use greg calendar               key_caltype    greg            END         ENDCASE       ENDIF ELSE BEGIN          notused   report Unknown calendar  we use  key_caltype  calendar           IF n_elements key_caltype  EQ 0 THEN key_caltype    greg        ENDELSE     now we take acre of units attribut       ncdf_attget  cdfid  timeid   units  value     time_counter:units    seconds since 0001 01 01 00:00:00      time_counter:units    hours since 0001 01 01 00:00:00      time_counter:units    days since 1979 01 01 00:00:00      time_counter:units    months since 1979 01 01 00:00:00      time_counter:units    years since 1979 01 01 00:00:00        we decript the  units  attribut to find the time origin       value   strtrim strcompress string value  2        mots   str_sep value            unite   mots 0        depart   str_sep mots 2          ncdf_varget  cdfid  timeid  time       time   double time        unite   strlowcase unite        IF strpos unite   s  strlen unite 1  NE  1 THEN unite   strmid unite  0  strlen unite 1        IF strpos unite   julian_  NE  1 THEN unite   strmid unite  7        case unite of          second :time   julday depart 1  depart 2  depart 0 time 86400 d          hour :time   julday depart 1  depart 2  depart 0 time 24 d          day :time   julday depart 1  depart 2  depart 0 time          month :BEGIN            if total fix time  NE time  NE 0 then     we switch to days with 30d m             time   julday depart 1  depart 2  depart 0 round time 30                ELSE for t   0  n_elements time 1 DO               time t    julday depart 1 time t  depart 2  depart 0          END          year :BEGIN           if total fix time  NE time  NE 0 then     we switch to days with 365d y             time   julday depart 1  depart 2  depart 0 round time 365                ELSE for t   0  n_elements time 1 do               time t    julday depart 1  depart 2  depart 0 time t          END         ELSE:BEGIN           ncdf_close  cdfid           return  report The  units  attribu of the time axis must be something like:  C  seconds since 0001 01 01    C  days since 1979 01 01    C  months since 1979 01 01    C  years since 1979 01 01           end       ENDCASE       date1   date2jul debut 0        if n_elements fin  NE 0 then date2   date2jul fin 0  ELSE date2   date1       time   double time        firsttps   where time GE date1    firsttps   firsttps 0        if firsttps EQ  1 THEN BEGIN         ncdf_close  cdfid         return  report date 1:  strtrim jul2date date1  1  is not found in the time axis        ENDIF       lasttps   where time LE date2        if lasttps 0  EQ  1 THEN BEGIN         ncdf_close  cdfid         return  report the time axis as no date before date 2:  strtrim jul2date date2  1        endif       lasttps   lasttps n_elements lasttps 1        if lasttps LT firsttps then BEGIN         ncdf_close  cdfid         return  report the time axis as no dates between date1 and  date 2:  strtrim jul2date date1  1   strtrim jul2date date2  1        endif     ENDELSE     time   time firsttps:lasttps      jpt   lasttps firsttps 1   ENDELSE     nom de la grille a laquelle se rapporte le champ     IF keyword_set grid  THEN vargrid   strupcase grid  ELSE BEGIN     vargrid    T                  default definition     IF finite glamu 0  EQ 1 THEN BEGIN       pattern    GRID   GRID_   GRID   UPID_   30ID_        gdtype    T   U   V   W   F        fnametest   strupcase filename        FOR i   0  n_elements pattern 1 DO BEGIN         FOR j   0  n_elements gdtype 1 DO BEGIN           substr   pattern i gdtype j            pos   strpos fnametest  substr            IF pos NE  1 THEN                vargrid   strmid fnametest  pos strlen substr 1  1          ENDFOR       ENDFOR     ENDIF   ENDELSE     call the init function          redefinition du domaine      if keyword_set tout  then begin     nx   jpi     ny   jpj     nz   jpk     firstx   0     firsty   0     firstz   0     lastx   jpi 1     lasty   jpj 1     lastz   jpk 1     case strupcase vargrid  of        T :mask   tmask        U :mask   umask         V :mask   vmask         W :mask   tmask        F :mask   fmask      endcase   ENDIF ELSE BEGIN     if keyword_set boxzoom  then BEGIN        Case 1 Of         N_Elements Boxzoom  Eq 1:bte    lon1  lon2  lat1  lat2  0  boxzoom 0          N_Elements Boxzoom  Eq 2:bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1          N_Elements Boxzoom  Eq 4:bte    Boxzoom  vert1  vert2          N_Elements Boxzoom  Eq 5:bte    Boxzoom 0:3  0  Boxzoom 4          N_Elements Boxzoom  Eq 6:bte   Boxzoom         Else: BEGIN           ncdf_close  cdfid           return  report Wrong Definition of Boxzoom          end       ENDCASE       savedbox   1b       saveboxparam   boxparam4rdncdf dat        domdef  bte  GRIDTYPE    T  vargrid  _extra   ex     ENDIF     grille  mask  glam  gphi  gdep  nx  ny  nz  firstx  firsty  firstz  lastx  lasty  lastz     undefine  glam   undefine  gphi     on libere un peu de memoire    ENDELSE     on initialise les ixmindta  iymindta au besoin     if n_elements jpidta  EQ 0 THEN jpidta   jpiglo   if n_elements jpjdta  EQ 0 THEN jpjdta   jpjglo   if n_elements jpkdta  EQ 0 THEN jpkdta   jpkglo   if n_elements ixmindta  EQ 0 THEN ixmindta   0   if n_elements ixmaxdta  EQ 0 then ixmaxdta   jpidta 1   if ixmindta EQ  1 THEN ixmindta   0   IF ixmaxdta EQ  1 then ixmaxdta   jpidta 1   if n_elements iymindta  EQ 0 THEN iymindta   0   IF n_elements iymaxdta  EQ 0 then iymaxdta   jpjdta 1   if iymindta EQ  1 THEN iymindta   0   IF iymaxdta EQ  1 then iymaxdta   jpjdta 1   if n_elements izmindta  EQ 0 THEN izmindta   0   IF n_elements izmaxdta  EQ 0 then izmaxdta   jpkdta 1   if izmindta EQ  1 THEN izmindta   0   IF izmaxdta EQ  1 then izmaxdta   jpkdta 1     on va lire le fichier     if n_elements key_stride  LE 2 then key_stride    1  1  1    key_stride   1l   long key_stride    key_shift   long testvar var   key_shift      IF n_elements key_yreverse  EQ 0 THEN key_yreverse   0   IF keyword_set key_yreverse  THEN BEGIN     tmp   jpj 1 firsty     firsty   jpj 1 lasty     lasty   tmp   ENDIF     IF keyword_set fbase2tbase  THEN BEGIN     case strupcase vargrid  of        U :BEGIN         IF NOT keyword_set key_periodic  THEN BEGIN           firstx   firstx 1           lastx   lastx 1         ENDIF       END        V :BEGIN         firsty   firsty 1         lasty   lasty 1       END        F :BEGIN         firsty   firsty 1         lasty   lasty 1         IF NOT keyword_set key_periodic  THEN BEGIN           firstx   firstx 1           lastx   lastx 1         ENDIF       END       ELSE:     endcase   ENDIF     IF keyword_set fbase2tbase  AND keyword_set key_periodic        AND  strupcase vargrid  EQ  U  OR strupcase vargrid  EQ  F  THEN key_shift    key_shift 1        read_ncdf_varget         IF keyword_set fbase2tbase  AND keyword_set key_periodic        AND  strupcase vargrid  EQ  U  OR strupcase vargrid  EQ  F  THEN key_shift    key_shift 1     on definit les variables globales rattachees a la variable     varname   varname   name   varunit   if varcontient natts NE 0 then begin     attnames   strarr varcontient natts      for attiq   0  varcontient natts 1 do attnames attiq    ncdf_attname cdfid  name  attiq      lowattnames   strlowcase attnames        found    where lowattnames EQ  units 0      IF found NE  1 then ncdf_attget  cdfid  name  attnames found  value ELSE value         varunit   strtrim string value  2        found    where lowattnames EQ  add_offset 0      if found NE  1 then ncdf_attget  cdfid  name  attnames found  add_offset ELSE add_offset   0        found    where lowattnames EQ  scale_factor 0      if found NE  1 then ncdf_attget  cdfid  name  attnames found  scale_factor ELSE scale_factor   1        missing_value    no      found    where lowattnames EQ  _fillvalue 0      if found NE  1 then ncdf_attget  cdfid  name  attnames found  missing_value     found    where lowattnames EQ  missing_value 0      if found NE  1 then ncdf_attget  cdfid  name  attnames found  missing_value     ENDIF ELSE BEGIN      varunit         add_offset   0      scale_factor   1      missing_value    no    ENDELSE   vardate   on construit une belle date lisible en fonction du langage specifie     year   long debut 0 10000   month    long debut 0 100  MOD 100   day    long debut 0  MOD 100    vardate   string format    C CMoA  31 month 1   strtrim day  1   strtrim year  1    varexp   file_basename filename     we apply reverse   if keyword_set key_yreverse  then res   reverse temporary res   2    if keyword_set key_zreverse  AND  size res 0  EQ 3 AND jpt EQ 1 then res   reverse temporary res  3    if keyword_set key_zreverse  AND  size res 0  EQ 4 THEN res   reverse temporary res  3     on applique la valeur valmask sur les points terre   if NOT keyword_set cont_nofill  then begin     valmask   1e20     case 1 of       varcontient ndims eq 2:BEGIN  xy array         mask   mask    0          earth   where mask EQ 0        END       varcontient ndims eq 3 AND  where varcontient dim EQ contient recdim 0  EQ  1:BEGIN  xyz array         earth   where mask EQ 0        END       varcontient ndims eq 3 AND  where varcontient dim EQ contient recdim 0  NE  1:BEGIN  xyt array         mask   mask    0          earth   where mask EQ 0          if earth 0  NE  1 then BEGIN           earth   earth replicate 1  jpt replicate nx ny  n_elements earth lindgen jpt          END       END       varcontient ndims eq 4:BEGIN  xyzt array         earth   where mask EQ 0          if earth 0  NE  1 then BEGIN           earth   earth replicate 1  jpt replicate nx ny nz  n_elements earth lindgen jpt          END       END     endcase   ENDIF ELSE earth    1   we look for  missing_value   IF size missing_value   type  NE 7 then BEGIN     IF size missing_value   type  EQ 1 THEN BEGIN        IF isnumber string missing_value  tmp  EQ 1 THEN missing_value   tmp     ENDIF       if missing_value NE valmask then begin     if abs missing_value  LT 1e6 then missing   where res EQ missing_value        ELSE missing   where abs res  gt abs missing_value 10       ENDIF ELSE missing    1   ENDIF ELSE missing    1   on applique les add_offset  scale_factor et missing_value   if scale_factor NE 1 then res   temporary res scale_factor   if add_offset NE 0 then res   temporary res add_offset   if missing 0  NE  1 then res temporary missing     values f_nan   if earth 0  NE  1 then res temporary earth    1e20     ncdf_close  cdfid     if keyword_set savedbox  THEN restoreboxparam   boxparam4rdncdf dat    if keyword_set nostruct  then return  res     ELSE BEGIN      IF keyword_set key_forgetold  THEN BEGIN       return   arr:res  grid:vargrid  unit:varunit  experiment:varexp  name:varname       ENDIF ELSE BEGIN        return   tab:res  grille:vargrid  unite:varunit  experience:varexp  nom:varname      ENDELSE    ENDELSE  END      "); 
    246246a[244] = new Array("./ToBeReviewed/LECTURE/read_ncdf_varget.html", "read_ncdf_varget.pro", "", ""); 
    247247a[245] = 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"); 
    248 a[246] = new Array("./ToBeReviewed/MATRICE/colle.html", "colle.pro", "", "     file_comments    This concatenation function exist in IDL so long    as we do not try to stick with a dimension superior or equal at 4         categories utilities      param a0  in required       param a1  in required       param a2  in required       param a3  in required       param a4  in required       param a5  in required       param a6  in required       param a7  in required       param a8  in required       param a9  in required       param a10  in required       param a11  in required       param a12  in required       param a13  in required       param a14  in required       param a15  in required       param a16  in required       param a17  in required       param a18  in required       param a19  in required       param a20  in required       keyword SAUVE mot cle qui force a sauvegarder le tableau de           pointeur et les tableaux a coller       returns res matrice resultat      examples 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      history Sebastien Masson  smasson lodyc jussieu fr                          13 1 98      version  Id: colle pro 134 2006 07 07 10:19:08Z navarro       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     We put in place ptrtab and direc in function of input arguments      case 1 of       n_params  EQ 2:BEGIN       case where we directly give the pointer array          ptrtab   a0          direc   a1          if NOT keyword_set sauve  then undefine  a0   on recuperate the number of array to be pasted           nbretab    size ptrtab 1        end       n_params  GT 2:BEGIN   on recuperate the number of array to be pasted           nbretab   n_params 1          bidon   execute direc   a strtrim n_params 1  2    We write the pointer array whose each element point on an array           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 on the direct s value       case direc of       1:BEGIN                     we paste following the 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                     we paste following the 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                     we paste following the 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    We transpose res in order to put the dimension to be pasted number 1   To this  we contain the permuter vector which give the place that dimension    in the transposed matrix must take          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   we paste following the dimension 1on 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     "); 
    249 a[247] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", "        file_comments    Create a bar graph  or overplot on an existing one       categories    Graphics      param Values  in required     A vector containing the values to be represented by the bars    Each element in VALUES corresponds to a single bar in the   output       keyword 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       keyword 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       keyword 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       keyword TITLE    A string containing the main title to for the bar plot       keyword XTITLE    A string containing the title for the X axis       keyword YTITLE    A string containing the title for the Y axis       keyword 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       keyword 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       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       keyword 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       keyword OUTLINE    If set  this keyword specifies that an outline should be   drawn around each bar       keyword OVERPLOT    If set  this keyword specifies that the bar plot should be   overplotted on an existing graph       keyword BACKGROUND    A scalar that specifies the color index to be used for   the background color   By default  the normal IDL background   color is used       keyword 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       examples 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       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       Id: bar_plot pro 134 2006 07 07 10:19:08Z navarro       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"); 
    250 a[248] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt.html", "plt.pro", "", "             file_comments    Draw horizontal graph  map       categories    graphic      param TAB1  in required     The field whose we want to make the horizontal map can be 2 kind of thing:           1  an array  if needed  its mean along the z and t direction           will be automatically performed            2  a structure respecting all criterions specified by           litchamp pro  cf  IDL  xhelp litchamp         param PARAM2  in optional default min of tab1  on ocean points     Min value we want to consider in the contour s drawing            Note: Could also be the type of plot that can be only  xy  for plt      param PARAM3  in optional default max of tab1  on ocean points     Max value we want to consider in the contour s drawing            Note: if param2 is defined as  xy  then param3 is used to define the min  see param2       param PARAM4  in optional default xy     Type of plot  can be only  xy  for plt            Note: if param2 is defined as  xy  then param4 is used to define the max  see param3       keyword BOXZOOM    Vector indicating the geographic zone on which we want to cut the map      If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  0  max gdept  gdepw    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 are global variables defined at the last domdef       keyword REALCONT    Allow to draw continents defined in IDL  REALCONT can have 2 form:              REALCONT: we draww continents in place of the mask             REALCONT 2 we draw cnotinents s contour over the mask  this allows                         to see if the mask correspond at real continents       keyword CONTINTERVALLE    When CONTOUR is activated  it is the value between 2 isolines    traced by a trait  So it can be different from the one specified by INTERVALLE which     in this case  does not control colored isolines in color anymore  If there is noone    specified min  we choose a contour min which goes well with the specified interval     If this keyword is not specified  we trace 20 isolines from the min to the max        keyword CONTLABEL    It is an integer n  When CONTOUR is actvated  if n   is different of 0  choose the label type corresponding to n cases for    the traced by a traitisolines  To specify the type of label of the    colored contour  use LABEL      keyword CONTMAX    When CONTOUR is activated  max value we want to consider in the isoline    traced by a trait s line  By default  we take the max  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTMIN    When CONTOUR is activated  min value we want to consider in the isoline    traced by a trait s line  By default  we take the min  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword GRIDTYPE  U T V W  or  F  to specify possibly the grid on wiche the field is joined    Comment: In this case  we should use a structure like field       keyword INTERVALLE    Value of an internal between to isoline  If there is none specified min     we choose a min contour which goes well with the specified interval  If this keyword is not    specified  we trace 20 isoline from the min to the max  Comment: When CONTOUR is activated     INTERVALLE only specify the interval between 2 colored isoline  To specify the interval    between 2 isolines traced by a trait  use CONTINTERVALLE       keyword INV    Invert the color vector used to color the graph                   without use the black  the white and the used palette        keyword LABEL    It is an integer n  If n different of 0  it choose the label s type    corresponding to cases n  cf label pro   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines     For tese one traced by a trait  use CONTLABEL       keyword MAP    We use it when we want to do a projection    This keyword can be of two types:       MAP P0lat P0lon Rot  For the descrption of these 3 values  see the online help of MAP_SET         MAP: In this case  map is automatically caculated have the value:             map    0   lon1 lon2 2  0    Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo:   IDL  demo   Then choose earth sciences and  mapping    Comment2: By default it  is a cindrical projection which is effectuated  with or without the keyword map     If we want an other projection  MAP must be activated and we have to add the keyword:  nom_projection    For example  for a polar projection centered on the south pole:   IDL  domdef 180 180 90 45   IDL  plt  tab   stereo map 90 0 0       keyword LABMAP    Corresponds to label keywords of map_set  Defaut         definition is labmap 1        keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword NLEVEL    Number of contour to draw by default  20  active if   LABEL 0 or is not specified       keyword NOTRI    To force not to use the triangulation  Beware  in this case  the    drawing only works if the grid is undeformed  It means that each point of a longitude    give one latitude and each point of a latitude give one longitude  exept if we use    the keyword CELL_FILL 2     Comment: if the field contain points  values f_nan  then we even do a triangulation       keyword OVERPLOT    To make a plot over an other one     Comment: Contrarily to the use of CONTOUR or VECTEUR  the use of this keyword    does not the caption and or the color bar       keyword STRICTFILL    Activate this keyword to that the filling of contours be    precisely done between the min and the max specified letting values inferior at the    specified min and values superior at the specified max in white       keyword STYLE    Contour s style to adopt to draw isolines by default  style 0  see style pro       keyword VECTEUR   It is a structure composed by 2 elements containing the 2 fields U   and V of values of the zonal and meridian component of the vector of the fields   to draw  These fields can be an array or a structure          For example: vecteur matriceu:lec unsurface matricev:lec vnsurface          Comment: name of elements of vectors are inconsenquential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword _EXTRA   used to pass your keywords       keyword CONT_NOFILL          Activate it not to fill the point mask to let them transparent     Comment: Nevertheless  we trace mask s contour        keyword USETRI   To force using triangulation        keyword MASKFILL        keyword DUPLICATE      keyword DECIMATETRI      uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr    7 1999   Sebastien Masson 08 02 2000 checkfield and   notri keyword  or triangule    1          version    Id        todo seb    Changer param  tab1 keyword  REMPLI   UNLABSUR   UNSUR2     UNVECTSUR  quelques trucs dans la routine          pro plt  tab1  param2  param3  param4  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             To key_performance       I  preparation of the graphic environment and small verifications        I1  verification of the grid s type associated to 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  Reading of the field and checkup      if keyword_set boxzoom  AND n_elements contour  ne 4  then BEGIN     savedbox   1b     saveboxparam   boxparam4plt dat    END   if n_elements param2  NE 0 then type   param2   if n_elements param3  NE 0 then min   param3   if n_elements param4  NE 0 then max   param4   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 field    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  reinitialization   p x y    Comment: We do not reinitializate when we call bck plt in loop to use contour      if n_elements contour  ne 4 AND NOT keyword_set overplot  then reinitplt   z   invert     I4  attribution of the mask and of longitude and latitude arrays      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 field    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 of the mi:min and of the ma:max of z2d in the same way    as max: max and min: min for the drawing      masknan   finite z2d    nan   total masknan  NE n_elements z2d     Do we need to do an 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   We do an autoscale if needed    if autoscale then autoscale  min  max  intervalle       II  We put the drawing in its place on the window or the page    and possible opening of the window or of the 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  Covering of the drawing  labels style axis            III1  Choice of 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  Choice of 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 of axis     if NOT keyword_set overplot  THEN axe   xy  _EXTRA   ex         IV  Drawing         extrapolation of field on lands and setup of min  max values     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      If we make a drawing in depth  we redifine a triangulation    on the zoom   this triangulation will be used to trace the    field  We use tmask in order to holes of this triangulation    are the same than these used for the mask and correspond to    holes there is in this new depth    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: For the drawing of the coast be clean  we try to take additionally    points for the land  Like that  we do not see grid s gap  It is what decoupeterre    do  We profit of it to redefine trimsk      decoupeterre  mask  glammsk  gphimsk  type    xy          TRI   trimsk  usetri   usetri  indicezoom   indicezoommask           coinmonte   coinmontemask  coindescend   coindescendmask           _EXTRA   ex   ENDELSE     IV1  Choice of type of drawing      typetrace    classique    if keyword_set map  AND key_onearth then BEGIN    Call of  mapset when we want to do 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   To axes of coordinates be considerated      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   In this case  triangulation is closed in x and cover all the sphere     We have to cut it at the level where we cut the sphere to make the drawing        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  Contours and coloring     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         To 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  Recall of plt in loop when contour is activated      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  Small functions           V1  Possible add of vectors in double exposure      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 the line of change of date  the equator and the greenwich meridian        if NOT keyword_set map  AND key_onearth then meridienparallele   xy      V3  To trace IDL s continents     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  caption   display of these      legende  mi  ma   xy  CONTOUR   pourlegende  VECTLEGENDE   vectlegende  INTERVALLE   intervalle  DIREC   direc  _EXTRA   ex   if n_elements ex  NE 0 then BEGIN    To keep frame s axes in black     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  Colorbar      colnumb   colnumb 0:ncontour 1 keyword_set strictfill    barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                     position   posbar  _extra   ex       VI  Possible print      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  "); 
    251 a[249] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt1d.html", "plt1d.pro", "", "         file_comments   Trace 1d graphes: x y z  or t but in this case  we recall directly pltt       categories   Graphics      param TAB  in required     The field whose we want to make the hovmoller map can be 2 kind of thing:  1  An array which can be:              2d  3d or 4d:  array xy  xyz  xyt or xyzt  In this case  the array will pass             in moyenne or grossemoyenne to be averaged and becomme  an array 1d                1d:Nevertheless  the type must be specified in order to we know which trace             it is about  To have a correct caption  respecify the  xctraction zone via BOXZOOM          2  a structure respecting all criterions specified by litchamp pro              See IDL  xhelp litchamp  The array contained in the structure             respecting criterions of case 1        param PARAM2  in required     Min value we want to consider in the contour s drawing    Note: could also be the type of plot: x y z         param PARAM3  in optional default min max of tab  on ocean points     Max value we want to consider in the contour s drawing    Note: if param2 is defined as  x y z  then param3 is used to define the min  see param2       param PARAM4  in optional default max of tab  on ocean points     Type of plot  can be only  x y z  for plt1d    Note: if param2 is defined as  xy  then param4 is used to define the max  see param3       keyword BOXZOOM   Vector indicating the geographique zone  3d  on which the extraction of the field must    be done to do the hovmoeller     If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  vert1  vert2    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef       keyword COL1d     OBSOLETE Color number when we make a trace 1d by default  0 It is better to use the    keyword COLOR used by plot       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates       keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword OV1D   Allow the double exposure of an 1d curve to a precedent 1d trace       keyword REVERSE_X    To invert the x axis  so as the drawing       keyword REVERSE_Y    To invert the y axis  so as the drawing       keyword SIN    Activate this keyword if we want the x axis to be traced in sinus of the    latitude when we make a drawing f y       keyword STY1D     OBSOLETE    Number of the style used when we make a 1d drawing  We should better use the    keyword LINESTYLE which is tho one of the plot  Beware  this keyword is still    useful if we want to d bars instead of curves  put sty1d bar       keyword TYPEIN   allows to specify the type of hovmoller we want to do                xt yt zt t      with help of a keyword rather than the argument type  If the argument andthe    keyword are specified in the same time  it is the value specified by the    keyword which is retained       keyword _EXTRA    used to pass your keywords      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      version     Id            pro plt1d  tab  param2  param3  param4  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     1st part: initialization small calculations          verification of the type s value       if n_elements param2  NE 0 then type   param2   if n_elements param3  NE 0 then min   param3   if n_elements param4  NE 0 then max   param4   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  reinitialization   p x y    Comment: We do not reinitializate when we call back plt1d     if NOT keyword_set ov1d  then reinitplt     I1  Reading of the field      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   We build the mask  For this  the array must be hidden  Automaticaly done at valmask    value if we pass in moyenne or 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 of the min and of the max after the average     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       2nd part: Drawing       definition of the abscisse and ordinate vectors    The triangulation is defined in order to the drawing be done from the    left bottom to the right up  So the matrix have to be shown like this     from which some transpose and 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 of 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       drawing       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  If we want to make bars     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    To have a black frame         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    To have a 0 colored frame and trace a line at 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   Add of an axis in the case where we use endpoints     if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex   Trace a line at 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       3rd part: Possible print      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  "); 
    252 a[250] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltbase.html", "pltbase.pro", "", "             file_comments   Overlayer contour to trace a field which can be mask     Elementary brick of plt  pltz et pltt       categories graphic      param Z2D  in required    The table to trace      param X  in required    Axis  Vector or array of the same size that z2d  This is the coordinate of z2d on x       param Y  in required    Axis  Vector or array of the same size that z2d  This is the coordinate of z2d on y       param MASK  in required    It is the array who mask z2d  with 0s on points we want to mask and 1s on others     If z2d is not masked  put this argument equal to 1       param XM  in required    Axis of the mask  Vector or array of the same size that mask     This is the coordinate of mask on x       param YM  in required    Axis of the mask  Vector or array of the same size that mask     This is the coordinate of mask on y       param LEVELS  in optional    Vectors which contain levels needed at the contour     If it is not given  we take 20 levels between the min and the max         param COLORS  in optional    Vectors which contain colors needed at the contour     If it is not given  we take 20 levels between the min and the max       keyword COLORTRICHAMP    The color we want to use to draw the triangulation which is used to make contours of the field       keyword COLORTRIMASK    The color we want to use to draw the triangulation which is used to make contours of the mask       keyword COLOR_C    To draw the contour in color instead of in black   with filling in color       keyword  CONT_NOFILL    Activate it not to fill the point mask to let them transparent     Comment: Nevertheless  we trace mask s contour       keyword CONT_COLOR    The color of the continent  defaut value is           d n_colors   1   white      keyword  DESSTRICHAMP    To draw the triangulation which is used to make field s contours        keyword  DESSTRIMASK    To draw the triangulation which is used to make mask s contours        keyword  FORPLT    To activate if we want that the drawing of coast be realized by tracecote rather than tracemask       keyword I_COLORS    It is a vector specifing the colors to use to trace contours     It is the same thing that c_colors which act on contours       keyword MORE    Number to give to avoid style s bugs:      Out of range subscript encountered:        Execution halted at:  PLTBASE           151               By default more 10 If the bug still exist  increase the value of more      The explanation and the justification of this method do not have scientific bases yet       keyword  NOFILL   To make just isolines       keyword  NOCONTOUR   To make just colors       keyword  UNSUR2 To trace one isoline on two       keyword UNLABSUR    Is an integer n  specifying we only label one contour on two      keyword CONTOUR    To be used since plt  pltz or pltt   Have a look on these routines       keyword _EXTRA    Used to pass your keywords      uses   common pro      restrictions   In the case of z2d  x and y are arrays of same size  we hate to put them as vectors: z2d  x  y       history    Sebastien Masson  smasson lodyc jussieu fr        8 2 2000 check if the tri array is not equal to    1  allow contour with out using a triangulation        version    Id       todo seb L 172   173           PRO pltbase  z2d  x  y  mask  xm  ym  levels  colors  UNSUR2   unsur2  CONTOUR   contour                  NOCONTOUR   nocontour  NOFILL   nofill                  TRICHAMP   trichamp  TRIMSK   trimsk                  REALCONT   realcont  NAN   nan  usetri   usetri                  COLORTRICHAMP   colortrichamp  COLORTRIMASK   colortrimask                  COLORTRINAN   colortrinan                  COLORPOINTS   colorpoints  DRAWPOINTS   drawpoints                  TH_TRICHAMP   th_trichamp  TH_TRIMASK   th_trimask                  DESSTRICHAMP   desstrichamp  DESSTRIMASK   desstrimask                  DESSTRINAN   desstrinan  COLOR_C   color_c                  I_COLORS   i_colors   CONT_COLOR   CONT_COLOR                  CONT_NOFILL   cont_nofill  UNLABSUR   unlabsur                  COINMONTEMASK   coinmontemask  COINDESCENDMASK   coindescendmask                  COINMONTENAN   coinmontenan  COINDESCENDNAN   coindescendnan                  INDICEZOOMMASK   indicezoommask  INDICEZOOMNAN   indicezoomnan                  MASKNAN   masknan  TRINAN   trinan                  FORPLT   forplt  REALSECTION   realsection                  MORE   more  EXCHANGE_XY   exchange_xy                  _EXTRA   ex       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       Explanation concerning contour  This keyword is activated when we trace a    colored contour different from the one with black trait    If it is activated  case n_elements contour  NE 0  we pass 2 time in pltbase:     1  We trace colors then we leave  it is the case:           n_elements contour  NE 0 AND n_elements contour  NE 4      2  We trace contours in traits then continents  it is the case:            n_elements contour  NE 0 AND n_elements contour  EQ 4        tempsun   systime 1             To key_performance   if n_elements mask  EQ 0 then mask   1b   if n_elements masknan  EQ 0 then masknan   1b   IF total mask  EQ n_elements z2d  THEN mask   1b     If levels and colors aren t given     if n_params  EQ 4 then        label  0  min z2d mask  max z2d mask  ncontour  levels  colors   attention bidouille inexplicable pour que tout se passe bien avec les   postcript ds pltz    if n_elements contour  LE 4 AND  x type EQ 0 THEN       plot   0   0  xstyle   5  ystyle   5   nodata   noerase  title     subtitle         Is cell_fill is a part of _extra  we desactive it if it is nt equal to 2     IF chkstru ex   CELL_FILL  THEN BEGIN      cell_fill   ex CELL_FILL     if ex CELL_FILL NE 2 then ex CELL_FILL   0   ENDIF ELSE cell_fill   0            I  Filling of contours in palette colors      if NOT keyword_set more  then more   10   if NOT keyword_set nofill  AND NOT keyword_set color_c  then begin     if n_elements contour  NE 4 THEN BEGIN        if usetri EQ 2 then BEGIN         IF size x   n_dimensions  EQ 1 THEN x   x replicate 1   size z2d 2          IF size y   n_dimensions  EQ 1 THEN y   replicate 1   size z2d 1 y         contour   z2d  fltarr more   x  fltarr more                 y  fltarr more  levels   levels  c_color   colors                noerase   fill  TRIANGULATION   trichamp  _extra   ex         ENDIF ELSE BEGIN         IF size x   n_dimensions  EQ 2 THEN x   x  0          IF size y   n_dimensions  EQ 2 THEN y   reform y 0            contour  z2d  x  y  levels   levels  c_color   colors   noerase                fill  _extra   ex        ENDELSE     ENDIF   ENDIF   if n_elements contour  NE 0 AND n_elements contour  NE 4 THEN GOTO  fini    IF chkstru ex   C_ORIENTATION  THEN ex   extractstru ex   C_ORIENTATION    IF chkstru ex   C_SPACING  THEN ex   extractstru ex   C_SPACING    IF chkstru ex   C_COLORS  THEN ex   extractstru ex   C_COLORS      II  Drawing of contours in traits     if n_elements contour  EQ 4 OR n_elements contour  EQ 0 THEN BEGIN     we put the masked values to NaN       IF  n_elements mask  GT 1 OR n_elements masknan  GT 1          AND NOT keyword_set cont_nofill  THEN BEGIN         tonan   where mask masknan  EQ 0  count        tonan   where remplit mask masknan  nite   1  mask   mask masknan                                  basique  fillval   0                                 fillxdir   keyword_set realsection  EQ 0  count        IF count NE 0 THEN z2d temporary tonan     values f_nan     ENDIF        We do not pass if we have to make differents contours    In the case of unsur2 is activated  we reduce levels     if NOT keyword_set nocontour  then begin       IF keyword_set unsur2  THEN levels   levels where zeroun n_elements levels    eq 1    Is unlabsur activated   Does C_LABEL passed via _EXTRA        if keyword_set unlabsur  THEN IF chkstru ex   C_LABELS  THEN           ex C_LABELS   1 indgen n_elements ex C_LABELS  MOD unlabsur    1      Not to fill when cell_fill is imposed        IF chkstru ex   CELL_FILL  THEN ex CELL_FILL   0         CASE 1 OF         keyword_set color_c :c_colors   colors         keyword_set i_colors :c_colors   i_colors         ELSE:       ENDCASE         IF usetri EQ 2 THEN BEGIN          IF size x   n_dimensions  EQ 1 THEN x   x replicate 1   size z2d 2          IF size y   n_dimensions  EQ 1 THEN y   replicate 1   size z2d 1 y         contour   z2d  fltarr more   x  fltarr more                 y  fltarr more  levels   levels               overplot   1 keyword_set nofill  noerase   keyword_set nofill                c_colors   c_colors  TRIANGULATION   trichamp  _extra   ex       ENDIF ELSE BEGIN         IF size x   n_dimensions  EQ 2 THEN x   x  0          IF size y   n_dimensions  EQ 2 THEN y   reform y 0            contour  z2d  x  y  levels   levels               overplot   1 keyword_set nofill  noerase   keyword_set nofill                c_colors   c_colors  _extra   ex       ENDELSE     ENDIF     III  Filling of colored continents        IF chkstru ex   CELL_FILL  THEN ex CELL_FILL   cell_fill   1     IF chkstru ex   LEVELS  THEN ex   extractstru ex   LEVELS      IF chkstru ex   NODATA  THEN ex   extractstru ex   NODATA      IF NOT keyword_set cont_color  THEN cont_color    d n_colors 1     255         If there is points at NaN    We trace points in white at NaN bafore drawing coasts with a trait        if keyword_set trinan  THEN BEGIN       IF size x   n_dimensions  EQ 1 THEN x   x replicate 1   size masknan 2        IF size y   n_dimensions  EQ 1 THEN y   replicate 1   size masknan 1 y       contour   1b masknan  fltarr more   x  fltarr more               y  fltarr more  levels   0 5   overplot   fill             c_colors   cont_color  TRIANGULATION   trinan  _extra   ex       IF keyword_set forplt  THEN           completecointerre  COINMONTE   coinmontenan             COINDESCEND   coindescendnan  INDICEZOOM   indicezoomnan             CONT_COLOR   cont_color  _EXTRA   ex         ELSE fillcornermask  x  0  y 0    COINMONTE   coinmontenan             COINDESCEND   coindescendnan  CONT_COLOR   cont_color  _extra   ex     ENDIF     Filling of continents       if keyword_set realcont  then if realcont EQ 1 then mask   1b     if n_elements mask  NE 1 then BEGIN   If mask 1 we gap it          if NOT keyword_set cont_nofill  then BEGIN     mask filling           case 1 of           keyword_set realsection :drawsectionbottom  mask  xm  ym                 CONT_NOFILL   cont_nofill  CONT_COLOR   cont_color  _EXTRA   ex           usetri GE 1:BEGIN             if n_elements trimsk  eq 0 then trimsk   trichamp             IF size xm   N_DIMENSIONS  EQ 1 THEN xm   xm replicate 1   size mask 2              IF size ym   N_DIMENSIONS  EQ 1 THEN ym   replicate 1   size mask 1 ym             contour   1b mask  fltarr more   xm  fltarr more                     ym  fltarr more  LEVELS   0 5   OVERPLOT   FILL                   C_COLORS   cont_color  TRIANGULATION   trimsk  _extra   ex             IF keyword_set forplt  THEN                 completecointerre  COINMONTE   coinmontemask                   COINDESCEND   coindescendmask  INDICEZOOM   indicezoommask                   CONT_COLOR   cont_color  _EXTRA   ex               ELSE fillcornermask  xm  0  ym 0    COINMONTE   coinmontemask                   COINDESCEND   coindescendmask  CONT_COLOR   cont_color  _extra   ex           END           ELSE:BEGIN              IF size xm   n_dimensions  EQ 2 THEN xm   xm  0              IF size ym   n_dimensions  EQ 2 THEN ym   reform ym 0                contour  1b mask  xm  ym  LEVELS   0 5   OVERPLOT                    FILL  C_COLORS   cont_color  _EXTRA   ex           END         ENDCASE       ENDIF                       NOT keyword_set cont_nofill      IV  Trace coast in traits         case 1 of         keyword_set realsection  AND NOT keyword_set cont_nofill :               keyword_set realsection  AND keyword_set cont_nofill :             drawsectionbottom  mask  xm  ym               CONT_NOFILL   cont_nofill  _extra   ex          keyword_set forplt  AND  map projection GT 0 OR key_irregular              OR keyword_set nan :tracecote  _extra   ex         ELSE:tracemask  mask  xm  ym  _extra   ex       endcase                         ENDIF                         n_elements mask  NE 1   ENDIF     draw the triangulations     if keyword_set desstrichamp  then       dessinetri  trichamp  x  y  color   colortrichamp  thick   th_trichamp   if keyword_set desstrimask  then       dessinetri  trimsk  xm  ym  color   colortrimask  thick   th_trimask   if keyword_set desstrinan  then       dessinetri  trinan  x  y  color   colortrinan   if keyword_set drawpoints  then       tracegrille  x  y  color   colorpoints     fini:   IF keyword_set key_performance  THEN print   temps pltbase  systime 1 tempsun     return end"); 
     248a[246] = new Array("./ToBeReviewed/MATRICE/colle.html", "colle.pro", "", "     file_comments    This concatenation function exist in IDL so long    as we do not try to stick with a dimension superior or equal at 4         categories utilities      param a0  in required       param a1  in required       param a2  in required       param a3  in required       param a4  in required       param a5  in required       param a6  in required       param a7  in required       param a8  in required       param a9  in required       param a10  in required       param a11  in required       param a12  in required       param a13  in required       param a14  in required       param a15  in required       param a16  in required       param a17  in required       param a18  in required       param a19  in required       param a20  in required       keyword SAUVE mot cle qui force a sauvegarder le tableau de           pointeur et les tableaux a coller       returns res matrice resultat      examples 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      history Sebastien Masson  smasson lodyc jussieu fr                          13 1 98      version  Id: colle pro 142 2006 07 21 12:47:49Z navarro       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     We put in place ptrtab and direc in function of input arguments      case 1 of       n_params  EQ 2:BEGIN       case where we directly give the pointer array          ptrtab   a0          direc   a1          if NOT keyword_set sauve  then undefine  a0   on recuperate the number of array to be pasted           nbretab    size ptrtab 1        end       n_params  GT 2:BEGIN   on recuperate the number of array to be pasted           nbretab   n_params 1          bidon   execute direc   a strtrim n_params 1  2    We write the pointer array whose each element point on an array           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 on the direct s value       case direc of       1:BEGIN                     we paste following the 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                     we paste following the 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                     we paste following the 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    We transpose res in order to put the dimension to be pasted number 1   To this  we contain the permuter vector which give the place that dimension    in the transposed matrix must take          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   we paste following the dimension 1on 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     "); 
     249a[247] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", "        file_comments    Create a bar graph  or overplot on an existing one       categories    Graphics      param Values  in required     A vector containing the values to be represented by the bars    Each element in VALUES corresponds to a single bar in the   output       keyword 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       keyword 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       keyword 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       keyword TITLE    A string containing the main title to for the bar plot       keyword XTITLE    A string containing the title for the X axis       keyword YTITLE    A string containing the title for the Y axis       keyword 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       keyword 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       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       keyword 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       keyword OUTLINE    If set  this keyword specifies that an outline should be   drawn around each bar       keyword OVERPLOT    If set  this keyword specifies that the bar plot should be   overplotted on an existing graph       keyword BACKGROUND    A scalar that specifies the color index to be used for   the background color   By default  the normal IDL background   color is used       keyword 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       examples 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       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       Id: bar_plot pro 142 2006 07 21 12:47:49Z navarro       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"); 
     250a[248] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt.html", "plt.pro", "", "             file_comments    Draw horizontal graph  map       categories    graphic      param TAB1  in required     The field whose we want to make the horizontal map can be 2 kind of thing:           1  an array  if needed  its mean along the z and t direction           will be automatically performed            2  a structure respecting all criterions specified by           litchamp pro  cf  IDL  xhelp litchamp         param PARAM2  in optional default min of tab1  on ocean points     Min value we want to consider in the contour s drawing            Note: Could also be the type of plot that can be only  xy  for plt      param PARAM3  in optional default max of tab1  on ocean points     Max value we want to consider in the contour s drawing            Note: if param2 is defined as  xy  then param3 is used to define the min  see param2       param PARAM4  in optional default xy     Type of plot  can be only  xy  for plt            Note: if param2 is defined as  xy  then param4 is used to define the max  see param3       keyword BOXZOOM    Vector indicating the geographic zone on which we want to cut the map      If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  0  max gdept  gdepw    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 are global variables defined at the last domdef       keyword REALCONT    Allow to draw continents defined in IDL  REALCONT can have 2 form:              REALCONT: we draww continents in place of the mask             REALCONT 2 we draw cnotinents s contour over the mask  this allows                         to see if the mask correspond at real continents       keyword CONTINTERVALLE    When CONTOUR is activated  it is the value between 2 isolines    traced by a trait  So it can be different from the one specified by INTERVALLE which     in this case  does not control colored isolines in color anymore  If there is noone    specified min  we choose a contour min which goes well with the specified interval     If this keyword is not specified  we trace 20 isolines from the min to the max        keyword CONTLABEL    It is an integer n  When CONTOUR is actvated  if n   is different of 0  choose the label type corresponding to n cases for    the traced by a traitisolines  To specify the type of label of the    colored contour  use LABEL      keyword CONTMAX    When CONTOUR is activated  max value we want to consider in the isoline    traced by a trait s line  By default  we take the max  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTMIN    When CONTOUR is activated  min value we want to consider in the isoline    traced by a trait s line  By default  we take the min  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword GRIDTYPE  U T V W  or  F  to specify possibly the grid on wiche the field is joined    Comment: In this case  we should use a structure like field       keyword INTERVALLE    Value of an internal between to isoline  If there is none specified min     we choose a min contour which goes well with the specified interval  If this keyword is not    specified  we trace 20 isoline from the min to the max  Comment: When CONTOUR is activated     INTERVALLE only specify the interval between 2 colored isoline  To specify the interval    between 2 isolines traced by a trait  use CONTINTERVALLE       keyword INV    Invert the color vector used to color the graph                   without use the black  the white and the used palette        keyword LABEL    It is an integer n  If n different of 0  it choose the label s type    corresponding to cases n  cf label pro   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines     For tese one traced by a trait  use CONTLABEL       keyword MAP    We use it when we want to do a projection    This keyword can be of two types:       MAP P0lat P0lon Rot  For the descrption of these 3 values  see the online help of MAP_SET         MAP: In this case  map is automatically caculated have the value:             map    0   lon1 lon2 2  0    Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo:   IDL  demo   Then choose earth sciences and  mapping    Comment2: By default it  is a cindrical projection which is effectuated  with or without the keyword map     If we want an other projection  MAP must be activated and we have to add the keyword:  nom_projection    For example  for a polar projection centered on the south pole:   IDL  domdef 180 180 90 45   IDL  plt  tab   stereo map 90 0 0       keyword LABMAP    Corresponds to label keywords of map_set  Defaut         definition is labmap 1        keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword NLEVEL    Number of contour to draw by default  20  active if   LABEL 0 or is not specified       keyword NOTRI    To force not to use the triangulation  Beware  in this case  the    drawing only works if the grid is undeformed  It means that each point of a longitude    give one latitude and each point of a latitude give one longitude  exept if we use    the keyword CELL_FILL 2     Comment: if the field contain points  values f_nan  then we even do a triangulation       keyword OVERPLOT    To make a plot over an other one     Comment: Contrarily to the use of CONTOUR or VECTEUR  the use of this keyword    does not the caption and or the color bar       keyword STRICTFILL    Activate this keyword to that the filling of contours be    precisely done between the min and the max specified letting values inferior at the    specified min and values superior at the specified max in white       keyword STYLE    Contour s style to adopt to draw isolines by default  style 0  see style pro       keyword VECTEUR   It is a structure composed by 2 elements containing the 2 fields U   and V of values of the zonal and meridian component of the vector of the fields   to draw  These fields can be an array or a structure          For example: vecteur matriceu:lec unsurface matricev:lec vnsurface          Comment: name of elements of vectors are inconsenquential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword _EXTRA   used to pass your keywords       keyword CONT_NOFILL          Activate it not to fill the point mask to let them transparent     Comment: Nevertheless  we trace mask s contour        keyword USETRI   To force using triangulation        keyword MASKFILL        keyword DUPLICATE      keyword DECIMATETRI      uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr    7 1999   Sebastien Masson 08 02 2000 checkfield and   notri keyword  or triangule    1          version    Id: plt pro 142 2006 07 21 12:47:49Z navarro         todo seb    Changer param  tab1 keyword  REMPLI   UNLABSUR   UNSUR2     UNVECTSUR  quelques trucs dans la routine          pro plt  tab1  param2  param3  param4  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             To key_performance       I  preparation of the graphic environment and small verifications        I1  verification of the grid s type associated to 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  Reading of the field and checkup      if keyword_set boxzoom  AND n_elements contour  ne 4  then BEGIN     savedbox   1b     saveboxparam   boxparam4plt dat    END   if n_elements param2  NE 0 then type   param2   if n_elements param3  NE 0 then min   param3   if n_elements param4  NE 0 then max   param4   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 field    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  reinitialization   p x y    Comment: We do not reinitializate when we call bck plt in loop to use contour      if n_elements contour  ne 4 AND NOT keyword_set overplot  then reinitplt   z   invert     I4  attribution of the mask and of longitude and latitude arrays      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 field    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 of the mi:min and of the ma:max of z2d in the same way    as max: max and min: min for the drawing      masknan   finite z2d    nan   total masknan  NE n_elements z2d     Do we need to do an 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   We do an autoscale if needed    if autoscale then autoscale  min  max  intervalle       II  We put the drawing in its place on the window or the page    and possible opening of the window or of the 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  Covering of the drawing  labels style axis            III1  Choice of 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  Choice of 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 of axis     if NOT keyword_set overplot  THEN axe   xy  _EXTRA   ex         IV  Drawing         extrapolation of field on lands and setup of min  max values     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      If we make a drawing in depth  we redifine a triangulation    on the zoom   this triangulation will be used to trace the    field  We use tmask in order to holes of this triangulation    are the same than these used for the mask and correspond to    holes there is in this new depth    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: For the drawing of the coast be clean  we try to take additionally    points for the land  Like that  we do not see grid s gap  It is what decoupeterre    do  We profit of it to redefine trimsk      decoupeterre  mask  glammsk  gphimsk  type    xy          TRI   trimsk  usetri   usetri  indicezoom   indicezoommask           coinmonte   coinmontemask  coindescend   coindescendmask           _EXTRA   ex   ENDELSE     IV1  Choice of type of drawing      typetrace    classique    if keyword_set map  AND key_onearth then BEGIN    Call of  mapset when we want to do 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   To axes of coordinates be considerated      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   In this case  triangulation is closed in x and cover all the sphere     We have to cut it at the level where we cut the sphere to make the drawing        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  Contours and coloring     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         To 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  Recall of plt in loop when contour is activated      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  Small functions           V1  Possible add of vectors in double exposure      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 the line of change of date  the equator and the greenwich meridian        if NOT keyword_set map  AND key_onearth then meridienparallele   xy      V3  To trace IDL s continents     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  caption   display of these      legende  mi  ma   xy  CONTOUR   pourlegende  VECTLEGENDE   vectlegende  INTERVALLE   intervalle  DIREC   direc  _EXTRA   ex   if n_elements ex  NE 0 then BEGIN    To keep frame s axes in black     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  Colorbar      colnumb   colnumb 0:ncontour 1 keyword_set strictfill    barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                     position   posbar  _extra   ex       VI  Possible print      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  "); 
     251a[249] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt1d.html", "plt1d.pro", "", "         file_comments   Trace 1d graphes: x y z  or t but in this case  we recall directly pltt       categories   Graphics      param TAB  in required     The field whose we want to make the hovmoller map can be 2 kind of thing:  1  An array which can be:              2d  3d or 4d:  array xy  xyz  xyt or xyzt  In this case  the array will pass             in moyenne or grossemoyenne to be averaged and becomme  an array 1d                1d:Nevertheless  the type must be specified in order to we know which trace             it is about  To have a correct caption  respecify the  xctraction zone via BOXZOOM          2  a structure respecting all criterions specified by litchamp pro              See IDL  xhelp litchamp  The array contained in the structure             respecting criterions of case 1        param PARAM2  in required     Min value we want to consider in the contour s drawing    Note: could also be the type of plot: x y z         param PARAM3  in optional default min max of tab  on ocean points     Max value we want to consider in the contour s drawing    Note: if param2 is defined as  x y z  then param3 is used to define the min  see param2       param PARAM4  in optional default max of tab  on ocean points     Type of plot  can be only  x y z  for plt1d    Note: if param2 is defined as  xy  then param4 is used to define the max  see param3       keyword BOXZOOM   Vector indicating the geographique zone  3d  on which the extraction of the field must    be done to do the hovmoeller     If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  vert1  vert2    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef       keyword COL1d     OBSOLETE Color number when we make a trace 1d by default  0 It is better to use the    keyword COLOR used by plot       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates       keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword OV1D   Allow the double exposure of an 1d curve to a precedent 1d trace       keyword REVERSE_X    To invert the x axis  so as the drawing       keyword REVERSE_Y    To invert the y axis  so as the drawing       keyword SIN    Activate this keyword if we want the x axis to be traced in sinus of the    latitude when we make a drawing f y       keyword STY1D     OBSOLETE    Number of the style used when we make a 1d drawing  We should better use the    keyword LINESTYLE which is tho one of the plot  Beware  this keyword is still    useful if we want to d bars instead of curves  put sty1d bar       keyword TYPEIN   allows to specify the type of hovmoller we want to do                xt yt zt t      with help of a keyword rather than the argument type  If the argument andthe    keyword are specified in the same time  it is the value specified by the    keyword which is retained       keyword _EXTRA    used to pass your keywords      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      version     Id: plt1d pro 142 2006 07 21 12:47:49Z navarro             pro plt1d  tab  param2  param3  param4  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     1st part: initialization small calculations          verification of the type s value       if n_elements param2  NE 0 then type   param2   if n_elements param3  NE 0 then min   param3   if n_elements param4  NE 0 then max   param4   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  reinitialization   p x y    Comment: We do not reinitializate when we call back plt1d     if NOT keyword_set ov1d  then reinitplt     I1  Reading of the field      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   We build the mask  For this  the array must be hidden  Automaticaly done at valmask    value if we pass in moyenne or 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 of the min and of the max after the average     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       2nd part: Drawing       definition of the abscisse and ordinate vectors    The triangulation is defined in order to the drawing be done from the    left bottom to the right up  So the matrix have to be shown like this     from which some transpose and 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 of 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       drawing       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  If we want to make bars     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    To have a black frame         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    To have a 0 colored frame and trace a line at 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   Add of an axis in the case where we use endpoints     if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex   Trace a line at 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       3rd part: Possible print      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  "); 
     252a[250] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltbase.html", "pltbase.pro", "", "             file_comments   Overlayer contour to trace a field which can be mask     Elementary brick of plt  pltz et pltt       categories graphic      param Z2D  in required    The table to trace      param X  in required    Axis  Vector or array of the same size that z2d  This is the coordinate of z2d on x       param Y  in required    Axis  Vector or array of the same size that z2d  This is the coordinate of z2d on y       param MASK  in required    It is the array who mask z2d  with 0s on points we want to mask and 1s on others     If z2d is not masked  put this argument equal to 1       param XM  in required    Axis of the mask  Vector or array of the same size that mask     This is the coordinate of mask on x       param YM  in required    Axis of the mask  Vector or array of the same size that mask     This is the coordinate of mask on y       param LEVELS  in optional    Vectors which contain levels needed at the contour     If it is not given  we take 20 levels between the min and the max         param COLORS  in optional    Vectors which contain colors needed at the contour     If it is not given  we take 20 levels between the min and the max       keyword COLORTRICHAMP    The color we want to use to draw the triangulation which is used to make contours of the field       keyword COLORTRIMASK    The color we want to use to draw the triangulation which is used to make contours of the mask       keyword COLOR_C    To draw the contour in color instead of in black   with filling in color       keyword  CONT_NOFILL    Activate it not to fill the point mask to let them transparent     Comment: Nevertheless  we trace mask s contour       keyword CONT_COLOR    The color of the continent  defaut value is           d n_colors   1   white      keyword  DESSTRICHAMP    To draw the triangulation which is used to make field s contours        keyword  DESSTRIMASK    To draw the triangulation which is used to make mask s contours        keyword  FORPLT    To activate if we want that the drawing of coast be realized by tracecote rather than tracemask       keyword I_COLORS    It is a vector specifing the colors to use to trace contours     It is the same thing that c_colors which act on contours       keyword MORE    Number to give to avoid style s bugs:      Out of range subscript encountered:        Execution halted at:  PLTBASE           151               By default more 10 If the bug still exist  increase the value of more      The explanation and the justification of this method do not have scientific bases yet       keyword  NOFILL   To make just isolines       keyword  NOCONTOUR   To make just colors       keyword  UNSUR2 To trace one isoline on two       keyword UNLABSUR    Is an integer n  specifying we only label one contour on two      keyword CONTOUR    To be used since plt  pltz or pltt   Have a look on these routines       keyword _EXTRA    Used to pass your keywords      uses   common pro      restrictions   In the case of z2d  x and y are arrays of same size  we hate to put them as vectors: z2d  x  y       history    Sebastien Masson  smasson lodyc jussieu fr        8 2 2000 check if the tri array is not equal to    1  allow contour with out using a triangulation        version    Id: pltbase pro 142 2006 07 21 12:47:49Z navarro        todo seb L 172   173           PRO pltbase  z2d  x  y  mask  xm  ym  levels  colors  UNSUR2   unsur2  CONTOUR   contour                  NOCONTOUR   nocontour  NOFILL   nofill                  TRICHAMP   trichamp  TRIMSK   trimsk                  REALCONT   realcont  NAN   nan  usetri   usetri                  COLORTRICHAMP   colortrichamp  COLORTRIMASK   colortrimask                  COLORTRINAN   colortrinan                  COLORPOINTS   colorpoints  DRAWPOINTS   drawpoints                  TH_TRICHAMP   th_trichamp  TH_TRIMASK   th_trimask                  DESSTRICHAMP   desstrichamp  DESSTRIMASK   desstrimask                  DESSTRINAN   desstrinan  COLOR_C   color_c                  I_COLORS   i_colors   CONT_COLOR   CONT_COLOR                  CONT_NOFILL   cont_nofill  UNLABSUR   unlabsur                  COINMONTEMASK   coinmontemask  COINDESCENDMASK   coindescendmask                  COINMONTENAN   coinmontenan  COINDESCENDNAN   coindescendnan                  INDICEZOOMMASK   indicezoommask  INDICEZOOMNAN   indicezoomnan                  MASKNAN   masknan  TRINAN   trinan                  FORPLT   forplt  REALSECTION   realsection                  MORE   more  EXCHANGE_XY   exchange_xy                  _EXTRA   ex       compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       Explanation concerning contour  This keyword is activated when we trace a    colored contour different from the one with black trait    If it is activated  case n_elements contour  NE 0  we pass 2 time in pltbase:     1  We trace colors then we leave  it is the case:           n_elements contour  NE 0 AND n_elements contour  NE 4      2  We trace contours in traits then continents  it is the case:            n_elements contour  NE 0 AND n_elements contour  EQ 4        tempsun   systime 1             To key_performance   if n_elements mask  EQ 0 then mask   1b   if n_elements masknan  EQ 0 then masknan   1b   IF total mask  EQ n_elements z2d  THEN mask   1b     If levels and colors aren t given     if n_params  EQ 4 then        label  0  min z2d mask  max z2d mask  ncontour  levels  colors   attention bidouille inexplicable pour que tout se passe bien avec les   postcript ds pltz    if n_elements contour  LE 4 AND  x type EQ 0 THEN       plot   0   0  xstyle   5  ystyle   5   nodata   noerase  title     subtitle         Is cell_fill is a part of _extra  we desactive it if it is nt equal to 2     IF chkstru ex   CELL_FILL  THEN BEGIN      cell_fill   ex CELL_FILL     if ex CELL_FILL NE 2 then ex CELL_FILL   0   ENDIF ELSE cell_fill   0            I  Filling of contours in palette colors      if NOT keyword_set more  then more   10   if NOT keyword_set nofill  AND NOT keyword_set color_c  then begin     if n_elements contour  NE 4 THEN BEGIN        if usetri EQ 2 then BEGIN         IF size x   n_dimensions  EQ 1 THEN x   x replicate 1   size z2d 2          IF size y   n_dimensions  EQ 1 THEN y   replicate 1   size z2d 1 y         contour   z2d  fltarr more   x  fltarr more                 y  fltarr more  levels   levels  c_color   colors                noerase   fill  TRIANGULATION   trichamp  _extra   ex         ENDIF ELSE BEGIN         IF size x   n_dimensions  EQ 2 THEN x   x  0          IF size y   n_dimensions  EQ 2 THEN y   reform y 0            contour  z2d  x  y  levels   levels  c_color   colors   noerase                fill  _extra   ex        ENDELSE     ENDIF   ENDIF   if n_elements contour  NE 0 AND n_elements contour  NE 4 THEN GOTO  fini    IF chkstru ex   C_ORIENTATION  THEN ex   extractstru ex   C_ORIENTATION    IF chkstru ex   C_SPACING  THEN ex   extractstru ex   C_SPACING    IF chkstru ex   C_COLORS  THEN ex   extractstru ex   C_COLORS      II  Drawing of contours in traits     if n_elements contour  EQ 4 OR n_elements contour  EQ 0 THEN BEGIN     we put the masked values to NaN       IF  n_elements mask  GT 1 OR n_elements masknan  GT 1          AND NOT keyword_set cont_nofill  THEN BEGIN         tonan   where mask masknan  EQ 0  count        tonan   where remplit mask masknan  nite   1  mask   mask masknan                                  basique  fillval   0                                 fillxdir   keyword_set realsection  EQ 0  count        IF count NE 0 THEN z2d temporary tonan     values f_nan     ENDIF        We do not pass if we have to make differents contours    In the case of unsur2 is activated  we reduce levels     if NOT keyword_set nocontour  then begin       IF keyword_set unsur2  THEN levels   levels where zeroun n_elements levels    eq 1    Is unlabsur activated   Does C_LABEL passed via _EXTRA        if keyword_set unlabsur  THEN IF chkstru ex   C_LABELS  THEN           ex C_LABELS   1 indgen n_elements ex C_LABELS  MOD unlabsur    1      Not to fill when cell_fill is imposed        IF chkstru ex   CELL_FILL  THEN ex CELL_FILL   0         CASE 1 OF         keyword_set color_c :c_colors   colors         keyword_set i_colors :c_colors   i_colors         ELSE:       ENDCASE         IF usetri EQ 2 THEN BEGIN          IF size x   n_dimensions  EQ 1 THEN x   x replicate 1   size z2d 2          IF size y   n_dimensions  EQ 1 THEN y   replicate 1   size z2d 1 y         contour   z2d  fltarr more   x  fltarr more                 y  fltarr more  levels   levels               overplot   1 keyword_set nofill  noerase   keyword_set nofill                c_colors   c_colors  TRIANGULATION   trichamp  _extra   ex       ENDIF ELSE BEGIN         IF size x   n_dimensions  EQ 2 THEN x   x  0          IF size y   n_dimensions  EQ 2 THEN y   reform y 0            contour  z2d  x  y  levels   levels               overplot   1 keyword_set nofill  noerase   keyword_set nofill                c_colors   c_colors  _extra   ex       ENDELSE     ENDIF     III  Filling of colored continents        IF chkstru ex   CELL_FILL  THEN ex CELL_FILL   cell_fill   1     IF chkstru ex   LEVELS  THEN ex   extractstru ex   LEVELS      IF chkstru ex   NODATA  THEN ex   extractstru ex   NODATA      IF NOT keyword_set cont_color  THEN cont_color    d n_colors 1     255         If there is points at NaN    We trace points in white at NaN bafore drawing coasts with a trait        if keyword_set trinan  THEN BEGIN       IF size x   n_dimensions  EQ 1 THEN x   x replicate 1   size masknan 2        IF size y   n_dimensions  EQ 1 THEN y   replicate 1   size masknan 1 y       contour   1b masknan  fltarr more   x  fltarr more               y  fltarr more  levels   0 5   overplot   fill             c_colors   cont_color  TRIANGULATION   trinan  _extra   ex       IF keyword_set forplt  THEN           completecointerre  COINMONTE   coinmontenan             COINDESCEND   coindescendnan  INDICEZOOM   indicezoomnan             CONT_COLOR   cont_color  _EXTRA   ex         ELSE fillcornermask  x  0  y 0    COINMONTE   coinmontenan             COINDESCEND   coindescendnan  CONT_COLOR   cont_color  _extra   ex     ENDIF     Filling of continents       if keyword_set realcont  then if realcont EQ 1 then mask   1b     if n_elements mask  NE 1 then BEGIN   If mask 1 we gap it          if NOT keyword_set cont_nofill  then BEGIN     mask filling           case 1 of           keyword_set realsection :drawsectionbottom  mask  xm  ym                 CONT_NOFILL   cont_nofill  CONT_COLOR   cont_color  _EXTRA   ex           usetri GE 1:BEGIN             if n_elements trimsk  eq 0 then trimsk   trichamp             IF size xm   N_DIMENSIONS  EQ 1 THEN xm   xm replicate 1   size mask 2              IF size ym   N_DIMENSIONS  EQ 1 THEN ym   replicate 1   size mask 1 ym             contour   1b mask  fltarr more   xm  fltarr more                     ym  fltarr more  LEVELS   0 5   OVERPLOT   FILL                   C_COLORS   cont_color  TRIANGULATION   trimsk  _extra   ex             IF keyword_set forplt  THEN                 completecointerre  COINMONTE   coinmontemask                   COINDESCEND   coindescendmask  INDICEZOOM   indicezoommask                   CONT_COLOR   cont_color  _EXTRA   ex               ELSE fillcornermask  xm  0  ym 0    COINMONTE   coinmontemask                   COINDESCEND   coindescendmask  CONT_COLOR   cont_color  _extra   ex           END           ELSE:BEGIN              IF size xm   n_dimensions  EQ 2 THEN xm   xm  0              IF size ym   n_dimensions  EQ 2 THEN ym   reform ym 0                contour  1b mask  xm  ym  LEVELS   0 5   OVERPLOT                    FILL  C_COLORS   cont_color  _EXTRA   ex           END         ENDCASE       ENDIF                       NOT keyword_set cont_nofill      IV  Trace coast in traits         case 1 of         keyword_set realsection  AND NOT keyword_set cont_nofill :               keyword_set realsection  AND keyword_set cont_nofill :             drawsectionbottom  mask  xm  ym               CONT_NOFILL   cont_nofill  _extra   ex          keyword_set forplt  AND  map projection GT 0 OR key_irregular              OR keyword_set nan :tracecote  _extra   ex         ELSE:tracemask  mask  xm  ym  _extra   ex       endcase                         ENDIF                         n_elements mask  NE 1   ENDIF     draw the triangulations     if keyword_set desstrichamp  then       dessinetri  trichamp  x  y  color   colortrichamp  thick   th_trichamp   if keyword_set desstrimask  then       dessinetri  trimsk  xm  ym  color   colortrimask  thick   th_trimask   if keyword_set desstrinan  then       dessinetri  trinan  x  y  color   colortrinan   if keyword_set drawpoints  then       tracegrille  x  y  color   colorpoints     fini:   IF keyword_set key_performance  THEN print   temps pltbase  systime 1 tempsun     return end"); 
    253253a[251] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltsc.html", "pltsc.pro", "", "       todo seb     PRO  pltsc tab1 tab2  min1  max1  min2  max2  varname2  BOXZOOM   boxzoom               COL1D col1d STY1D sty1d OV1D ov1d  _extra   ex     scatter plot  inspired from plt1d        compile_opt idl2  strictarrsubs        include common  cm_4mesh  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF      Comment: We do not reinitializate when we call back pltsc    if NOT keyword_set ov1d  then reinitplt      reduce data xyzt domain     if keyword_set boxzoom  then BEGIN       Case 1 Of        N_Elements Boxzoom  Eq 1:bte    lon1  lon2  lat1  lat2  0  boxzoom 0         N_Elements Boxzoom  Eq 2:bte    lon1  lon2  lat1  lat2  boxzoom 0  boxzoom 1         N_Elements Boxzoom  Eq 4:bte    Boxzoom  vert1  vert2         N_Elements Boxzoom  Eq 5:bte    Boxzoom 0:3  0  Boxzoom 4         N_Elements Boxzoom  Eq 6:bte   Boxzoom        Else: Begin          ras   report Wrong Definition of Boxzoom            return        End      endcase      savedbox   1b      saveboxparam   boxparam4pltsc dat       domdef  bte  GRIDTYPE   vargrid    ENDIF    extract indexes to plot     indexm   where tab1 LE valmask 10     tab1   tab1 indexm     tab2   tab2 indexm      npts    size indexm 1     deal with  min and max of plot    IF finite min1  EQ 0 THEN min1   min tab1     IF finite max1  EQ 0 THEN max1   max tab1     IF finite min2  EQ 0 THEN min2   min tab2     IF finite max2  EQ 0 THEN max2   max tab2         init plot if not overlay        IF NOT keyword_set ov1d  THEN placedessin   yfx  posfenetre  posbar        contour   contour  _extra   ex    yy   tab1    xx   tab2    axis range     x range    min2 abs max2 min2 5 max2 abs max2 min2 5      y range    min1 abs max1 min1 5 max1 abs max1 min1 5      IF  NOT keyword_set sty1d  THEN sty1d   0    IF  NOT keyword_set col1d  THEN col1d   0    IF  NOT keyword_set ov1d  THEN  BEGIN        legende  min1  max1   yfx  VARNAME2   varname2  NPTS   npts  _EXTRA   ex          plot xx yy  background   255  psym   sty1d 1  color col1d  thick 2            title     subtitle    _extra   ex        if n_elements ex  NE 0 then BEGIN    To have a 0 colored frame and trace a line at 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        ENDIF        plot   x range   0  0   noerase   nodata  xstyle   1  ystyle   1  _extra   ex   trace a line at 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       3rd part: Possible print     fini:    terminedessin  _extra   ex   if keyword_set savedbox  THEN restoreboxparam   boxparam4pltsc dat       if n_elements key_performance  NE 0 then       IF key_performance EQ 1 THEN print   temps plt1d  systime 1 tempsun           return end  "); 
    254 a[252] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltt.html", "pltt.pro", "", "         file_comments    Trace hovmoller graphs: xt yt zt t      categories Graphics      param TAB  in required     The field whose we want to make the hovmoller map can be 2 kind of thing:  1  An array which can be:              3d or 4d: array   xt yt zt t  The last component is the time  In this case  the array will               pass in grossemoyenne to be averaged and become an 1d or 2d array               2d: If the array is already 2d  it is not modified  beware  lands must               be masked at the value valmask  and nevertheless type must be specified               to we know of which trace it is about               To have a correct caption  respecify the  xctraction zone via BOXZOOM               1d: only for traces of the  t  type  Nevertheless  type must be specified               to we know of which trace it is about               To have a correct caption  respecify the  xctraction zone via BOXZOOM          2  a structure respecting all criterions specified by litchamp pro              See IDL  xhelp litchamp  The array contained in the structure             respecting criterions of case 1         PARAM:          MAX: valeur maximum que l on veut prendre en compte dans le trace   des contours  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   des contours  Par defaut on prend le min de tableau  sur les pts   mer            DATMIN: c est la borne inf de l axe temporel  c est un         longinteger de la forme yyyymmdd  ou bien yymmdd            DATMAX: c est la borne max de l axe temporel  c est un         longinteger de la forme yyyymmdd  ou bien yymmdd       keyword BOXZOOM   Vector indicating the geographique zone  3d  on which the extraction of the field must    be done to do the hovmoeller     If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  vert1  vert2    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef       keyword CONTINTERVALLE    When CONTOUR is activated  it is the value between 2 isolines    traced by a trait  So it can be different from the one specified by INTERVALLE which     in this case  does not control colored isolines in color anymore  If there is noone    specified min  we choose a contour min which goes well with the specified interval     If this keyword is not specified  we trace 20 isolines from the min to the max        keyword CONTLABEL    It is an integer n  When CONTOUR is actvated  if n   is different of 0  choose the label type corresponding to n cases for    the traced by a traitisolines  To specify the type of label of the    colored contour  use LABEL      keyword CONTMAX    When CONTOUR is activated  max value we want to consider in the isoline    traced by a trait s line  By default  we take the max  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTMIN    When CONTOUR is activated  min value we want to consider in the isoline    traced by a trait s line  By default  we take the min  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of pltt       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates        keyword EXCHANGE_XY   Allows to invert axes        keyword FILTER   Apply a slippery average of width FILTER       keyword INTERVALLE    Value of an internal between to isoline  If there is none specified min     we choose a min contour which goes well with the specified interval  If this keyword is not    specified  we trace 20 isoline from the min to the max  Comment: When CONTOUR is activated     INTERVALLE only specify the interval between 2 colored isoline  To specify the interval    between 2 isolines traced by a trait  use CONTINTERVALLE       keyword INV    Invert the color vector used to color the graph                   without use the black  the white and the used palette        keyword LABEL    It is an integer n  If n different of 0  it choose the label s type    corresponding to cases n  cf label pro   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines     For tese one traced by a trait  use CONTLABEL        keyword COL1d    OBSOLETE Color number when we make a trace 1d by default  0 It is better to use the    keyword COLOR used by plot       keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword NLEVEL    Number of contour to draw by default  20  active if   LABEL 0 or is not specified       keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword OV1D    Allows to overprint a 1d curve over a precedent 1d drawing       keyword OVERPLOT    To make a plot over an other one     Comment: Contrarily to the use of CONTOUR or VECTEUR  the use of this keyword    does not the caption and or the color bar       keyword STRICTFILL    Activate this keyword to that the filling of contours be    precisely done between the min and the max specified letting values inferior at the    specified min and values superior at the specified max in white       keyword STYLE    Contour s style to adopt to draw isolines by default  style 0  see style pro       keyword STY1D     OBSOLETE    Number of the style used when we make a 1d drawing  We should better use the    keyword LINESTYLE which is tho one of the plot  Beware  this keyword is still    useful if we want to d bars instead of curves  put sty1d bar       keyword TREND_TYPE   Modify field by calling trends pro      keyword TYPEIN   allows to specify the type of hovmoller we want to do                xt yt zt t      with help of a keyword rather than the argument type  If the argument andthe    keyword are specified in the same time  it is the value specified by the    keyword which is retained       uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr   27 5 98                         Jerome Vialard  adapting plt to hovmoller drawing                          2 7 98                         Sebastien Masson 14 8 98  continents barres                          15 1 98   Adaptation for arrays 3 and 4d to the average be done in pltt rather than during the reading                          Sebastien Masson 14 8 98                          7 1999                          Eric Guilyardi 29 7 99 FILTER  TREND_TYPE                          REPEAT_C                          Sebastien Masson 08 02 2000 checkfield and                         usetri keyword        version     Id       todo seb: L 24   36  L 426   427  L  492   493         pro pltt tab giventype givenmin givenmax datmin datmax BOXZOOM   boxzoom  CONTOUR contour             ENDPOINTS endpoints INTERVALLE intervalle INV inv              CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel             STYLE style  CONTMAX contmax             CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel             COL1D col1d STY1D sty1d  MININ   minin  MAXIN   maxin             OV1D ov1d  FILTER   filter  TREND_TYPE   trend_type             REPEAT_C   repeat_c  TYPEIN   typein  XT   XT  YT   YT  ZT   zt              TT   tt  STRICTFILL   strictfill  OVERPLOT   overplot              EXCHANGE_XY   exchange_xy              _extra   ex     include common     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     I2  reinitialization   p x y    Comment: we do not reinitializate when we call back plt in loop to use contour       if n_elements contour  ne 4 AND NOT keyword_set overplot        AND NOT keyword_set ov1d  then reinitplt     I1  Reading of the field       if  keyword_set boxzoom  OR keyword_set endpoints         AND n_elements contour  ne 4 THEN BEGIN      savedbox   1b      saveboxparam   boxparam4pltt dat     ENDIF    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 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   pltt  TYPE   type  MIN   min  MAX   max          XT   XT  YT   YT  ZT   zt  TT   tt  ENDPOINTS   endpoints  _extra   ex      if keyword_set endpoints  then begin       section  tab  z2d  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        z2d   checkfield tab   pltt  TYPE   type  BOXZOOM   boxzoom                            direc   direc  _extra   ex        if z2d 0  EQ  1 then BEGIN          IF keyword_set savedbox  THEN restoreboxparam   boxparam4pltt dat          return       endif       grille  mask  glam  gphi  gdep  nx  ny nz    ENDELSE     Calculation of trend anomaly following TREND_TYPE       IF NOT keyword_set trend_type  THEN trend_type   0     IF trend_type GT 0 THEN z2d   trends z2d  trend_type  type       Filtering of fields in the  t  case         IF type EQ  t  AND keyword_set filter  THEN BEGIN        print       Applying a running mean filter of width  string filter  format    I3        z2d   smooth z2d  filter        z2d 0:filter 2 1    0        z2d size z2d 1 filter 2 1: size z2d 1 1    0     ENDIF       Repetition of the temporal series       IF NOT keyword_set repeat_c  THEN repeat_c   1     temps   time 0:jpt 1     IF repeat_c GT 1 THEN BEGIN       taille size z2d        CASE taille 0  OF          1: z2d   reform z2d replicate 1  repeat_c  taille 1 repeat_c           2: BEGIN             z2d   z2d replicate 1  repeat_c              z2d   reform z2d  taille 1  taille 2 repeat_c   over           END           ELSE:        ENDCASE       temps    temps   lindgen jpt REPEAT_c 1 1 temps 1 temps 0 temps jpt 1     ENDIF       Selection of graphic s type        taille size z2d     case taille 0  of       2 : typdes 2d        1 : begin          z1d z2d          typdes 1d           if keyword_set OV1D  then begin             yy   z2d             if n_elements datmin  NE 0 then tempsmin   date2jul datmin                ELSE tempsmin   temps 0    on shift l axe du temps pour des questions de precision sur les   dates du calendier julien en long qui sont passes en float ds les axes             xx   temps tempsmin              x range x range tempsmin              x tickv x tickv tempsmin   We do a false plot to apply these changes              plot 0   0 noerase xstyle 5  ystyle   5  title     subtitle     ytitle     xtitle                 goto  trace1d          endif       end   endcase   We build the mask  For that  the table must be masked  automaticaly done at the    value valmask if we pass in moyenne or grossemoyenne     nan   total finite z2d nan   z2d  not very nice when xgridstyle 2    same if xticklen 0 5  not very nice in the middle    so we draw   the top  right  axis by hand using axis          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   nodata   noerase  _extra   ex             xstyle   1 4 keyword_set endpoints  AND type EQ  xt  AND lat1 NE lat2 8 type EQ  yt  OR type EQ  zt              ystyle   1 4 keyword_set endpoints  AND type EQ  yt 8 type EQ  xt    call axis for the missing axis        IF type EQ  xt  AND NOT keyword_set endpoints  THEN BEGIN         if n_elements ex  NE 0 then              if  where tag_names ex  EQ  YTICKNAME 0  NE  1 then             ex YTICKNAME   replicate    n_elements ex YTICKNAME          axis  yaxis   1  ystyle   1  yticklen   0               ytickname   replicate     y ticks 1  _extra   ex       ENDIF       IF  type EQ  yt  OR type EQ  zt  AND NOT keyword_set endpoints  THEN BEGIN         if n_elements ex  NE 0 then              if  where tag_names ex  EQ  XTICKNAME 0  NE  1 then             ex XTICKNAME   replicate    n_elements ex XTICKNAME         axis  xaxis   1  xstyle   1  xticklen   0             xtickname   replicate     x ticks 1  _extra   ex       ENDIF   ajout d un axe ds le cas ou l on utilise endpoints       if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex     color bar         colnumb   colnumb 0:ncontour 1 keyword_set strictfill        barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                         position   posbar  _extra   ex      endif     1d   trace1d:    if  typdes eq  1d  then begin       if  not keyword_set col1d  then col1d   0       if keyword_set sty1d  then BEGIN  if we want to make bars          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   not very nice when xgridstyle 2  same if   xticklen 0 5  not very nice in the middle       so we draw the top axis by hand using axis           if n_elements ex  NE 0 then BEGIN    To have a black frame             if  where tag_names ex  EQ  COLOR 0  NE  1 then ex COLOR   0          ENDIF          plot   0   0   nodata   noerase                xstyle   1 8 1 keyword_set exchange_xy                 ystyle   1 8 keyword_set exchange_xy  _extra   ex   call axis for the missing axis           if n_elements ex  NE 0 then BEGIN    force tickname to blank array             if  where tag_names ex  EQ  YTICKNAME 0  NE  1 AND keyword_set exchange_xy  then ex YTICKNAME   replicate    n_elements ex YTICKNAME              if  where tag_names ex  EQ  XTICKNAME 0  NE  1 AND NOT keyword_set exchange_xy  then ex XTICKNAME   replicate    n_elements ex XTICKNAME           ENDIF          if keyword_set exchange_xy  then  axis  yaxis   1  ystyle   1                yticklen   0  ytickname   replicate     y ticks 1  _extra   ex            ELSE axis  xaxis   1  xstyle   1  xticklen   0                xtickname   replicate     x ticks 1  _extra   ex        ENDIF ELSE oplot  xx  yy  color   col1d  linestyle   sty1d  thick   2  _extra   ex    endif fini:     we reput time axis in IDL julian days and not in julian days count from tempsmin       if type EQ  xt  then BEGIN         y range y range tempsmin         y tickv y tickv tempsmin    ENDIF ELSE BEGIN         x range x range tempsmin        x tickv x tickv tempsmin    ENDELSE   We do a false plot to these values are considerated    plot   0   0   nodata   noerase  xstyle   5  ystyle   5          title     subtitle     ytitle     xtitle           3rd part: possible print        terminedessin  _extra   ex    if keyword_set savedbox  THEN restoreboxparam   boxparam4pltt dat       if n_elements key_performance  NE 0 then       IF key_performance EQ 1 THEN print   temps pltt  systime 1 tempsun           return end  "); 
    255 a[253] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltz.html", "pltz.pro", "", "             file_comments    Trace vertical graphs       categories    Graphics      param TAB    The field whose we want to make a vertical cut can be 2 kind of thing:           1  An 2d or 3d array             If the field is 2d  indicate  with the keyword BOXZOOM  geographic delineations of the boxzoom             If the field is 3d  we extract the section on we average possibly before to do the plot            2   a structure respecting all criterions specified by litchamp pro              See IDL  xhelp litchamp  The array contin in the structure must be 2 or 3d  See case 1      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 BOXZOOM    Vector indicating the geographic zone on which we want to cut the map      If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  0  max gdept  gdepw    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 are global variables defined at the last domdef       keyword CONTINTERVALLE    When CONTOUR is activated  it is the value between 2 isolines    traced by a trait  So it can be different from the one specified by INTERVALLE which     in this case  does not control colored isolines in color anymore  If there is noone    specified min  we choose a contour min which goes well with the specified interval     If this keyword is not specified  we trace 20 isolines from the min to the max        keyword CONTLABEL    It is an integer n  When CONTOUR is actvated  if n   is different of 0  choose the label type corresponding to n cases for    the traced by a traitisolines  To specify the type of label of the    colored contour  use LABEL      keyword CONTMAX    When CONTOUR is activated  max value we want to consider in the isoline    traced by a trait s line  By default  we take the max  on ocean points  of the array    passed in the keyword CONTOUR       keyword CONTMIN    When CONTOUR is activated  min value we want to consider in the isoline    traced by a trait s line  By default  we take the min  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates        keyword INTERVALLE    Value of an internal between to isoline  If there is none specified min     we choose a min contour which goes well with the specified interval  If this keyword is not    specified  we trace 20 isoline from the min to the max  Comment: When CONTOUR is activated     INTERVALLE only specify the interval between 2 colored isoline  To specify the interval    between 2 isolines traced by a trait  use CONTINTERVALLE       keyword INV    Invert the color vector used to color the graph                   without use the black  the white and the used palette       keyword ZRATIO   When the drawing has a zoomed part  it is the size rapport between the zoomed part     hz  zoom height  and the whole drawing  ht  total height  By default  2 3      keyword LABEL    It is an integer n  If n different of 0  it choose the label s type    corresponding to cases n  cf label pro   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines     For tese one traced by a trait  use CONTLABEL        keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword NLEVEL    Number of contour to draw by default  20  active if   LABEL 0 or is not specified        keyword NOTRI    To force not to use the triangulation  Beware  in this case  the    drawing only works if the grid is undeformed  It means that each point of a longitude    give one latitude and each point of a latitude give one longitude  exept if we use    the keyword CELL_FILL 2     Comment: if the field contain points  values f_nan  then we even do a triangulation       keyword OVERPLOT    To make a plot over an other one     Comment: Contrarily to the use of CONTOUR or VECTEUR  the use of this keyword    does not the caption and or the color bar       keyword SIN    Activate this keyword if we want the x axis to be traced in sinus of the    latitude when we make a drawing f y       keyword STRICTFILL    Activate this keyword to that the filling of contours be    precisely done between the min and the max specified letting values inferior at the    specified min and values superior at the specified max in white       keyword STYLE    Contour s style to adopt to draw isolines by default  style 0  see style pro       keyword WDEPTH    To specify that the field is at W depth instead of T    depth  automatically activated if vargrid eq  W       keyword XZ   Force to make a cut following xz      keyword YZ   Force to make a cut following yz      keyword ZOOM    Depth where i can make our maximum zoom  By default 200m or max depth if it is inferior at 200m      uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr    7 1999   Sebastien Masson 08 02 2000 checkfield and   notri keyword       version    Id       todo seb L 20   26  L 215   221           pro pltz  tab  giventype  givenmin  givenmax  BOXZOOM   boxzoom  CONTOUR   contour               ENDPOINTS   endpoints  INTERVALLE   intervalle  INV   inv  ZRATIO   zratio               CONTINTERVALLE   contintervalle  LABEL   label  CONTLABEL   contlabel               STYLE   style  CONTMAX   contmax  SIN   sin  TYPEIN   typein               CONTMIN   contmin  NLEVEL   nlevel  CONTNLEVEL   contnlevel               NOTRI   notri  USETRI   usetri  FILLXDIR   fillxdir               ZOOM   zoom  XZ   xz  YZ   yz  MININ   minin  MAXIN   maxin               STRICTFILL   strictfill  OVERPLOT   overplot  MASKFILL   maskfill               WDEPTH   wdepth  REALSECTION   realsection               _EXTRA   ex     include common     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             For key_performance       1st part: initialization small calculations      Comment: we do not reinitializate when we call back plt in loop to use contour    if n_elements contour  ne 4 AND NOT keyword_set overplot  then reinitplt     if n_elements contour  ne 4 THEN saveboxparam   boxparam4pltz dat       Reading of the field      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 n_elements realsection  EQ 0 then realsection   1   IF n_elements usetri  EQ 0 THEN BEGIN     IF n_elements notri  NE 0 THEN usetri   2 notri ELSE usetri   1   ENDIF   no need of triangulation   IF usetri EQ 1 AND keyword_set realsection  THEN usetri   0   did we specify the type     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   pltz  TYPE   type  MIN   min  MAX   max         XZ   xz  YZ   yz  ENDPOINTS   endpoints  _extra   ex     if keyword_set endpoints  then begin     section  tab  z2d  glam  gphi  ENDPOINTS   endpoints  TYPE   type          BOXZOOM   boxzoom  DIREC   direc  WDEPTH   wdepth  _extra   ex     if z2d 0  EQ  1 AND n_elements contour  ne 4 then BEGIN        restoreboxparam   boxparam4pltz dat        return     ENDIF     nx   n_elements glam       ny   nx     if strupcase vargrid  EQ  W  then begin       gdep   gdepw firstzw:lastzw        nz   nzw     ENDIF ELSE BEGIN       gdep   gdept firstzt:lastzt        nz   nzt     ENDELSE     mask   z2d LE valmask 10    ENDIF ELSE BEGIN     z2d   checkfield tab   pltz  TYPE   type  BOXZOOM   boxzoom                          DIREC   direc  WDEPTH   wdepth  _extra   ex      if z2d 0  EQ  1 AND n_elements contour  ne 4 then BEGIN        restoreboxparam   boxparam4pltz dat        return     ENDIF     IF realsection EQ 1 THEN grille  mask  glam  gphi  gdep  nx  ny  nz  ifpltz   type  WDEPTH   wdepth       ELSE grille  mask  glam  gphi  gdep  nx  ny  nz  WDEPTH   wdepth   ENDELSE   stop     profmax    y range 0    profmin    y range 1    if not keyword_set zoom  then zoom   200   zoom   zoom 0    IF zoom LT profmin THEN zoom   profmax   if zoom GE vert2 then zoom   profmax   construction of the mask and of the axis   axis4pltz  type  mask  glam  gphi  gdep  XXAXIS   xxaxis  ZZAXIS   zzaxis  SIN   sin  ZRATIO   zratio  ZOOM   zoom  PROFMAX   profmax  PROFMIN   profmin  _extra   ex   to draw from bottom to top  avoid using cell_fill    z2d   reverse z2d  2      Determination of the mi:min and of the ma:max of z2d in the same way    as max: max and min: min for the drawing      nan   total finite z2d   nan   z2d    max   if n_elements maskfill  NE 0 then BEGIN     z2d   z2d mask masknan     if maskfill NE 0 then z2d   temporary z2d    maskfill 1b mask masknan    ENDIF     check the mask and the triangulation according to the grid type and    nan values  find the coordinates of the mask        if  where mask EQ 0 0  EQ  1 AND NOT keyword_set nan  then notri   1     if keyword_set notri  then trifield    1       ELSE trifield   triangule mask basic    if  usetri GE 1 AND  vargrid EQ  T  OR vargrid EQ  W        OR  usetri EQ 2 AND  vargrid NE  T  AND vargrid NE  W  THEN       trifield   triangule mask   basic      IF NOT keyword_set endpoints   THEN BEGIN     if keyword_set nan  then trinan   triangule masknan   basic  coinmonte   coinmontenan  coindescend   coindescendnan      decoupeterre  mask  glammsk  gphimsk  gdepmsk  type   type  WDEPTH   wdepth  REALSECTION   realsection     axis4pltz  type  mask  glammsk  gphimsk  gdepmsk  XXAXIS   xmask  ZZAXIS   zmask  SIN   sin  ZRATIO   zratio  ZOOM   zoom  PROFMAX   profmax  PROFMIN   profmin  _extra   ex   ENDIF ELSE BEGIN     xmask   xxaxis     zmask   zzaxis   ENDELSE      if  usetri GE 1 AND  vargrid NE  T  AND vargrid NE  W  THEN BEGIN      IF keyword_set realsection  THEN trimsk   triangule mask   basic        ELSE trimsk   triangule mask   basic  coinmonte   coinmontemask                                 coindescend   coindescendmask    ENDIF          dessin en lui meme     pltbase  z2d  xxaxis  zzaxis  mask  xmask  zmask         level_z2d  colnumb  overplot   overplot         contour   contour  trichamp   trifield  trimsk   trimsk          c_linestyle   linestyle         c_labels   1 indgen n_elements level_z2d  MOD 2          c_thick   thick  unsur2   unsur2         masknan   masknan  trinan   trinan         coinmontenan   coinmontenan  coindescendnan   coindescendnan         coinmontemask   coinmontemask  coindescendmask   coindescendmask         REALSECTION   realsection  USETRI   usetri  _extra   ex     recall of pltz in loop when contour is activated     if n_elements contour  eq 4 then BEGIN   It is the second time I pass in pltt     contour    mietma: mi  ma  unit:varunit  inter:intervalle    I send back the min  the max and the unity     return   endif   if keyword_set contour  THEN BEGIN      pourlegende    1  1  1  1      oldattributs   saveatt      oldcolnumb   colnumb     pltz  contour  contmin  contmax  CONTOUR   pourlegende  ZRATIO   zratio           INTERVALLE   contintervalle  LABEL   contlabel  STYLE   style   noerase            NLEVEL   contnlevel  ZOOM   zoom  BOXZOOM   boxzoom  ENDPOINTS   endpoints           STRICTFILL   strictfill  REALSECTION   realsection  MASKFILL   maskfill           USETRI   usetri  WDEPTH   wdepth  _extra   ex     restoreatt  oldattributs     colnumb   oldcolnumb   ENDIF       3rd part: drawing of the frame  caption  colorbar      if keyword_set overplot  then BEGIN       y range     zoom  profmin    We get back on physic coordinates     plot   0   0   nodata   noerase  title     subtitle     xstyle   5  ystyle   5     GOTO  fini   endif     Caption   dysplay of them     legende  mi  ma  type  CONTOUR   pourlegende  INTERVALLE   intervalle  DIREC   direc  endpoints   endpoints  _EXTRA   ex   if type eq  yz  then xaxe    lataxe  else xaxe    lonaxe    if keyword_set sin  OR NOT key_onearth then xaxe       Frame applied by default   plot   xxaxis 0  xxaxis n_elements xxaxis 1   zratio   zratio   noerase         xstyle   1 4 keyword_set endpoints  AND  type EQ  xz  AND lat1 NE lat2  OR  type EQ  yz  AND lon1 NE lon2          xtickformat   xaxe  _extra   ex   Add of an axis in the case of we use endpoints   if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex     Y axis in 1 or 2 part     if n_elements ex  NE 0 then BEGIN    To do not put title anymore     if  where tag_names ex  EQ  TITLE 0  NE  1 then ex TITLE         To do not put subtitle anymore     if  where tag_names ex  EQ  SUBTITLE 0  NE  1 then ex SUBTITLE         To have just one ytitle     if  where tag_names ex  EQ  YTITLE 0  NE  1 then BEGIN        ytitle   ex YTITLE       ex YTITLE           endif   ENDIF   htotal   posfenetre 3 posfenetre 1    hzoom   1 zratio htotal   if zoom LT profmax then       plot   0   0   nodata   noerase  ystyle   1  yrange    profmax  zoom 0 001          position   posfenetre 0  0  0   hzoom  _extra   ex  title     subtitle     ytitle          y range     zoom  profmin      We get back in physic coordinates    plot   0   0   nodata   noerase  ystyle   1  _extra   ex         title     subtitle     ytitle     position   posfenetre 0  htotal hzoom  0  0      to write the ytitle      if  d name EQ  PS  then       xs    max page_size  min   mi 1 key_portrait    mi key_portrait d x_px_cm     ELSE xs    d x_size   if n_elements ytitle  NE 0 then  y title   ytitle   charsize   chkstru ex   ycharsize   extract    if charsize EQ  1 then charsize    p charsize   IF chkstru ex   charsize  THEN ex charsize   charsize   if chkstru ex   ytitle   extract  NE   then       decalage   string format    e10 3  profmax    decalage   float strmid decalage  strpos decalage   e 1    posy   posfenetre 1 1 htotal 2   posx   posfenetre 0 decalage 3 d x_ch_size charsize xs   xyouts  posx  posy   y title   normal  orientation   90  color   0  ALIGNMENT    5  charsize   charsize  _extra   ex      colorbar     colnumb   colnumb 0:ncontour 1 keyword_set strictfill    barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                     position   posbar  _extra   ex       4th part: possible print     fini:   terminedessin  _extra   ex         sortie:   restoreboxparam   boxparam4pltz dat      if keyword_set key_performance  NE 0 THEN print   temps pltz  systime 1 tempsun    return end   "); 
    256 a[254] = new Array("./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html", "sbar_plot.pro", "", "             file_comments    Same thing that bar_plot but compatible with the whole environnement  common pro inclued       categories graphics     INPUTS: cd IDL bar_plot      keyword 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       keyword COLORS    Is an integer giving color of all colorbars   contrarily to colors    which is a vector giving the color of each colorbar       keyword NOREINITPLT   We active it if we do not want environnement variables  p   x   y   z    to be reinitilalizted by the procedure reinitplt      keyword _EXTRA   used to pass your keyword      uses   common pro      restrictions    If NOREINITPLT is not activated  all environnement    variables  p   x   y   z are reinitializtedby the procedure reinitplt      examples        IDL  sbar_plot  indgen 10 small    2 2 2 rempli        IDL  sbar_plot  indgen 10 small    2 2 3 noerase        IDL   ps      history   Sebastien Masson  smasson lodyc jussieu fr                         10 10 1999      version    Id             PRO sbar_plot  Values  COLORS   colors  NOREINITPLT   noreinitplt  _extra   ex      compile_opt idl2  strictarrsubs    common   1  I reinitialize the graphic environment  variables  x   y et  p :     if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex    2  I place the drawing on the screen like on the postscript     IF chkstru ex   overplot EQ 0 THEN placedessin   autre  _extra   ex   3  Drawing     if n_elements COLORS  NE 0 then BEGIN       if n_elements COLORS  EQ n_elements Values  then col   colors          ELSE col   replicate colors 0  n_elements Values     ENDIF ELSE col   congrid indgen d n_colors   256  n_elements Values       bar_plot  Values  background    p background  colors   col                  xstyle   1  ystyle   1  _extra   ex   4  End of drawing     terminedessin  _extra ex      return end"); 
    257 a[255] = new Array("./ToBeReviewed/PLOTS/DESSINE/scontour.html", "scontour.pro", "", "             File_comments   Same thing that contour but compatible with the whole environnement  common pro inclued       categories graphics     INPUTS:cd IDL contour      keyword NOREINITPLT   We active it if we do not want environnement variables  p   x   y   z    to be reinitilalizted by the procedure reinitplt       keyword _EXTRA   used to pass your keywords      uses   common pro      examples        IDL  z   dist 100          IDL  scontour  z  nlevels 10 small 1 2 1 xstyle 1 ystyle 1        IDL   ps      history Sebastien Masson  smasson lodyc jussieu fr                         10 10 1999       version    Id            PRO scontour  x  y  z  NOREINITPLT   noreinitplt  _EXTRA   ex     compile_opt idl2  strictarrsubs    common   1  I reinitializate the graphic environment  variables  x   y et  p :    if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex    2  i put the drawing on the screen like on the postcript    if ex contains norease and c_orientation keywords we force ex noerase   0   IF chkstru ex   overplot  EQ 0 THEN placedessin   autre  _extra   ex   fiddle when noerase is used with c_orentation    call contour with  nodata to get the graphic environment  then force   noerase   0 and overplot   1   IF size ex   type  EQ 8 THEN BEGIN   check if noerase is used with c_orentation     alltags   strlowcase tag_names ex      dummy   where alltags EQ  noerase  count1      dummy   where alltags EQ  c_orientation  count2      IF count1 count2 NE 0 THEN BEGIN        case n_params  OF         1:contour  x   nodata  _EXTRA   ex         2:contour  x  y   nodata  _EXTRA   ex         3:contour  x  y  z   nodata  _EXTRA   ex       endcase       ex noerase   0       ex   get_extra overplot  _extra   ex        noerase_orientation   1     ENDIF    ENDIF    3  je fais mon joli dessin    case n_params  OF     1:contour  x  xstyle   1  ystyle   1  _EXTRA   ex     2:contour  x  y  xstyle   1  ystyle   1  _EXTRA   ex     3:contour  x  y  z  xstyle   1  ystyle   1  _EXTRA   ex   ENDCASE   fiddle when noerase is used with c_orentation  draw the contour axis   IF keyword_set noerase_orientation   THEN BEGIN     ex noerase   1     ex overplot   0     case n_params  OF       1:contour  x  xstyle   1  ystyle   1   nodata  _EXTRA   ex       2:contour  x  y  xstyle   1  ystyle   1   nodata  _EXTRA   ex       3:contour  x  y  z  xstyle   1  ystyle   1   nodata  _EXTRA   ex     ENDCASE   ENDIF   4  End of drawing   terminedessin  _extra   ex     return end"); 
    258 a[256] = new Array("./ToBeReviewed/PLOTS/DESSINE/splot.html", "splot.pro", "", "            file_comments    Same thing that plot but compatible with the whole environnement  common pro inclued       categories graphics      INPUTS:cd IDL   plot      keyword NOREINITPLT   We active it if we do not want environnement variables  p   x   y   z    to be reinitilalizted by the procedure reinitplt       keyword _EXTRA   used to pass your keywords      uses   common pro      restrictions    If NOREINITPLT is not activated  all environnement    variables  p   x   y   z are reinitializtedby the procedure reinitplt      examples        IDL  splot  indgen 10 ystyle 1 small 1 2 1 portrait        IDL  splot   indgen 10 ystyle 1 small 1 2 2 noerase        IDL   ps      history   Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999      version    Id            PRO splot   x  y  NOREINITPLT   noreinitplt  _EXTRA   ex     compile_opt idl2  strictarrsubs    common   1  I reinitializate the graphic environment  les variables  x   y et  p :     if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex    2  i put the drawing on the screen like on the postcript     placedessin   autre  _extra   ex   3  Drawing    if n_elements y  EQ 0 then plot   x  xstyle   1  ystyle   1  _EXTRA   ex      ELSE plot   x  y  xstyle   1  ystyle   1  _EXTRA   ex   4  End of drawing     terminedessin  _extra ex       return end"); 
    259 a[257] = new Array("./ToBeReviewed/PLOTS/DESSINE/tvplus.html", "tvplus.pro", "", "             file_comments   Enhanced version of tvscl      categories quick exploration of 2D arrays      INPUTS:       param Z2D  in required    2D array to visualize      param CELLSIZE  in optiona    This is the size  in pixel  of the square   representing 1 array element  By default  this size is computed   automatically in order that the size of the plotting window do   not exceed the screen size  If the user specify a large value   of cellsize that forces tvplus to create a window larger than   the screen  a  scrolling window  will be displayed instead of a   regular window  Unfortunately the nice fonctionnalities of tvplus   are not coded for  scrolling window  case       keyword BOTTOM   The lowest color index of the colors to be loaded in   the bar  default is 0       keyword C_NAN   The color number that should be used for the NaN values    default value is  d n_colors  1 e6  the test to find the masked value is ge   abs mask 10  This is necessary to avoid the rounding errors      keyword MIN    Scalar used to specify the min value of the color bar  default is 0      keyword MAX   Scalar used to specify the max value of the color bar  default is  d n_colors  tvplus  dist 100       history   Sebastien Masson  smasson lodyc jussieu fr                          18 12 98   Aug 2005: quick cleaning   english      version    Id            PRO tvplus  z2d  cellsize  BOTTOM   bottom  C_MASK   c_mask  C_NAN   c_nan  WINDOW   window                 MIN   min  MAX   max  MASK   mask  OFFSET   offset  NOUSEINFOS   NOUSEINFOS                 NCOLORS   ncolors  NOINTERP   nointerp  _EXTRA   ex       compile_opt idl2  strictarrsubs     IF n_elements z2d  EQ 0 THEN return   arr   reform float z2d      check the size of the input array      if  size arr 0  NE 2 then begin     ras   report Input array must have only 2 dimensions and not   strtrim size arr   n_dimensions  1      return   endif     def of ncolmax  bottom  topcol et ncolors     ncolmax    d n_colors  arr     truemin   min   ENDIF ELSE truemin   min arr    if n_elements max  NE 0 then BEGIN      arr   arr  floor x cellsize   floor y cellsize   floor x cellsize   floor y cellsize   floor x2 cellsize   floor y2 cellsize     size arr 2 cellsize 1          x     x  x2    x    x sort x          y     y  y2    y    y sort y          IF keyword_set OFFSET  THEN offset    x 0  y 0 offset ELSE offset    x 0  y 0          tvplus  z2d x 0 :x 1  y 0 :y 1    WINDOW   window  MIN   min  MAX   max                     MASK   mask  C_MASK   c_mask  C_NAN   c_nan   NOUSEINFOS  OFFSET   OFFSET                     NCOLORS   ncolors  NOINTERP   nointerp  BOTTOM   bottom  _EXTRA   ex         return       END       ELSE:     endcase   ENDWHILE      x   xenvsauve    y   yenvsauve    p   penvsauve    x range   1 0  nx cellsize 5 offset 0     y range   1 0  ny cellsize 5 offset 1      return end"); 
    260 a[258] = new Array("./ToBeReviewed/PLOTS/DIVERS/addaxe.html", "addaxe.pro", "", "             file_comments   Add an axis when we do an oblique section in pltz  pltt   or plt1d      categories   graphic      param ENDPOINTS  in required    Coordonnees of extremities of the section       param TYPE  in required    A string of two characters specifying the type of plot we do      param POSFENETRE  in required    The vector  p position corresponding to the frame position of    the drawing part of the plot       uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr       version    Id            PRO addaxe  endpoints  type  posfenetre  _EXTRA   ex     compile_opt idl2  strictarrsubs    common      IF strpos type   x  NE  1 THEN BEGIN       IF endpoints 1  EQ endpoints 3  THEN return       IF key_onearth THEN BEGIN          formeaxe0    lonaxe          formeaxe1    lataxe          titreaxe    latitude        ENDIF ELSE BEGIN          formeaxe0             formeaxe1             titreaxe    j index        ENDELSE       range    endpoints 1  endpoints 3        if endpoints 2  LT endpoints 0  THEN range   reverse range     ENDIF ELSE BEGIN       IF endpoints 0  EQ endpoints 2  THEN return       IF key_onearth THEN BEGIN          formeaxe0    lataxe          formeaxe1    lonaxe          titreaxe    longitude        ENDIF ELSE BEGIN          formeaxe0             formeaxe1             titreaxe    i index        ENDELSE       range    endpoints 0  endpoints 2        if endpoints 3  LT endpoints 1  THEN range   reverse range     ENDELSE    if type EQ  yt  then BEGIN       axis yaxis 0 ytickformat formeaxe0 color 0 ystyle   1  _EXTRA   ex       axis yaxis 1 ytickformat formeaxe1 color 0 ystyle   1 ytitle titreaxe  yrange   range  _EXTRA   ex    ENDIF ELSE BEGIN       axis xaxis 0 xtickformat formeaxe0 color 0 xstyle   1 _EXTRA   ex       axis xaxis 1 xtickformat formeaxe1 color 0 xstyle   1 xtitle titreaxe  xrange   range  _EXTRA   ex    ENDELSE       return end"); 
    261 a[259] = new Array("./ToBeReviewed/PLOTS/DIVERS/autoscale.html", "autoscale.pro", "", "             file_comments    We give a min and a max  and the procedure send back    the good contour interval and labels s value       categories    graphic      param MIN  in required    A reel number specifying above what value we want to trace a contour      param MAX  in required    A reel number specifying below what value we want to trace a contour      param CI   out    It is a reel number giving the contour interval  Use it in CONTOUR with the keyword LEVEL       restrictions   CI is a multiple of the unity in unity log of 10    It force the number of contour to be even       history   G  Roullet   aout 99  gr lodyc jussieu fr       version    Id            PRO autoscale  min  max  ci      Estimation of a first CI  notice the presence of the floor  Inferior round    This CI is a multiple of the unity in unity log of 10        compile_opt idl2  strictarrsubs       ci    max min 20      ci   10 floor alog10 ci       n   0     ci0   ci       coef    2  2 5  5  10      We test differents CI  contour intervals  i e  1  2  2 5  5 and 10   until the number of contour is inferior to 30        WHILE ceil max min ci  GE 30 DO BEGIN            ci   ci0 coef n            n   n 1     ENDWHILE       min   floor min ci 2 ci 2     max   ceil max ci 2 ci 2          nlevels   round max min ci            We force the number of contour to be even       IF nlevels MOD 2 EQ 1 THEN BEGIN            nlevels   nlevels 1           max   max ci     END    END     "); 
    262 a[260] = new Array("./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html", "axis4pltz.pro", "", "             file_comments   compute the mask and the axis for a vertical section      param MASK  in required     3d mask              param GLAM  in required    2d longitude        param GPHI  in required    2d latitude      param Z  in required    1d depth      keyword XXAXIS    to get the xaxis we need to use in pltbase            keyword ZZAXIS    to get the yaxis we need to use in pltbase      keyword SIN    Activate this keyword if we want the x axis to be traced in sinus of the    latitude when we make a drawing f y       keyword ZRATIO   When the drawing has a zoomed part  it is the size rapport between the zoomed part     hz  zoom height  and the whole drawing  ht  total height  By default  2 3      keyword _EXTRA   used to pass your keywords       Others: see pltz         history   Sebastien Masson  smasson lodyc jussieu fr                         June 24  2002      version    Id             PRO axis4pltz  type  mask  glam  gphi  z  XXAXIS   xxaxis  ZZAXIS   zzaxis  SIN   sin  ZRATIO   zratio  ZOOM   zoom  PROFMAX   profmax  PROFMIN   profmin  _extra   ex     include common     compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF        define the mask used for this section     if mask 0  NE  1 AND  size mask 0  NE 2 then begin     if type EQ  xz  then mask   total mask  2    1       ELSE mask   total mask  1    1   endif     define xxaxis and yyaxis the axis used for this section     nx    size glam 1    CASE  size gphi 0  OF     1:ny    size gphi 1      2:ny    size gphi 2    ENDCASE   CASE  size z 0  OF     1:nz    size z 1      2:nz    size z 2    ENDCASE     if type eq  yz  then BEGIN      IF  size gphi 0  EQ 1 then xxaxis   gphi ELSE BEGIN        IF keyword_set key_irregular  THEN BEGIN          cln    where gphi EQ max gphi 0          xxaxis   reform gphi cln MOD nx          ENDIF ELSE xxaxis   reform gphi 0        ENDELSE     if keyword_set sin  then xxaxis   sin pi 180 xxaxis      if  size z 0  EQ 1 THEN zzaxis   z ELSE zzaxis   z   ENDIF ELSE BEGIN     xxaxis   glam  0      if  size z 0  EQ 1 then zzaxis   z ELSE zzaxis   z   ENDELSE      We project the z axis in  0 1      if not keyword_set zratio  then zratio   2 3   if zoom ge profmax then zratio   1    if zoom LT profmax then begin     mp   projsegment profmin  zoom   0  zratio   mp      zzaxis where zzaxis LE zoom    mp 0 zzaxis where zzaxis LE zoom mp 1      mp   projsegment zoom  profmax   zratio  1   mp      zzaxis where zzaxis GE zoom    mp 0 zzaxis where zzaxis GE zoom mp 1    ENDIF ELSE BEGIN     mp   projsegment profmin  profmax   0  1   mp      zzaxis   mp 0 zzaxis mp 1    ENDELSE    to draw from bottom to top  avoid using cell_fill    CASE size zzaxis   n_dimensions  OF     1:zzaxis   reverse zzaxis       2:zzaxis   reverse zzaxis  2     ENDCASE   if mask 0  NE  1 then mask   reverse mask  2     return end"); 
    263 a[261] = new Array("./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html", "barrecouleur.pro", "", "             file_comments   Overlayeur of colorbar      categories   utilities      restrictions pass all argument we want thanks to _extra      history   Sebastien Masson  smasson lodyc jussieu fr                          23 12 98      version    Id       todo seb: mettre les keyword et les param         PRO barrecouleur  colnumb  clbinf  clbsup  clbdiv                       NOCOLORBAR   nocolorbar  CB_TITLE   cb_title                       NOFILL   nofill  COLOR_c   color_c                       min   min  max   max  divisions   divisions                       CB_SUBTITLE   cb_subtitle  POST   post  _extra   ex       compile_opt idl2  strictarrsubs    cm_general   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF     if keyword_set min  then clbinf   min   if keyword_set max  then clbsup   min   if keyword_set divisions  THEN  clbdiv   divisions   nocolorbar   keyword_set nocolorbar    keyword_set nofill                     keyword_set color_c          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        colorbarparam    colnumb:colnumb  clbinf:clbinf                           clbsup:clbsup  clbdiv:clbdiv     ENDIF ELSE BEGIN       save  colnumb  clbinf  clbsup  clbdiv               file   myuniquetmpdir    4colorbar dat     ENDELSE      if keyword_set nocolorbar  then return       ancienx    x    ancieny    y    ancienp    p    reinitplt     x style   1     y style   1        colorbar  cb_color   0  cb_charsize   ancienp charsize            pscolor   keyword_set post  division   clbdiv            min   clbinf  max   clbsup            cb_title   cb_title  discret   colnumb  _extra   ex       x  ancienx     y  ancieny     p  ancienp      return end"); 
    264 a[262] = new Array("./ToBeReviewed/PLOTS/DIVERS/checkfield.html", "checkfield.pro", "", "FUNCTION err_1d  type  n1  name  n2     compile_opt idl2  strictarrsubs     return  report Error in     type     type plot with a 1D input array:                         the number of elements of the input vector  strtrim n1  1                           is not equal to     name      strtrim n2  1   simple  END   FUNCTION err_2d  type  sz  nx  ny  nz     compile_opt idl2  strictarrsubs      cm_4mesh    cm_4cal   return  report Error in     type     type plot with a 2D input array:                         the array dimensions     tostr sz 1:2      are incompatible                         with the the domain dimensions                          jpi nx  jpj ny  jpk nz  jpt                            strtrim jpi  1        strtrim nx  1                              strtrim jpj  1        strtrim ny  1                              strtrim jpk  1        strtrim nz  1                              strtrim jpt  1       simple  END   FUNCTION err_3d  type  sz  nx  ny  nz     compile_opt idl2  strictarrsubs      cm_4mesh    cm_4cal   return  report Error in     type     type plot with a 3D input array:                         the array dimensions     tostr sz 1:3      are incompatible                         with the the domain dimensions                          jpi nx  jpj ny  jpk nz  jpt                            strtrim jpi  1        strtrim nx  1                              strtrim jpj  1        strtrim ny  1                              strtrim jpk  1        strtrim nz  1                              strtrim jpt  1       simple  END              file_comments   In input of plt  pltz  pltt and plt1d  it check that the field give    a size compatible with the domain and  if needed  average to give us    a 2d array if we make a plot of the type:  xy   xz   xt   yz   yt       zt  or a 1d array if we make a plot of the type:  x   y   z   t       categories   graphic       param FIELD  in required    A field respecting litchamp pro s criterions  See IDL xhelp litchamp       keyword BOXZOOM    Vector indicating the geographic zone on which we want to cut the map      If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  0  max gdept  gdepw    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 are global variables defined at the last domdef       keyword WDEPTH   to specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W        keyword VECTEUR   It is a structure composed by 2 elements containing the 2 fields U   and V of values of the zonal and meridian component of the vector of the fields   to draw  These fields can be an array or a structure          For example: vecteur matriceu:lec unsurface matricev:lec vnsurface          Comment: name of elements of vectors are inconsenquential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword _EXTRA   used to pass your keywords      keyword DIREC         uses    common pro      history   Sebastien Masson  smasson lodyc jussieu fr                         08 02 2000      version    Id       todo seb: mettre les param              FUNCTION checkfield  field  procedure  TYPE   type  BOXZOOM   boxzoom  DIREC   direc  NOQUESTION   noquestion  VECTEUR   vecteur  WDEPTH   wdepth  _EXTRA   ex       compile_opt idl2  strictarrsubs     include commons  cm_4mesh  cm_4cal  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     I1  Reading of the field     if n_elements field  EQ 0 then return  report field undefined    arr   litchamp field    first check   IF n_elements arr  EQ 1 THEN BEGIN     if arr EQ  1 then         return  report Error: input array    1  Maybe the reading did ont perform well   simple        ELSE return  report Error: input array is a scalar   simple         ENDIF   nan   total finite arr   nan    firstzw 1        lastzw    lastzw 1    firstzt 1        lastzt    lastzt 1     jpk 1        nzt   lastzt   firstzt   1     ENDELSE      updateold   ENDIF   make the automatic definition of type for pltz if type is not specified    IF type EQ  z  AND procedure EQ  pltz  THEN       if  lon2 lon1  gt  lat2 lat1  then type    xz  else type    yz    make the automatic definition of type for pltt if type is not specified    IF type EQ  unkownpltt  AND procedure EQ  pltt  THEN       if  lon2 lon1  gt  lat2 lat1  then type    xt  else type    yt      verification of the input array size and the value of the type     grille   1   1   1   1  nx  ny  nz  firstx  firsty         firstz  lastx  lasty  lastz  WDEPTH   wdepth     basic checks     CASE 1 OF     nx EQ 1: IF strpos type   x  NE  1 THEN return  report Error: impossible to make a     type     type plot with nx   1    simple      ny EQ 1: IF strpos type   y  NE  1 THEN return  report Error: impossible to make a     type     type plot with ny   1    simple      nz EQ 1: IF strpos type   z  NE  1 THEN return  report Error: impossible to make a     type     type plot with nz   1    simple      jpt EQ 1: IF strpos type   t  NE  1 THEN return  report Error: impossible to make a     type     type plot with jpt   1    simple      ELSE:   ENDCASE     is the size of the array compatible with teh domain      arr   fitintobox temporary arr  nx  ny  nz  firstx  firsty         firstz  lastx  lasty  lastz      sz   size arr    case sz 0  of       0:return  arr       1:BEGIN       nele   n_elements arr        case type of          t :if jpt NE nele THEN return  err_1d type  nele   jpt  jpt           x :IF  nx NE nele THEN return  err_1d type  nele    nx   nx           y :IF  ny NE nele THEN return  err_1d type  nele    ny   ny           z :IF  nz NE nele THEN return  err_1d type  nele    nz   nx          ELSE:return  report Error:                                    Impossible to make a  type  plot with a 1D array   simple        ENDCASE     END        2:BEGIN       case type of          x :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny:direc    y    xy array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz:direc    z    x y z array             sz 1  EQ nx AND sz 2  EQ jpt:direc    t    xt array             ELSE:return  err_2d type  sz  nx  ny  nz            endcase         end          y :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny:direc    x    xy array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz:direc    z     x yz array             sz 1  EQ ny AND sz 2  EQ jpt:direc    t    yt array             ELSE:return  err_2d type  sz  nx  ny  nz            endcase         END          z :BEGIN           case 1 of             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz:direc    x    x y z array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz:direc    y     x yz array             sz 1  EQ nz AND sz 2  EQ jpt:direc    t    zt array             ELSE:return  err_2d type  sz  nx  ny  nz            endcase         END          t :BEGIN           case 1 OF             sz 1  EQ nx AND sz 2  EQ jpt:direc    x    xt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ jpt:direc    y     x yt array             nx EQ 1 AND ny EQ 1 AND sz 1  EQ nz AND sz 2  EQ jpt:direc    z     x y zt array             ELSE:return  err_2d type  sz  nx  ny  nz            ENDCASE         END          xy :IF sz 1  NE nx OR sz 2  ne  ny THEN return  err_2d type  sz  nx  ny  nz    xy array          xz :IF sz 1  NE nx OR sz 2  ne  nz THEN return  err_2d type  sz  nx  ny  nz    xz array          yz :IF sz 1  NE ny OR sz 2  NE  nz THEN return  err_2d type  sz  nx  ny  nz    yz array          xt :IF sz 1  NE nx OR sz 2  NE jpt THEN return  err_2d type  sz  nx  ny  nz    xt array          yt :IF sz 1  NE ny OR sz 2  NE jpt THEN return  err_2d type  sz  nx  ny  nz    yt array          zt :IF sz 1  NE nz OR sz 2  NE jpt THEN return  err_2d type  sz  nx  ny  nz    zt array       ENDCASE     END        3:BEGIN       case type of          x :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ nz:direc    yz    xyz array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    zt    x y zt array             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    yt    xyt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          y :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ nz:direc    xz    xyz array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    zt     x yzt array             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    xt    xyt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          z :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ nz:direc    xy    xyz array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    yt     x yzt array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    xt    x y zt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          t :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    xy    xyt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    yz     x yzt array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    xz    x y zt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          xy :BEGIN           case 1 OF             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ  nz:direc    z    xyz array             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    t    xyt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          xz :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ  nz:direc    y    xyz array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    t    x y zt             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          yz :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ  nz:direc    x    xyz array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    t     x yzt             ELSE:return  err_3d type  sz  nx  ny  nz             endcase         END          xt :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    y    xyt array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    z    x y zt array             ELSE:return  err_3d type  sz  nx  ny  nz             endcase         END          yt :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    x    xyt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    z     x yzt array             ELSE:return  err_3d type  sz  nx  ny  nz             endcase         END          zt :BEGIN           case 1 of             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    x    x y zt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    y     x yzt array             ELSE:return  err_3d type  sz  nx  ny  nz             ENDCASE         END        ENDCASE      END        4:BEGIN        CASE type OF          x :direc    yzt           y :direc    xzt           z :direc    xyt           t :direc    xyz           xy :direc    zt           xz :direc    yt           yz :direc    xt           xt :direc    yz           yt :direc    xz           zt :direc    xy        ENDCASE      END   ENDCASE     IF keyword_set direc  THEN BEGIN     IF strpos direc   t  NE  1 OR strpos type   t  NE  1 THEN         arr   grossemoyenne temporary arr  direc  boxzoom   localbox                               NAN   nan   NODOMDEF  WDEPTH   wdepth  _extra   ex        ELSE arr   moyenne temporary arr  direc  boxzoom   localbox                            NAN   nan   NODOMDEF  WDEPTH   wdepth  _extra   ex    ENDIF           RETURN  arr END"); 
     254a[252] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltt.html", "pltt.pro", "", "         file_comments    Trace hovmoller graphs: xt yt zt t      categories Graphics      param TAB  in required     The field whose we want to make the hovmoller map can be 2 kind of thing:  1  An array which can be:              3d or 4d: array   xt yt zt t  The last component is the time  In this case  the array will               pass in grossemoyenne to be averaged and become an 1d or 2d array               2d: If the array is already 2d  it is not modified  beware  lands must               be masked at the value valmask  and nevertheless type must be specified               to we know of which trace it is about               To have a correct caption  respecify the  xctraction zone via BOXZOOM               1d: only for traces of the  t  type  Nevertheless  type must be specified               to we know of which trace it is about               To have a correct caption  respecify the  xctraction zone via BOXZOOM          2  a structure respecting all criterions specified by litchamp pro              See IDL  xhelp litchamp  The array contained in the structure             respecting criterions of case 1         PARAM:          MAX: valeur maximum que l on veut prendre en compte dans le trace   des contours  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   des contours  Par defaut on prend le min de tableau  sur les pts   mer            DATMIN: c est la borne inf de l axe temporel  c est un         longinteger de la forme yyyymmdd  ou bien yymmdd            DATMAX: c est la borne max de l axe temporel  c est un         longinteger de la forme yyyymmdd  ou bien yymmdd       keyword BOXZOOM   Vector indicating the geographique zone  3d  on which the extraction of the field must    be done to do the hovmoeller     If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  vert1  vert2    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef       keyword CONTINTERVALLE    When CONTOUR is activated  it is the value between 2 isolines    traced by a trait  So it can be different from the one specified by INTERVALLE which     in this case  does not control colored isolines in color anymore  If there is noone    specified min  we choose a contour min which goes well with the specified interval     If this keyword is not specified  we trace 20 isolines from the min to the max        keyword CONTLABEL    It is an integer n  When CONTOUR is actvated  if n   is different of 0  choose the label type corresponding to n cases for    the traced by a traitisolines  To specify the type of label of the    colored contour  use LABEL      keyword CONTMAX    When CONTOUR is activated  max value we want to consider in the isoline    traced by a trait s line  By default  we take the max  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTMIN    When CONTOUR is activated  min value we want to consider in the isoline    traced by a trait s line  By default  we take the min  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of pltt       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates        keyword EXCHANGE_XY   Allows to invert axes        keyword FILTER   Apply a slippery average of width FILTER       keyword INTERVALLE    Value of an internal between to isoline  If there is none specified min     we choose a min contour which goes well with the specified interval  If this keyword is not    specified  we trace 20 isoline from the min to the max  Comment: When CONTOUR is activated     INTERVALLE only specify the interval between 2 colored isoline  To specify the interval    between 2 isolines traced by a trait  use CONTINTERVALLE       keyword INV    Invert the color vector used to color the graph                   without use the black  the white and the used palette        keyword LABEL    It is an integer n  If n different of 0  it choose the label s type    corresponding to cases n  cf label pro   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines     For tese one traced by a trait  use CONTLABEL        keyword COL1d    OBSOLETE Color number when we make a trace 1d by default  0 It is better to use the    keyword COLOR used by plot       keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword NLEVEL    Number of contour to draw by default  20  active if   LABEL 0 or is not specified       keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword OV1D    Allows to overprint a 1d curve over a precedent 1d drawing       keyword OVERPLOT    To make a plot over an other one     Comment: Contrarily to the use of CONTOUR or VECTEUR  the use of this keyword    does not the caption and or the color bar       keyword STRICTFILL    Activate this keyword to that the filling of contours be    precisely done between the min and the max specified letting values inferior at the    specified min and values superior at the specified max in white       keyword STYLE    Contour s style to adopt to draw isolines by default  style 0  see style pro       keyword STY1D     OBSOLETE    Number of the style used when we make a 1d drawing  We should better use the    keyword LINESTYLE which is tho one of the plot  Beware  this keyword is still    useful if we want to d bars instead of curves  put sty1d bar       keyword TREND_TYPE   Modify field by calling trends pro      keyword TYPEIN   allows to specify the type of hovmoller we want to do                xt yt zt t      with help of a keyword rather than the argument type  If the argument andthe    keyword are specified in the same time  it is the value specified by the    keyword which is retained       uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr   27 5 98                         Jerome Vialard  adapting plt to hovmoller drawing                          2 7 98                         Sebastien Masson 14 8 98  continents barres                          15 1 98   Adaptation for arrays 3 and 4d to the average be done in pltt rather than during the reading                          Sebastien Masson 14 8 98                          7 1999                          Eric Guilyardi 29 7 99 FILTER  TREND_TYPE                          REPEAT_C                          Sebastien Masson 08 02 2000 checkfield and                         usetri keyword        version     Id: pltt pro 142 2006 07 21 12:47:49Z navarro        todo seb: L 24   36  L 426   427  L  492   493         pro pltt tab giventype givenmin givenmax datmin datmax BOXZOOM   boxzoom  CONTOUR contour             ENDPOINTS endpoints INTERVALLE intervalle INV inv              CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel             STYLE style  CONTMAX contmax             CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel             COL1D col1d STY1D sty1d  MININ   minin  MAXIN   maxin             OV1D ov1d  FILTER   filter  TREND_TYPE   trend_type             REPEAT_C   repeat_c  TYPEIN   typein  XT   XT  YT   YT  ZT   zt              TT   tt  STRICTFILL   strictfill  OVERPLOT   overplot              EXCHANGE_XY   exchange_xy              _extra   ex     include common     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     I2  reinitialization   p x y    Comment: we do not reinitializate when we call back plt in loop to use contour       if n_elements contour  ne 4 AND NOT keyword_set overplot        AND NOT keyword_set ov1d  then reinitplt     I1  Reading of the field       if  keyword_set boxzoom  OR keyword_set endpoints         AND n_elements contour  ne 4 THEN BEGIN      savedbox   1b      saveboxparam   boxparam4pltt dat     ENDIF    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 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   pltt  TYPE   type  MIN   min  MAX   max          XT   XT  YT   YT  ZT   zt  TT   tt  ENDPOINTS   endpoints  _extra   ex      if keyword_set endpoints  then begin       section  tab  z2d  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        z2d   checkfield tab   pltt  TYPE   type  BOXZOOM   boxzoom                            direc   direc  _extra   ex        if z2d 0  EQ  1 then BEGIN          IF keyword_set savedbox  THEN restoreboxparam   boxparam4pltt dat          return       endif       grille  mask  glam  gphi  gdep  nx  ny nz    ENDELSE     Calculation of trend anomaly following TREND_TYPE       IF NOT keyword_set trend_type  THEN trend_type   0     IF trend_type GT 0 THEN z2d   trends z2d  trend_type  type       Filtering of fields in the  t  case         IF type EQ  t  AND keyword_set filter  THEN BEGIN        print       Applying a running mean filter of width  string filter  format    I3        z2d   smooth z2d  filter        z2d 0:filter 2 1    0        z2d size z2d 1 filter 2 1: size z2d 1 1    0     ENDIF       Repetition of the temporal series       IF NOT keyword_set repeat_c  THEN repeat_c   1     temps   time 0:jpt 1     IF repeat_c GT 1 THEN BEGIN       taille size z2d        CASE taille 0  OF          1: z2d   reform z2d replicate 1  repeat_c  taille 1 repeat_c           2: BEGIN             z2d   z2d replicate 1  repeat_c              z2d   reform z2d  taille 1  taille 2 repeat_c   over           END           ELSE:        ENDCASE       temps    temps   lindgen jpt REPEAT_c 1 1 temps 1 temps 0 temps jpt 1     ENDIF       Selection of graphic s type        taille size z2d     case taille 0  of       2 : typdes 2d        1 : begin          z1d z2d          typdes 1d           if keyword_set OV1D  then begin             yy   z2d             if n_elements datmin  NE 0 then tempsmin   date2jul datmin                ELSE tempsmin   temps 0    on shift l axe du temps pour des questions de precision sur les   dates du calendier julien en long qui sont passes en float ds les axes             xx   temps tempsmin              x range x range tempsmin              x tickv x tickv tempsmin   We do a false plot to apply these changes              plot 0   0 noerase xstyle 5  ystyle   5  title     subtitle     ytitle     xtitle                 goto  trace1d          endif       end   endcase   We build the mask  For that  the table must be masked  automaticaly done at the    value valmask if we pass in moyenne or grossemoyenne     nan   total finite z2d nan   z2d  not very nice when xgridstyle 2    same if xticklen 0 5  not very nice in the middle    so we draw   the top  right  axis by hand using axis          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   nodata   noerase  _extra   ex             xstyle   1 4 keyword_set endpoints  AND type EQ  xt  AND lat1 NE lat2 8 type EQ  yt  OR type EQ  zt              ystyle   1 4 keyword_set endpoints  AND type EQ  yt 8 type EQ  xt    call axis for the missing axis        IF type EQ  xt  AND NOT keyword_set endpoints  THEN BEGIN         if n_elements ex  NE 0 then              if  where tag_names ex  EQ  YTICKNAME 0  NE  1 then             ex YTICKNAME   replicate    n_elements ex YTICKNAME          axis  yaxis   1  ystyle   1  yticklen   0               ytickname   replicate     y ticks 1  _extra   ex       ENDIF       IF  type EQ  yt  OR type EQ  zt  AND NOT keyword_set endpoints  THEN BEGIN         if n_elements ex  NE 0 then              if  where tag_names ex  EQ  XTICKNAME 0  NE  1 then             ex XTICKNAME   replicate    n_elements ex XTICKNAME         axis  xaxis   1  xstyle   1  xticklen   0             xtickname   replicate     x ticks 1  _extra   ex       ENDIF   ajout d un axe ds le cas ou l on utilise endpoints       if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex     color bar         colnumb   colnumb 0:ncontour 1 keyword_set strictfill        barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                         position   posbar  _extra   ex      endif     1d   trace1d:    if  typdes eq  1d  then begin       if  not keyword_set col1d  then col1d   0       if keyword_set sty1d  then BEGIN  if we want to make bars          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   not very nice when xgridstyle 2  same if   xticklen 0 5  not very nice in the middle       so we draw the top axis by hand using axis           if n_elements ex  NE 0 then BEGIN    To have a black frame             if  where tag_names ex  EQ  COLOR 0  NE  1 then ex COLOR   0          ENDIF          plot   0   0   nodata   noerase                xstyle   1 8 1 keyword_set exchange_xy                 ystyle   1 8 keyword_set exchange_xy  _extra   ex   call axis for the missing axis           if n_elements ex  NE 0 then BEGIN    force tickname to blank array             if  where tag_names ex  EQ  YTICKNAME 0  NE  1 AND keyword_set exchange_xy  then ex YTICKNAME   replicate    n_elements ex YTICKNAME              if  where tag_names ex  EQ  XTICKNAME 0  NE  1 AND NOT keyword_set exchange_xy  then ex XTICKNAME   replicate    n_elements ex XTICKNAME           ENDIF          if keyword_set exchange_xy  then  axis  yaxis   1  ystyle   1                yticklen   0  ytickname   replicate     y ticks 1  _extra   ex            ELSE axis  xaxis   1  xstyle   1  xticklen   0                xtickname   replicate     x ticks 1  _extra   ex        ENDIF ELSE oplot  xx  yy  color   col1d  linestyle   sty1d  thick   2  _extra   ex    endif fini:     we reput time axis in IDL julian days and not in julian days count from tempsmin       if type EQ  xt  then BEGIN         y range y range tempsmin         y tickv y tickv tempsmin    ENDIF ELSE BEGIN         x range x range tempsmin        x tickv x tickv tempsmin    ENDELSE   We do a false plot to these values are considerated    plot   0   0   nodata   noerase  xstyle   5  ystyle   5          title     subtitle     ytitle     xtitle           3rd part: possible print        terminedessin  _extra   ex    if keyword_set savedbox  THEN restoreboxparam   boxparam4pltt dat       if n_elements key_performance  NE 0 then       IF key_performance EQ 1 THEN print   temps pltt  systime 1 tempsun           return end  "); 
     255a[253] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltz.html", "pltz.pro", "", "             file_comments    Trace vertical graphs       categories    Graphics      param TAB    The field whose we want to make a vertical cut can be 2 kind of thing:           1  An 2d or 3d array             If the field is 2d  indicate  with the keyword BOXZOOM  geographic delineations of the boxzoom             If the field is 3d  we extract the section on we average possibly before to do the plot            2   a structure respecting all criterions specified by litchamp pro              See IDL  xhelp litchamp  The array contin in the structure must be 2 or 3d  See case 1      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 BOXZOOM    Vector indicating the geographic zone on which we want to cut the map      If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  0  max gdept  gdepw    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 are global variables defined at the last domdef       keyword CONTINTERVALLE    When CONTOUR is activated  it is the value between 2 isolines    traced by a trait  So it can be different from the one specified by INTERVALLE which     in this case  does not control colored isolines in color anymore  If there is noone    specified min  we choose a contour min which goes well with the specified interval     If this keyword is not specified  we trace 20 isolines from the min to the max        keyword CONTLABEL    It is an integer n  When CONTOUR is actvated  if n   is different of 0  choose the label type corresponding to n cases for    the traced by a traitisolines  To specify the type of label of the    colored contour  use LABEL      keyword CONTMAX    When CONTOUR is activated  max value we want to consider in the isoline    traced by a trait s line  By default  we take the max  on ocean points  of the array    passed in the keyword CONTOUR       keyword CONTMIN    When CONTOUR is activated  min value we want to consider in the isoline    traced by a trait s line  By default  we take the min  on ocean points  of the array    passed in the keyword CONTOUR        keyword CONTNLEVEL    When  CONTOUR is activated  it is the numbre of contours   traced by a trait for drawing  active if   CONTLABEL 0  by default 20       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates        keyword INTERVALLE    Value of an internal between to isoline  If there is none specified min     we choose a min contour which goes well with the specified interval  If this keyword is not    specified  we trace 20 isoline from the min to the max  Comment: When CONTOUR is activated     INTERVALLE only specify the interval between 2 colored isoline  To specify the interval    between 2 isolines traced by a trait  use CONTINTERVALLE       keyword INV    Invert the color vector used to color the graph                   without use the black  the white and the used palette       keyword ZRATIO   When the drawing has a zoomed part  it is the size rapport between the zoomed part     hz  zoom height  and the whole drawing  ht  total height  By default  2 3      keyword LABEL    It is an integer n  If n different of 0  it choose the label s type    corresponding to cases n  cf label pro   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines     For tese one traced by a trait  use CONTLABEL        keyword MAXIN    Allows to specify the max value we want to consider in the drawing of contour    helping by the keyword instead of the argument max  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword MININ    Allows to specify the min value we want to consider in the drawing of contour    helping by the keyword instead of the argument min  If the argument and the keyword are    specified in the same time  it is the value specified by the keyword which is retained       keyword NLEVEL    Number of contour to draw by default  20  active if   LABEL 0 or is not specified        keyword NOTRI    To force not to use the triangulation  Beware  in this case  the    drawing only works if the grid is undeformed  It means that each point of a longitude    give one latitude and each point of a latitude give one longitude  exept if we use    the keyword CELL_FILL 2     Comment: if the field contain points  values f_nan  then we even do a triangulation       keyword OVERPLOT    To make a plot over an other one     Comment: Contrarily to the use of CONTOUR or VECTEUR  the use of this keyword    does not the caption and or the color bar       keyword SIN    Activate this keyword if we want the x axis to be traced in sinus of the    latitude when we make a drawing f y       keyword STRICTFILL    Activate this keyword to that the filling of contours be    precisely done between the min and the max specified letting values inferior at the    specified min and values superior at the specified max in white       keyword STYLE    Contour s style to adopt to draw isolines by default  style 0  see style pro       keyword WDEPTH    To specify that the field is at W depth instead of T    depth  automatically activated if vargrid eq  W       keyword XZ   Force to make a cut following xz      keyword YZ   Force to make a cut following yz      keyword ZOOM    Depth where i can make our maximum zoom  By default 200m or max depth if it is inferior at 200m      uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr    7 1999   Sebastien Masson 08 02 2000 checkfield and   notri keyword       version    Id: pltz pro 142 2006 07 21 12:47:49Z navarro        todo seb L 20   26  L 215   221           pro pltz  tab  giventype  givenmin  givenmax  BOXZOOM   boxzoom  CONTOUR   contour               ENDPOINTS   endpoints  INTERVALLE   intervalle  INV   inv  ZRATIO   zratio               CONTINTERVALLE   contintervalle  LABEL   label  CONTLABEL   contlabel               STYLE   style  CONTMAX   contmax  SIN   sin  TYPEIN   typein               CONTMIN   contmin  NLEVEL   nlevel  CONTNLEVEL   contnlevel               NOTRI   notri  USETRI   usetri  FILLXDIR   fillxdir               ZOOM   zoom  XZ   xz  YZ   yz  MININ   minin  MAXIN   maxin               STRICTFILL   strictfill  OVERPLOT   overplot  MASKFILL   maskfill               WDEPTH   wdepth  REALSECTION   realsection               _EXTRA   ex     include common     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             For key_performance       1st part: initialization small calculations      Comment: we do not reinitializate when we call back plt in loop to use contour    if n_elements contour  ne 4 AND NOT keyword_set overplot  then reinitplt     if n_elements contour  ne 4 THEN saveboxparam   boxparam4pltz dat       Reading of the field      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 n_elements realsection  EQ 0 then realsection   1   IF n_elements usetri  EQ 0 THEN BEGIN     IF n_elements notri  NE 0 THEN usetri   2 notri ELSE usetri   1   ENDIF   no need of triangulation   IF usetri EQ 1 AND keyword_set realsection  THEN usetri   0   did we specify the type     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   pltz  TYPE   type  MIN   min  MAX   max         XZ   xz  YZ   yz  ENDPOINTS   endpoints  _extra   ex     if keyword_set endpoints  then begin     section  tab  z2d  glam  gphi  ENDPOINTS   endpoints  TYPE   type          BOXZOOM   boxzoom  DIREC   direc  WDEPTH   wdepth  _extra   ex     if z2d 0  EQ  1 AND n_elements contour  ne 4 then BEGIN        restoreboxparam   boxparam4pltz dat        return     ENDIF     nx   n_elements glam       ny   nx     if strupcase vargrid  EQ  W  then begin       gdep   gdepw firstzw:lastzw        nz   nzw     ENDIF ELSE BEGIN       gdep   gdept firstzt:lastzt        nz   nzt     ENDELSE     mask   z2d LE valmask 10    ENDIF ELSE BEGIN     z2d   checkfield tab   pltz  TYPE   type  BOXZOOM   boxzoom                          DIREC   direc  WDEPTH   wdepth  _extra   ex      if z2d 0  EQ  1 AND n_elements contour  ne 4 then BEGIN        restoreboxparam   boxparam4pltz dat        return     ENDIF     IF realsection EQ 1 THEN grille  mask  glam  gphi  gdep  nx  ny  nz  ifpltz   type  WDEPTH   wdepth       ELSE grille  mask  glam  gphi  gdep  nx  ny  nz  WDEPTH   wdepth   ENDELSE   stop     profmax    y range 0    profmin    y range 1    if not keyword_set zoom  then zoom   200   zoom   zoom 0    IF zoom LT profmin THEN zoom   profmax   if zoom GE vert2 then zoom   profmax   construction of the mask and of the axis   axis4pltz  type  mask  glam  gphi  gdep  XXAXIS   xxaxis  ZZAXIS   zzaxis  SIN   sin  ZRATIO   zratio  ZOOM   zoom  PROFMAX   profmax  PROFMIN   profmin  _extra   ex   to draw from bottom to top  avoid using cell_fill    z2d   reverse z2d  2      Determination of the mi:min and of the ma:max of z2d in the same way    as max: max and min: min for the drawing      nan   total finite z2d   nan   z2d    max   if n_elements maskfill  NE 0 then BEGIN     z2d   z2d mask masknan     if maskfill NE 0 then z2d   temporary z2d    maskfill 1b mask masknan    ENDIF     check the mask and the triangulation according to the grid type and    nan values  find the coordinates of the mask        if  where mask EQ 0 0  EQ  1 AND NOT keyword_set nan  then notri   1     if keyword_set notri  then trifield    1       ELSE trifield   triangule mask basic    if  usetri GE 1 AND  vargrid EQ  T  OR vargrid EQ  W        OR  usetri EQ 2 AND  vargrid NE  T  AND vargrid NE  W  THEN       trifield   triangule mask   basic      IF NOT keyword_set endpoints   THEN BEGIN     if keyword_set nan  then trinan   triangule masknan   basic  coinmonte   coinmontenan  coindescend   coindescendnan      decoupeterre  mask  glammsk  gphimsk  gdepmsk  type   type  WDEPTH   wdepth  REALSECTION   realsection     axis4pltz  type  mask  glammsk  gphimsk  gdepmsk  XXAXIS   xmask  ZZAXIS   zmask  SIN   sin  ZRATIO   zratio  ZOOM   zoom  PROFMAX   profmax  PROFMIN   profmin  _extra   ex   ENDIF ELSE BEGIN     xmask   xxaxis     zmask   zzaxis   ENDELSE      if  usetri GE 1 AND  vargrid NE  T  AND vargrid NE  W  THEN BEGIN      IF keyword_set realsection  THEN trimsk   triangule mask   basic        ELSE trimsk   triangule mask   basic  coinmonte   coinmontemask                                 coindescend   coindescendmask    ENDIF          dessin en lui meme     pltbase  z2d  xxaxis  zzaxis  mask  xmask  zmask         level_z2d  colnumb  overplot   overplot         contour   contour  trichamp   trifield  trimsk   trimsk          c_linestyle   linestyle         c_labels   1 indgen n_elements level_z2d  MOD 2          c_thick   thick  unsur2   unsur2         masknan   masknan  trinan   trinan         coinmontenan   coinmontenan  coindescendnan   coindescendnan         coinmontemask   coinmontemask  coindescendmask   coindescendmask         REALSECTION   realsection  USETRI   usetri  _extra   ex     recall of pltz in loop when contour is activated     if n_elements contour  eq 4 then BEGIN   It is the second time I pass in pltt     contour    mietma: mi  ma  unit:varunit  inter:intervalle    I send back the min  the max and the unity     return   endif   if keyword_set contour  THEN BEGIN      pourlegende    1  1  1  1      oldattributs   saveatt      oldcolnumb   colnumb     pltz  contour  contmin  contmax  CONTOUR   pourlegende  ZRATIO   zratio           INTERVALLE   contintervalle  LABEL   contlabel  STYLE   style   noerase            NLEVEL   contnlevel  ZOOM   zoom  BOXZOOM   boxzoom  ENDPOINTS   endpoints           STRICTFILL   strictfill  REALSECTION   realsection  MASKFILL   maskfill           USETRI   usetri  WDEPTH   wdepth  _extra   ex     restoreatt  oldattributs     colnumb   oldcolnumb   ENDIF       3rd part: drawing of the frame  caption  colorbar      if keyword_set overplot  then BEGIN       y range     zoom  profmin    We get back on physic coordinates     plot   0   0   nodata   noerase  title     subtitle     xstyle   5  ystyle   5     GOTO  fini   endif     Caption   dysplay of them     legende  mi  ma  type  CONTOUR   pourlegende  INTERVALLE   intervalle  DIREC   direc  endpoints   endpoints  _EXTRA   ex   if type eq  yz  then xaxe    lataxe  else xaxe    lonaxe    if keyword_set sin  OR NOT key_onearth then xaxe       Frame applied by default   plot   xxaxis 0  xxaxis n_elements xxaxis 1   zratio   zratio   noerase         xstyle   1 4 keyword_set endpoints  AND  type EQ  xz  AND lat1 NE lat2  OR  type EQ  yz  AND lon1 NE lon2          xtickformat   xaxe  _extra   ex   Add of an axis in the case of we use endpoints   if keyword_set endpoints  then addaxe  endpoints  type  posfenetre  _EXTRA   ex     Y axis in 1 or 2 part     if n_elements ex  NE 0 then BEGIN    To do not put title anymore     if  where tag_names ex  EQ  TITLE 0  NE  1 then ex TITLE         To do not put subtitle anymore     if  where tag_names ex  EQ  SUBTITLE 0  NE  1 then ex SUBTITLE         To have just one ytitle     if  where tag_names ex  EQ  YTITLE 0  NE  1 then BEGIN        ytitle   ex YTITLE       ex YTITLE           endif   ENDIF   htotal   posfenetre 3 posfenetre 1    hzoom   1 zratio htotal   if zoom LT profmax then       plot   0   0   nodata   noerase  ystyle   1  yrange    profmax  zoom 0 001          position   posfenetre 0  0  0   hzoom  _extra   ex  title     subtitle     ytitle          y range     zoom  profmin      We get back in physic coordinates    plot   0   0   nodata   noerase  ystyle   1  _extra   ex         title     subtitle     ytitle     position   posfenetre 0  htotal hzoom  0  0      to write the ytitle      if  d name EQ  PS  then       xs    max page_size  min   mi 1 key_portrait    mi key_portrait d x_px_cm     ELSE xs    d x_size   if n_elements ytitle  NE 0 then  y title   ytitle   charsize   chkstru ex   ycharsize   extract    if charsize EQ  1 then charsize    p charsize   IF chkstru ex   charsize  THEN ex charsize   charsize   if chkstru ex   ytitle   extract  NE   then       decalage   string format    e10 3  profmax    decalage   float strmid decalage  strpos decalage   e 1    posy   posfenetre 1 1 htotal 2   posx   posfenetre 0 decalage 3 d x_ch_size charsize xs   xyouts  posx  posy   y title   normal  orientation   90  color   0  ALIGNMENT    5  charsize   charsize  _extra   ex      colorbar     colnumb   colnumb 0:ncontour 1 keyword_set strictfill    barrecouleur  colnumb  min   max   ncontour keyword_set strictfill 2                     position   posbar  _extra   ex       4th part: possible print     fini:   terminedessin  _extra   ex         sortie:   restoreboxparam   boxparam4pltz dat      if keyword_set key_performance  NE 0 THEN print   temps pltz  systime 1 tempsun    return end   "); 
     256a[254] = new Array("./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html", "sbar_plot.pro", "", "             file_comments    Same thing that bar_plot but compatible with the whole environnement  common pro inclued       categories graphics     INPUTS: cd IDL bar_plot      keyword 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       keyword COLORS    Is an integer giving color of all colorbars   contrarily to colors    which is a vector giving the color of each colorbar       keyword NOREINITPLT   We active it if we do not want environnement variables  p   x   y   z    to be reinitilalizted by the procedure reinitplt      keyword _EXTRA   used to pass your keyword      uses   common pro      restrictions    If NOREINITPLT is not activated  all environnement    variables  p   x   y   z are reinitializtedby the procedure reinitplt      examples        IDL  sbar_plot  indgen 10 small    2 2 2 rempli        IDL  sbar_plot  indgen 10 small    2 2 3 noerase        IDL   ps      history   Sebastien Masson  smasson lodyc jussieu fr                         10 10 1999      version    Id: sbar_plot pro 142 2006 07 21 12:47:49Z navarro              PRO sbar_plot  Values  COLORS   colors  NOREINITPLT   noreinitplt  _extra   ex      compile_opt idl2  strictarrsubs    common   1  I reinitialize the graphic environment  variables  x   y et  p :     if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex    2  I place the drawing on the screen like on the postscript     IF chkstru ex   overplot EQ 0 THEN placedessin   autre  _extra   ex   3  Drawing     if n_elements COLORS  NE 0 then BEGIN       if n_elements COLORS  EQ n_elements Values  then col   colors          ELSE col   replicate colors 0  n_elements Values     ENDIF ELSE col   congrid indgen d n_colors   256  n_elements Values       bar_plot  Values  background    p background  colors   col                  xstyle   1  ystyle   1  _extra   ex   4  End of drawing     terminedessin  _extra ex      return end"); 
     257a[255] = new Array("./ToBeReviewed/PLOTS/DESSINE/scontour.html", "scontour.pro", "", "             File_comments   Same thing that contour but compatible with the whole environnement  common pro inclued       categories graphics     INPUTS:cd IDL contour      keyword NOREINITPLT   We active it if we do not want environnement variables  p   x   y   z    to be reinitilalizted by the procedure reinitplt       keyword _EXTRA   used to pass your keywords      uses   common pro      examples        IDL  z   dist 100          IDL  scontour  z  nlevels 10 small 1 2 1 xstyle 1 ystyle 1        IDL   ps      history Sebastien Masson  smasson lodyc jussieu fr                         10 10 1999       version    Id: scontour pro 142 2006 07 21 12:47:49Z navarro             PRO scontour  x  y  z  NOREINITPLT   noreinitplt  _EXTRA   ex     compile_opt idl2  strictarrsubs    common   1  I reinitializate the graphic environment  variables  x   y et  p :    if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex    2  i put the drawing on the screen like on the postcript    if ex contains norease and c_orientation keywords we force ex noerase   0   IF chkstru ex   overplot  EQ 0 THEN placedessin   autre  _extra   ex   fiddle when noerase is used with c_orentation    call contour with  nodata to get the graphic environment  then force   noerase   0 and overplot   1   IF size ex   type  EQ 8 THEN BEGIN   check if noerase is used with c_orentation     alltags   strlowcase tag_names ex      dummy   where alltags EQ  noerase  count1      dummy   where alltags EQ  c_orientation  count2      IF count1 count2 NE 0 THEN BEGIN        case n_params  OF         1:contour  x   nodata  _EXTRA   ex         2:contour  x  y   nodata  _EXTRA   ex         3:contour  x  y  z   nodata  _EXTRA   ex       endcase       ex noerase   0       ex   get_extra overplot  _extra   ex        noerase_orientation   1     ENDIF    ENDIF    3  je fais mon joli dessin    case n_params  OF     1:contour  x  xstyle   1  ystyle   1  _EXTRA   ex     2:contour  x  y  xstyle   1  ystyle   1  _EXTRA   ex     3:contour  x  y  z  xstyle   1  ystyle   1  _EXTRA   ex   ENDCASE   fiddle when noerase is used with c_orentation  draw the contour axis   IF keyword_set noerase_orientation   THEN BEGIN     ex noerase   1     ex overplot   0     case n_params  OF       1:contour  x  xstyle   1  ystyle   1   nodata  _EXTRA   ex       2:contour  x  y  xstyle   1  ystyle   1   nodata  _EXTRA   ex       3:contour  x  y  z  xstyle   1  ystyle   1   nodata  _EXTRA   ex     ENDCASE   ENDIF   4  End of drawing   terminedessin  _extra   ex     return end"); 
     258a[256] = new Array("./ToBeReviewed/PLOTS/DESSINE/splot.html", "splot.pro", "", "            file_comments    Same thing that plot but compatible with the whole environnement  common pro inclued       categories graphics      INPUTS:cd IDL   plot      keyword NOREINITPLT   We active it if we do not want environnement variables  p   x   y   z    to be reinitilalizted by the procedure reinitplt       keyword _EXTRA   used to pass your keywords      uses   common pro      restrictions    If NOREINITPLT is not activated  all environnement    variables  p   x   y   z are reinitializtedby the procedure reinitplt      examples        IDL  splot  indgen 10 ystyle 1 small 1 2 1 portrait        IDL  splot   indgen 10 ystyle 1 small 1 2 2 noerase        IDL   ps      history   Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999      version    Id: splot pro 142 2006 07 21 12:47:49Z navarro             PRO splot   x  y  NOREINITPLT   noreinitplt  _EXTRA   ex     compile_opt idl2  strictarrsubs    common   1  I reinitializate the graphic environment  les variables  x   y et  p :     if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex    2  i put the drawing on the screen like on the postcript     placedessin   autre  _extra   ex   3  Drawing    if n_elements y  EQ 0 then plot   x  xstyle   1  ystyle   1  _EXTRA   ex      ELSE plot   x  y  xstyle   1  ystyle   1  _EXTRA   ex   4  End of drawing     terminedessin  _extra ex       return end"); 
     259a[257] = new Array("./ToBeReviewed/PLOTS/DESSINE/tvplus.html", "tvplus.pro", "", "             file_comments   Enhanced version of tvscl      categories quick exploration of 2D arrays      INPUTS:       param Z2D  in required    2D array to visualize      param CELLSIZE  in optiona    This is the size  in pixel  of the square   representing 1 array element  By default  this size is computed   automatically in order that the size of the plotting window do   not exceed the screen size  If the user specify a large value   of cellsize that forces tvplus to create a window larger than   the screen  a  scrolling window  will be displayed instead of a   regular window  Unfortunately the nice fonctionnalities of tvplus   are not coded for  scrolling window  case       keyword BOTTOM   The lowest color index of the colors to be loaded in   the bar  default is 0       keyword C_NAN   The color number that should be used for the NaN values    default value is  d n_colors  1 e6  the test to find the masked value is ge   abs mask 10  This is necessary to avoid the rounding errors      keyword MIN    Scalar used to specify the min value of the color bar  default is 0      keyword MAX   Scalar used to specify the max value of the color bar  default is  d n_colors  tvplus  dist 100       history   Sebastien Masson  smasson lodyc jussieu fr                          18 12 98   Aug 2005: quick cleaning   english      version    Id: tvplus pro 142 2006 07 21 12:47:49Z navarro             PRO tvplus  z2d  cellsize  BOTTOM   bottom  C_MASK   c_mask  C_NAN   c_nan  WINDOW   window                 MIN   min  MAX   max  MASK   mask  OFFSET   offset  NOUSEINFOS   NOUSEINFOS                 NCOLORS   ncolors  NOINTERP   nointerp  _EXTRA   ex       compile_opt idl2  strictarrsubs     IF n_elements z2d  EQ 0 THEN return   arr   reform float z2d      check the size of the input array      if  size arr 0  NE 2 then begin     ras   report Input array must have only 2 dimensions and not   strtrim size arr   n_dimensions  1      return   endif     def of ncolmax  bottom  topcol et ncolors     ncolmax    d n_colors  arr     truemin   min   ENDIF ELSE truemin   min arr    if n_elements max  NE 0 then BEGIN      arr   arr  floor x cellsize   floor y cellsize   floor x cellsize   floor y cellsize   floor x2 cellsize   floor y2 cellsize     size arr 2 cellsize 1          x     x  x2    x    x sort x          y     y  y2    y    y sort y          IF keyword_set OFFSET  THEN offset    x 0  y 0 offset ELSE offset    x 0  y 0          tvplus  z2d x 0 :x 1  y 0 :y 1    WINDOW   window  MIN   min  MAX   max                     MASK   mask  C_MASK   c_mask  C_NAN   c_nan   NOUSEINFOS  OFFSET   OFFSET                     NCOLORS   ncolors  NOINTERP   nointerp  BOTTOM   bottom  _EXTRA   ex         return       END       ELSE:     endcase   ENDWHILE      x   xenvsauve    y   yenvsauve    p   penvsauve    x range   1 0  nx cellsize 5 offset 0     y range   1 0  ny cellsize 5 offset 1      return end"); 
     260a[258] = new Array("./ToBeReviewed/PLOTS/DIVERS/addaxe.html", "addaxe.pro", "", "             file_comments   Add an axis when we do an oblique section in pltz  pltt   or plt1d      categories   graphic      param ENDPOINTS  in required    Coordonnees of extremities of the section       param TYPE  in required    A string of two characters specifying the type of plot we do      param POSFENETRE  in required    The vector  p position corresponding to the frame position of    the drawing part of the plot       uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr       version    Id: addaxe pro 142 2006 07 21 12:47:49Z navarro             PRO addaxe  endpoints  type  posfenetre  _EXTRA   ex     compile_opt idl2  strictarrsubs    common      IF strpos type   x  NE  1 THEN BEGIN       IF endpoints 1  EQ endpoints 3  THEN return       IF key_onearth THEN BEGIN          formeaxe0    lonaxe          formeaxe1    lataxe          titreaxe    latitude        ENDIF ELSE BEGIN          formeaxe0             formeaxe1             titreaxe    j index        ENDELSE       range    endpoints 1  endpoints 3        if endpoints 2  LT endpoints 0  THEN range   reverse range     ENDIF ELSE BEGIN       IF endpoints 0  EQ endpoints 2  THEN return       IF key_onearth THEN BEGIN          formeaxe0    lataxe          formeaxe1    lonaxe          titreaxe    longitude        ENDIF ELSE BEGIN          formeaxe0             formeaxe1             titreaxe    i index        ENDELSE       range    endpoints 0  endpoints 2        if endpoints 3  LT endpoints 1  THEN range   reverse range     ENDELSE    if type EQ  yt  then BEGIN       axis yaxis 0 ytickformat formeaxe0 color 0 ystyle   1  _EXTRA   ex       axis yaxis 1 ytickformat formeaxe1 color 0 ystyle   1 ytitle titreaxe  yrange   range  _EXTRA   ex    ENDIF ELSE BEGIN       axis xaxis 0 xtickformat formeaxe0 color 0 xstyle   1 _EXTRA   ex       axis xaxis 1 xtickformat formeaxe1 color 0 xstyle   1 xtitle titreaxe  xrange   range  _EXTRA   ex    ENDELSE       return end"); 
     261a[259] = new Array("./ToBeReviewed/PLOTS/DIVERS/autoscale.html", "autoscale.pro", "", "             file_comments    We give a min and a max  and the procedure send back    the good contour interval and labels s value       categories    graphic      param MIN  in required    A reel number specifying above what value we want to trace a contour      param MAX  in required    A reel number specifying below what value we want to trace a contour      param CI   out    It is a reel number giving the contour interval  Use it in CONTOUR with the keyword LEVEL       restrictions   CI is a multiple of the unity in unity log of 10    It force the number of contour to be even       history   G  Roullet   aout 99  gr lodyc jussieu fr       version    Id: autoscale pro 142 2006 07 21 12:47:49Z navarro             PRO autoscale  min  max  ci      Estimation of a first CI  notice the presence of the floor  Inferior round    This CI is a multiple of the unity in unity log of 10        compile_opt idl2  strictarrsubs       ci    max min 20      ci   10 floor alog10 ci       n   0     ci0   ci       coef    2  2 5  5  10      We test differents CI  contour intervals  i e  1  2  2 5  5 and 10   until the number of contour is inferior to 30        WHILE ceil max min ci  GE 30 DO BEGIN            ci   ci0 coef n            n   n 1     ENDWHILE       min   floor min ci 2 ci 2     max   ceil max ci 2 ci 2          nlevels   round max min ci            We force the number of contour to be even       IF nlevels MOD 2 EQ 1 THEN BEGIN            nlevels   nlevels 1           max   max ci     END    END     "); 
     262a[260] = new Array("./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html", "axis4pltz.pro", "", "             file_comments   compute the mask and the axis for a vertical section      param MASK  in required     3d mask              param GLAM  in required    2d longitude        param GPHI  in required    2d latitude      param Z  in required    1d depth      keyword XXAXIS    to get the xaxis we need to use in pltbase            keyword ZZAXIS    to get the yaxis we need to use in pltbase      keyword SIN    Activate this keyword if we want the x axis to be traced in sinus of the    latitude when we make a drawing f y       keyword ZRATIO   When the drawing has a zoomed part  it is the size rapport between the zoomed part     hz  zoom height  and the whole drawing  ht  total height  By default  2 3      keyword _EXTRA   used to pass your keywords       Others: see pltz         history   Sebastien Masson  smasson lodyc jussieu fr                         June 24  2002      version    Id: axis4pltz pro 142 2006 07 21 12:47:49Z navarro              PRO axis4pltz  type  mask  glam  gphi  z  XXAXIS   xxaxis  ZZAXIS   zzaxis  SIN   sin  ZRATIO   zratio  ZOOM   zoom  PROFMAX   profmax  PROFMIN   profmin  _extra   ex     include common     compile_opt idl2  strictarrsubs    cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF        define the mask used for this section     if mask 0  NE  1 AND  size mask 0  NE 2 then begin     if type EQ  xz  then mask   total mask  2    1       ELSE mask   total mask  1    1   endif     define xxaxis and yyaxis the axis used for this section     nx    size glam 1    CASE  size gphi 0  OF     1:ny    size gphi 1      2:ny    size gphi 2    ENDCASE   CASE  size z 0  OF     1:nz    size z 1      2:nz    size z 2    ENDCASE     if type eq  yz  then BEGIN      IF  size gphi 0  EQ 1 then xxaxis   gphi ELSE BEGIN        IF keyword_set key_irregular  THEN BEGIN          cln    where gphi EQ max gphi 0          xxaxis   reform gphi cln MOD nx          ENDIF ELSE xxaxis   reform gphi 0        ENDELSE     if keyword_set sin  then xxaxis   sin pi 180 xxaxis      if  size z 0  EQ 1 THEN zzaxis   z ELSE zzaxis   z   ENDIF ELSE BEGIN     xxaxis   glam  0      if  size z 0  EQ 1 then zzaxis   z ELSE zzaxis   z   ENDELSE      We project the z axis in  0 1      if not keyword_set zratio  then zratio   2 3   if zoom ge profmax then zratio   1    if zoom LT profmax then begin     mp   projsegment profmin  zoom   0  zratio   mp      zzaxis where zzaxis LE zoom    mp 0 zzaxis where zzaxis LE zoom mp 1      mp   projsegment zoom  profmax   zratio  1   mp      zzaxis where zzaxis GE zoom    mp 0 zzaxis where zzaxis GE zoom mp 1    ENDIF ELSE BEGIN     mp   projsegment profmin  profmax   0  1   mp      zzaxis   mp 0 zzaxis mp 1    ENDELSE    to draw from bottom to top  avoid using cell_fill    CASE size zzaxis   n_dimensions  OF     1:zzaxis   reverse zzaxis       2:zzaxis   reverse zzaxis  2     ENDCASE   if mask 0  NE  1 then mask   reverse mask  2     return end"); 
     263a[261] = new Array("./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html", "barrecouleur.pro", "", "             file_comments   Overlayeur of colorbar      categories   utilities      restrictions pass all argument we want thanks to _extra      history   Sebastien Masson  smasson lodyc jussieu fr                          23 12 98      version    Id: barrecouleur pro 142 2006 07 21 12:47:49Z navarro        todo seb: mettre les keyword et les param         PRO barrecouleur  colnumb  clbinf  clbsup  clbdiv                       NOCOLORBAR   nocolorbar  CB_TITLE   cb_title                       NOFILL   nofill  COLOR_c   color_c                       min   min  max   max  divisions   divisions                       CB_SUBTITLE   cb_subtitle  POST   post  _extra   ex       compile_opt idl2  strictarrsubs    cm_general   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF     if keyword_set min  then clbinf   min   if keyword_set max  then clbsup   min   if keyword_set divisions  THEN  clbdiv   divisions   nocolorbar   keyword_set nocolorbar    keyword_set nofill                     keyword_set color_c          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        colorbarparam    colnumb:colnumb  clbinf:clbinf                           clbsup:clbsup  clbdiv:clbdiv     ENDIF ELSE BEGIN       save  colnumb  clbinf  clbsup  clbdiv               file   myuniquetmpdir    4colorbar dat     ENDELSE      if keyword_set nocolorbar  then return       ancienx    x    ancieny    y    ancienp    p    reinitplt     x style   1     y style   1        colorbar  cb_color   0  cb_charsize   ancienp charsize            pscolor   keyword_set post  division   clbdiv            min   clbinf  max   clbsup            cb_title   cb_title  discret   colnumb  _extra   ex       x  ancienx     y  ancieny     p  ancienp      return end"); 
     264a[262] = new Array("./ToBeReviewed/PLOTS/DIVERS/checkfield.html", "checkfield.pro", "", "FUNCTION err_1d  type  n1  name  n2     compile_opt idl2  strictarrsubs     return  report Error in     type     type plot with a 1D input array:                         the number of elements of the input vector  strtrim n1  1                           is not equal to     name      strtrim n2  1   simple  END   FUNCTION err_2d  type  sz  nx  ny  nz     compile_opt idl2  strictarrsubs      cm_4mesh    cm_4cal   return  report Error in     type     type plot with a 2D input array:                         the array dimensions     tostr sz 1:2      are incompatible                         with the the domain dimensions                          jpi nx  jpj ny  jpk nz  jpt                            strtrim jpi  1        strtrim nx  1                              strtrim jpj  1        strtrim ny  1                              strtrim jpk  1        strtrim nz  1                              strtrim jpt  1       simple  END   FUNCTION err_3d  type  sz  nx  ny  nz     compile_opt idl2  strictarrsubs      cm_4mesh    cm_4cal   return  report Error in     type     type plot with a 3D input array:                         the array dimensions     tostr sz 1:3      are incompatible                         with the the domain dimensions                          jpi nx  jpj ny  jpk nz  jpt                            strtrim jpi  1        strtrim nx  1                              strtrim jpj  1        strtrim ny  1                              strtrim jpk  1        strtrim nz  1                              strtrim jpt  1       simple  END              file_comments   In input of plt  pltz  pltt and plt1d  it check that the field give    a size compatible with the domain and  if needed  average to give us    a 2d array if we make a plot of the type:  xy   xz   xt   yz   yt       zt  or a 1d array if we make a plot of the type:  x   y   z   t       categories   graphic       param FIELD  in required    A field respecting litchamp pro s criterions  See IDL xhelp litchamp       keyword BOXZOOM    Vector indicating the geographic zone on which we want to cut the map      If BOXZOOM has :   1 element : The extraction is made on  lon1  lon2  lat1  lat2  0 boxzoom 0    2 elements: The extraction is made on  lon1  lon2  lat1  lat2  boxzoom 0 boxzoom 1    4 elements: The extraction is made on  Boxzoom  0  max gdept  gdepw    5 elements: The extraction is made on  Boxzoom 0:3  0  Boxzoom 4    6 elements: The extraction is made on Boxzoom     Where lon1  lon2 lat1 lat2 are global variables defined at the last domdef       keyword WDEPTH   to specify that the field is at W depth instad of T    depth  automatically activated if vargrid eq  W        keyword VECTEUR   It is a structure composed by 2 elements containing the 2 fields U   and V of values of the zonal and meridian component of the vector of the fields   to draw  These fields can be an array or a structure          For example: vecteur matriceu:lec unsurface matricev:lec vnsurface          Comment: name of elements of vectors are inconsenquential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword _EXTRA   used to pass your keywords      keyword DIREC         uses    common pro      history   Sebastien Masson  smasson lodyc jussieu fr                         08 02 2000      version    Id: checkfield pro 142 2006 07 21 12:47:49Z navarro        todo seb: mettre les param              FUNCTION checkfield  field  procedure  TYPE   type  BOXZOOM   boxzoom  DIREC   direc  NOQUESTION   noquestion  VECTEUR   vecteur  WDEPTH   wdepth  _EXTRA   ex       compile_opt idl2  strictarrsubs     include commons  cm_4mesh  cm_4cal  cm_4data   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     I1  Reading of the field     if n_elements field  EQ 0 then return  report field undefined    arr   litchamp field    first check   IF n_elements arr  EQ 1 THEN BEGIN     if arr EQ  1 then         return  report Error: input array    1  Maybe the reading did ont perform well   simple        ELSE return  report Error: input array is a scalar   simple         ENDIF   nan   total finite arr   nan    firstzw 1        lastzw    lastzw 1    firstzt 1        lastzt    lastzt 1     jpk 1        nzt   lastzt   firstzt   1     ENDELSE      updateold   ENDIF   make the automatic definition of type for pltz if type is not specified    IF type EQ  z  AND procedure EQ  pltz  THEN       if  lon2 lon1  gt  lat2 lat1  then type    xz  else type    yz    make the automatic definition of type for pltt if type is not specified    IF type EQ  unkownpltt  AND procedure EQ  pltt  THEN       if  lon2 lon1  gt  lat2 lat1  then type    xt  else type    yt      verification of the input array size and the value of the type     grille   1   1   1   1  nx  ny  nz  firstx  firsty         firstz  lastx  lasty  lastz  WDEPTH   wdepth     basic checks     CASE 1 OF     nx EQ 1: IF strpos type   x  NE  1 THEN return  report Error: impossible to make a     type     type plot with nx   1    simple      ny EQ 1: IF strpos type   y  NE  1 THEN return  report Error: impossible to make a     type     type plot with ny   1    simple      nz EQ 1: IF strpos type   z  NE  1 THEN return  report Error: impossible to make a     type     type plot with nz   1    simple      jpt EQ 1: IF strpos type   t  NE  1 THEN return  report Error: impossible to make a     type     type plot with jpt   1    simple      ELSE:   ENDCASE     is the size of the array compatible with teh domain      arr   fitintobox temporary arr  nx  ny  nz  firstx  firsty         firstz  lastx  lasty  lastz      sz   size arr    case sz 0  of       0:return  arr       1:BEGIN       nele   n_elements arr        case type of          t :if jpt NE nele THEN return  err_1d type  nele   jpt  jpt           x :IF  nx NE nele THEN return  err_1d type  nele    nx   nx           y :IF  ny NE nele THEN return  err_1d type  nele    ny   ny           z :IF  nz NE nele THEN return  err_1d type  nele    nz   nx          ELSE:return  report Error:                                    Impossible to make a  type  plot with a 1D array   simple        ENDCASE     END        2:BEGIN       case type of          x :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny:direc    y    xy array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz:direc    z    x y z array             sz 1  EQ nx AND sz 2  EQ jpt:direc    t    xt array             ELSE:return  err_2d type  sz  nx  ny  nz            endcase         end          y :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny:direc    x    xy array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz:direc    z     x yz array             sz 1  EQ ny AND sz 2  EQ jpt:direc    t    yt array             ELSE:return  err_2d type  sz  nx  ny  nz            endcase         END          z :BEGIN           case 1 of             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz:direc    x    x y z array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz:direc    y     x yz array             sz 1  EQ nz AND sz 2  EQ jpt:direc    t    zt array             ELSE:return  err_2d type  sz  nx  ny  nz            endcase         END          t :BEGIN           case 1 OF             sz 1  EQ nx AND sz 2  EQ jpt:direc    x    xt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ jpt:direc    y     x yt array             nx EQ 1 AND ny EQ 1 AND sz 1  EQ nz AND sz 2  EQ jpt:direc    z     x y zt array             ELSE:return  err_2d type  sz  nx  ny  nz            ENDCASE         END          xy :IF sz 1  NE nx OR sz 2  ne  ny THEN return  err_2d type  sz  nx  ny  nz    xy array          xz :IF sz 1  NE nx OR sz 2  ne  nz THEN return  err_2d type  sz  nx  ny  nz    xz array          yz :IF sz 1  NE ny OR sz 2  NE  nz THEN return  err_2d type  sz  nx  ny  nz    yz array          xt :IF sz 1  NE nx OR sz 2  NE jpt THEN return  err_2d type  sz  nx  ny  nz    xt array          yt :IF sz 1  NE ny OR sz 2  NE jpt THEN return  err_2d type  sz  nx  ny  nz    yt array          zt :IF sz 1  NE nz OR sz 2  NE jpt THEN return  err_2d type  sz  nx  ny  nz    zt array       ENDCASE     END        3:BEGIN       case type of          x :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ nz:direc    yz    xyz array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    zt    x y zt array             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    yt    xyt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          y :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ nz:direc    xz    xyz array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    zt     x yzt array             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    xt    xyt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          z :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ nz:direc    xy    xyz array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    yt     x yzt array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    xt    x y zt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          t :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    xy    xyt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    yz     x yzt array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    xz    x y zt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          xy :BEGIN           case 1 OF             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ  nz:direc    z    xyz array             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    t    xyt array             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          xz :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ  nz:direc    y    xyz array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    t    x y zt             ELSE:return  err_3d type  sz  nx  ny  nz            endcase         END          yz :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ  nz:direc    x    xyz array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    t     x yzt             ELSE:return  err_3d type  sz  nx  ny  nz             endcase         END          xt :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    y    xyt array             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    z    x y zt array             ELSE:return  err_3d type  sz  nx  ny  nz             endcase         END          yt :BEGIN           case 1 of             sz 1  EQ nx AND sz 2  EQ ny AND sz 3  EQ jpt:direc    x    xyt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    z     x yzt array             ELSE:return  err_3d type  sz  nx  ny  nz             endcase         END          zt :BEGIN           case 1 of             sz 1  EQ nx AND ny EQ 1 AND sz 2  EQ nz AND sz 3  EQ jpt:direc    x    x y zt array             nx EQ 1 AND sz 1  EQ ny AND sz 2  EQ nz AND sz 3  EQ jpt:direc    y     x yzt array             ELSE:return  err_3d type  sz  nx  ny  nz             ENDCASE         END        ENDCASE      END        4:BEGIN        CASE type OF          x :direc    yzt           y :direc    xzt           z :direc    xyt           t :direc    xyz           xy :direc    zt           xz :direc    yt           yz :direc    xt           xt :direc    yz           yt :direc    xz           zt :direc    xy        ENDCASE      END   ENDCASE     IF keyword_set direc  THEN BEGIN     IF strpos direc   t  NE  1 OR strpos type   t  NE  1 THEN         arr   grossemoyenne temporary arr  direc  boxzoom   localbox                               NAN   nan   NODOMDEF  WDEPTH   wdepth  _extra   ex        ELSE arr   moyenne temporary arr  direc  boxzoom   localbox                            NAN   nan   NODOMDEF  WDEPTH   wdepth  _extra   ex    ENDIF           RETURN  arr END"); 
    265265a[263] = new Array("./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html", "checktypeminmax.pro", "", "          NAME:     PURPOSE:     CATEGORY:     CALLING SEQUENCE:      INPUTS:     KEYWORD PARAMETERS:     OUTPUTS:     COMMON BLOCKS:common pro     SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY:Sebastien Masson  smasson lodyc jussieu fr       todo seb         PRO checktypeminmax  procedure  TYPE   type  MIN   min  MAX   max  XY   xy                          XZ   xz  YZ   yz  XT   XT  YT   YT  ZT   zt                          TT   tt  XX   xx  YY   yy  ZZ   zz                          XINDEX   xindex  YINDEX   yindex                          ENDPOINTS   endpoints  _extra   ex       compile_opt idl2  strictarrsubs    common      case size type   type  of       0:       7:       ELSE:BEGIN          vraimin   type          case size min   type  of             0:BEGIN                 min   vraimin                type   0             END             7:BEGIN                 type   min                min   vraimin             end             ELSE:BEGIN                case size max   type  of                   0:BEGIN                      max   min                      min   vraimin                      type   0                   END                   7:BEGIN                       type   max                      max   min                      min   vraimin                   end                   ELSE:BEGIN                      rien   report Probleme dans la definition des arguments en entree de                                         procedure   chkwidget                       return                   end                endcase             end          endcase       end    endcase      if keyword_set xy  then type    xy     if keyword_set xz  then type    xz     if keyword_set yz  then type    yz     if keyword_set xt  then type    xt     if keyword_set yt  then type    yt     if keyword_set zt  then type    zt     if keyword_set tt  then type    t     if keyword_set xx  then type    x     if keyword_set yy  then type    y     if keyword_set zz  then type    z       if keyword_set type  then begin      if type EQ  plt  then type          if type EQ  pltz  then type          if type EQ  pltt  then type          if type EQ  plt1d  then type        endif     determination du type de plot que l on veut faire      if NOT keyword_set type  then BEGIN       case procedure of          plt :type    xy           pltz :BEGIN           if keyword_set endpoints  then BEGIN              lon1   min endpoints 0  endpoints 2  max   lon2              lat1   min endpoints 1  endpoints 3  max   lat2              if  lon2 lon1  gt  lat2 lat1  then type    xz  else type    yz            ENDIF ELSE type    z          END          pltt :BEGIN           if keyword_set endpoints  then BEGIN              lon1   min endpoints 0  endpoints 2  max   lon2              lat1   min endpoints 1  endpoints 3  max   lat2              lat2   max endpoints 1  endpoints 3              if  lon2 lon1  gt  lat2 lat1  then type    xt  else type    yt            ENDIF ELSE type    unkownpltt          END          plt1d :BEGIN           if keyword_set endpoints  then BEGIN              lon1   min endpoints 0  endpoints 2  max   lon2              lat1   min endpoints 1  endpoints 3  max   lat2              if  lon2 lon1  gt  lat2 lat1  then type    x  else type    y            ENDIF ELSE BEGIN             type                 WHILE type NE  x  AND type NE  y  AND type NE  z  DO BEGIN               type   xquestion Quel type de plot 1D voulez vous faire  x y z ou t                                       chkwidget                type   strlowcase type              endwhile           ENDELSE         END       endcase     ENDIF      WHILE type NE  xy  AND type NE  xz  AND type NE  yz          AND type NE  xt  AND type NE  yt  AND type NE  zt          AND type NE  t  AND type NE  x  AND type NE  y          AND type NE  z  AND type NE  unkownpltt  DO BEGIN       type   xquestion What kind of plot do you want to do  xy xz yz xt yt zt t x y z                                 chkwidget        type   strlowcase type      ENDWHILE               return   end"); 
    266 a[264] = new Array("./ToBeReviewed/PLOTS/DIVERS/determineminmax.html", "determineminmax.pro", "", "             file_comments   Determine the min and the max of a mask array      categories    Lightening of the writting of plt  pltz and pltt      param TAB  in required    The array whose we determine the min and the max      param MASK  in required    The mask array       keyword MININ    It is a scalar which  if it is not defined  take the value of VRAIMIN      keyword MAXIN    It is a scalar which  if it is not defined  take the value of VRAIMAX      keyword ZEROMIDDLE    Force the middle of the colorbar to be equal   to 0  force max max abs min max  and min max        keyword _EXTRA   used to pass your keywords      keyword USETRI   To force using triangulation        param VRAIMIN  out    The min of the array      param VRAIMAX  out    The max of the array      uses   Common pro      restrictions   Look if the field is constant on the sea      history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98      version    Id       todo seb: manque les param glam et gphi           PRO determineminmax  tab  mask  vraimin  vraimax  glam  gphi  MAXIN   maxin  MININ   minin  INTERVALLE   intervalle  usetri   usetri  ZEROMIDDLE   zeromiddle  _extra   ex     compile_opt idl2  strictarrsubs    common       Type o fthe vertical grid:   if vargrid EQ  W  then nz   nzw ELSE nz   nzt   liste des points mer   if  size mask 0  EQ 3 then mer   mask    0      ELSE mer   mask   If key_irregular eq 1  we mask also points which are not in the geographic    domain defined by lon1 lon2 lat1 lat2   if keyword_set key_irregular  AND n_elements glam  NE 0 AND n_elements gphi  NE 0 then begin     dom     where glam LT lon1 OR glam GT lon2 OR gphi LT lat1 OR gphi GT lat2      if dom 0  NE  1 then mer dom    0   endif     mer   where mer eq 1      if mer 0  eq  1 then begin     ras   report Il n y a que de la terre sur le dessin      vraimax   0     vraimin   0     maxin   vraimax 1     minin   vraimin 1     usetri   0     return   endif   ma and mi : max and min on ocean points   vraimax   max tab mer  min   vraimin  _extra   ex    sameminmax   testvar var   minin  EQ testvar var   maxin     if n_elements maxin  EQ 0 OR sameminmax then maxin   vraimax   if n_elements minin  EQ 0 OR sameminmax then BEGIN      if keyword_set intervalle  then minin   floor vraimin intervalle intervalle       ELSE minin   vraimin   endif   if vraimin eq vraimax then BEGIN     IF size vraimin   type  EQ 1 THEN vraimin   fix vraimin      question    Warning: constant filed  same value everywhere :     strtrim vraimin  2     Shall we make the plot      answer   report question   default_no   question      if answer then begin       maxin   vraimax 1       minin   vraimin 1     endif ELSE tab    1   ENDIF   IF keyword_set zeromiddle  THEN BEGIN       maxin   max abs minin  maxin        minin    maxin   ENDIF     return end"); 
    267 a[265] = new Array("./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html", "givewindowsize.pro", "", ""); 
    268 a[266] = new Array("./ToBeReviewed/PLOTS/DIVERS/meridienparallele.html", "meridienparallele.pro", "", "             file_comments   Trace some meridians or parallel      categories   graphic      param COUPE The type of drawing we treat      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98      version    Id            PRO meridienparallele  coupe     compile_opt idl2  strictarrsubs    common      case coupe of        xy :BEGIN           if lon1 lt 180 and lon2 gt 180 then             plot   180 180 lat1 lat2 noerase color 0          if lon1 lt 0 and lon2 gt 0 then             plot   0 0 lat1 lat2 noerase color 0          if lon1 lt 360 and lon2 gt 360 then             plot   360 360 lat1 lat2 noerase color 0          if lat1 lt 0 and lat2 gt 0 then             plot   lon1 lon2 0 0 noerase color 0       END     endcase     return end"); 
    269 a[267] = new Array("./ToBeReviewed/PLOTS/DIVERS/placecolor.html", "placecolor.pro", "", "             file_comments   allows to trace the independently from a graph   By default  trace a color bar of the same type tahn the one present in plt   and pltz  If max  min and divisions are not stipulated  then max sup min inf   and divisions div       categories   graphic      param POS   Vecteur composed by 4 elements giving coordinates of the left bottom    corner and of the right up one  in cm  in which we want to do the color bar      keyword _extra   used to pass your keywords      uses   common pro      restrictions   Only usable for POSTCRIPTs effectuated with plein2dessin      history   Sebastien Masson  smasson lodyc jussieu fr   7 5 98      version    Id            pro placecolor  pos  _extra   ex     include commons     compile_opt idl2  strictarrsubs    cm_4ps    IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew    ENDIF        xsave    x    ysave    y    psave    p      reinitplt   z   invert    pos 1 pos    mipgsz   min page_size  max   mapgsz     if key_portrait eq 1 then begin       pos 0 pos 0 mipgsz         pos 1 pos 1 mapgsz           pos 2 pos 2 mipgsz        pos 3 pos 3 mapgsz        endif else begin       pos 0 pos 0 mapgsz           pos 1 pos 1 mipgsz           pos 2 pos 2 mapgsz           pos 3 pos 3 mipgsz        ENDELSE      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         colnumb   colorbarparam colnumb       clbinf   colorbarparam clbinf        clbsup   colorbarparam clbsup       clbdiv   colorbarparam clbdiv      ENDIF ELSE BEGIN       file   myuniquetmpdir    4colorbar dat        IF file_test file  THEN BEGIN          restore  file                  if size ex   type  EQ 8 then BEGIN              if  where tag_names ex  EQ  MIN 0  NE  1 then clbinf   ex MIN             if  where tag_names ex  EQ  MAX 0  NE  1 then clbsup   ex MAX             if  where tag_names ex  EQ  DIVISIONS 0  NE  1 then clbdiv   ex DIVISIONS          ENDIF            COLORBAR  COLOR   0  DIVISIONS   clbdiv  DISCRET   colnumb               cb_color   0  POSITION   pos  MAX   clbsup               MIN   clbinf  cb_charsize    p charsize               _extra   ex       ENDIF    ENDELSE       x   xsave     y   ysave     p   psave      return end"); 
    270 a[268] = new Array("./ToBeReviewed/PLOTS/DIVERS/placedessin.html", "placedessin.pro", "", "             file_comments    Putting into place of the drawing  opening of the window or of the PS      categories    Utilities      param TYPEDESSIN   It is a chain or characteres specifying what procedure is called by PLACEDESSIN:  plt   pltz  or  pltt       keyword LANDSCAPE    Force the page or the window on the screen to be in lenthened position       keyword LCT    Is an integer designating the number of the palette of color we want to use for the plot        keyword MAP    We use it when we want to do a projection    This keyword can be of two types:       MAP P0lat P0lon Rot  For the descrption of these 3 values  see the online help of MAP_SET         MAP: In this case  map is automatically caculated have the value:             map    0   lon1 lon2 2  0    Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo:   IDL  demo   Then choose earth sciences and  mapping    Comment2: By default it  is a cindrical projection which is effectuated  with or without the keyword map     If we want an other projection  MAP must be activated and we have to add the keyword:  nom_projection    For example  for a polar projection centered on the south pole:   IDL  domdef 180 180 90 45   IDL  plt  tab   stereo map 90 0 0       keyword NOCOLORBAR    We active it if we do not want the colorbar      keyword NOFILL    We active it if we only want contours in black and white with a white background       keyword NOERASE    We active it to make a drawing without creating a new frame       keyword SMALL    Vector composed of 3 or 4 elements  applyed to make a drawing on a    small portion of a page or screen  It delimit the zone where the drawing will be done        If there is 4 elements:   then is constituated of coordinates  expressed in cm located from the up and    left corner of the page or the window  in portrait like in lanscape  of the bottom    and left corner and of the up and right corner of the drawing zone        If there is 3 elements:   in this case  we divide the page or the screen in small 0  columns and in small 1  lines    the drawing made in the box numbered small 2  The numerotation starting up and left by    the number 1 and then  following the writing direction    By default  we make the largest drawing we can do  conserving the aspect rapport     exept when REMPLI is activated        keyword PORTRAIT    Force the page or the window to be in standing position       keyword POST    Make a postscript  Only works if we made one drawing on the page    If we make several drawing  use  ps       keyword REMPLI    Force the drawing to occupy the whole space defined by small       keyword WINDOW   Number of the window on which we want to do the graph  Allow to open several windows     By default  we open  IDL0       keyword CB_TITLE    The colorbar s title      keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates        keyword VECTEUR   It is a structure composed by 2 elements containing the 2 fields U   and V of values of the zonal and meridian component of the vector of the fields   to draw  These fields can be an array or a structure          For example: vecteur matriceu:lec unsurface matricev:lec vnsurface          Comment: name of elements of vectors are inconsenquential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword DIREC    t   x   y   z   xys   xz   yz   xyz   xt   yt   zt   xyt           xzt   yzt   xyzt  Direction on which do averages       keyword _EXTRA   Used to pass your keywords       keyword COLOR_C    To draw the contour in color instead of in black   with filling in color       param POSFENETRE  out    It is a vector composed by 4 elements containing the position of the frame    containing captions and the graph in normalized coorinates     Comment: To position the drawing  we have to do  p position posfenetre    after the call of the caliber      param POSBAR  out    Like POSFENETRE but for the color bar     Same comment to position the color bar   p position posbar      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          26 4 1999      version    Id            PRO placedessin  typedessin  posfenetre  posbar  BARMARGES   barmarges                      NOCOLORBAR   nocolorbar  NOFILL   nofill  COLOR_c   color_c                      CONTOUR   contour                      VECTEUR   vecteur  PORTRAIT   portrait  LANDSCAPE   landscape                      SMALL   small  MARGES   marges  MAP   map                      REMPLI   REMPLI  POST   post  WINDOW   window                      ENDPOINTS   endpoints  TYPE   type  BASICMARGES   basicmarges                      NOERASE   noerase  LCT   lct  DIREC   direc  CB_TITLE   cb_title  _extra   ex     include common     compile_opt idl2  strictarrsubs    cm_4ps  cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF     1  Determination of the size of margins  unity number of lines or columns    to the left  to the right  up and down    BEWARE in margebar  the last element is the right up corner    instead of the up margin     if n_elements typedessin  EQ 0 then typedessin    autre    if keyword_set basicmarges  then begin     marge   1 6  2  4  3      if keyword_set marges  THEN marge   marge marges     margebar   1 marge 0 1  marge 1 1   marge 2 8   marge 2 6      if keyword_set barmarges  then margebar   margebar barmarges   ENDIF ELSE BEGIN      nocolorbar   keyword_set nocolorbar    keyword_set nofill    keyword_set color_c        case typedessin of        plt :marge   1 6  2  4  3         pltt :marge   1 6 4 type EQ  xt  2  4  4         pltz :marge   1 6  2  4  3        else:marge   1 6  2  4  3      ENDCASE     if keyword_set marges  THEN marge   marge marges     if NOT keyword_set barmarges  then barmarges   replicate 0  4      barmarges 3     barmarges 3      margebar   1 marge 0 1  marge 1 1  2  4 barmarges     marge   marge 0  0  4  0 keyword_set cb_title      IF keyword_set direc  THEN         marge   marge 0  0  2  0 strlowcase direc  NE  t      marge   marge 0  0  2  0 keyword_set contour      marge   marge 0  0  2  0 keyword_set vecteur      if n_elements lon1  NE 0 and n_elements lon2  NE 0         and n_elements lat1  NE 0 and n_elements lat2  NE 0 then begin       if keyword_set type  then           marge   marge 0  3 type EQ  yt  AND lon1 NE lon2  0                            2 type NE  yt  AND lat1 NE lat2 keyword_set endpoints          ELSE marge   marge 0  0  0  2 lat1 NE lat2 keyword_set endpoints      endif     marge   marge 0  0  2 margebar 3  0 1 keyword_set nocolorbar    ENDELSE     Portrait or landscape     IF NOT keyword_set noerase  THEN BEGIN      CASE 1 OF       n_elements portrait  NE 0:key_portrait   portrait       n_elements landscape  NE 0:key_portrait   1 landscape       ELSE:     ENDCASE   ENDIF      What type of aspect rapport  it will be crushed if YXASPECT exist      case typedessin of      plt :yaspect   1 lat2 lat1 lon2 lon1       pltt :yaspect   1       pltz :yaspect    5     ELSE:yaspect   1    endcase     2  calculation of  p position   see calibre pro        IF NOT keyword_set small  then small    1  1  1      if keyword_set map  then rempli   1     calibre  yaspect  marge  margebar  small  posfenetre  posbar  REMPLI   rempli  _extra   ex      p position   posfenetre     3  opening of the graphic window or of the postscript     case 1 of   case of the first drawing on a postcript     keyword_set post  AND  d name ne  PS :openps  _extra   ex   case of the first drawing on a screen     keyword_set post  EQ 0 AND keyword_set noerase  EQ 0         AND  d name ne  PS  AND  d name ne  Z :BEGIN       if not keyword_set window  then window   0   For the using of  ps oups et de  vzoom       if lmgr demo  EQ 0 then BEGIN   Are we in the demo mode          if  journal NE 0 then journal   We close te journal if it is open         homedir   isadirectory io   homedir  title    Bad definition of homedir          def_myuniquetmpdir         journal  myuniquetmpdir idlsave pro    We open a new one         help   recall_commands  output   listecommande   We recuperate the last command         listecommande   strmid strcompress listecommande 1  2          journal  listecommande   We write it in the journal       ENDIF       windsize   givewindowsize        window  window  xsize   windsize 0  ysize   windsize 1   retain   2  _extra   ex   When we used colors which are coded on 24bit  we can not stipulate the background color    of a window thanks to  p background  so we have to to this:            if  d n_colors gt 256 then begin               device  decomposed 1                p background ffffff x               plot 0 0   nodata  xstyle   4  ystyle   4               device  decomposed 0            endif     END     ELSE:   endcase     if n_elements lct  NE 0 then lct  lct  _extra   ex      return end"); 
    271 a[269] = new Array("./ToBeReviewed/PLOTS/DIVERS/projsegment.html", "projsegment.pro", "", "             file_comments   project linearly a segment  a vector whose boundaries are  a b  on    a vector whose boundaries are  c d       categories   calculation      param VECTEUR   A vector whose the first element must be the smallest one and the last must be the biggest one       param BORNES    New boundaries of the vector       keyword MP   Activate this keyword to the function send back this a vector of 2    elements which are the m and p of the linear projection y mx p used    to pass from the  a b  segment to the  c d  segment       returns    A vector whose new boudaries are specified by BORNES       examples          IDL  a indgen 9       IDL  print  a             0       1       2       3       4       5       6       7       8     IDL  print  projsegment a 0 80              0      10      20      30      40      50      60      70      80     IDL  print  projsegment a 0 80               0      10      20      30      40      50      60      70      80     IDL  print  projsegment a 80 0               80      70      60      50      40      30      20      10      0      history   Sebastien Masson  smasson lodyc jussieu fr                          24 6 1999      version    Id            FUNCTION projsegment  vecteur  bornes  MP   mp       compile_opt idl2  strictarrsubs      a1   float vecteur 0     b1   float vecteur n_elements vecteur 1     a2   float bornes 0     b2  float  bornes 1     if a1 EQ b1 then return   1    m    b2 a2 b1 a1     p   a2 m a1      if keyword_set mp  then return   m  p  ELSE return  m vecteur p   end"); 
    272 a[270] = new Array("./ToBeReviewed/PLOTS/DIVERS/restoreatt.html", "restoreatt.pro", "", "             file_comments   Allows to reattribuate global variables associated with a field    when we give a stucture created by saveatt pro by example       categories    Utilities      param STRUCT  in required    a structure like the one who read litchamp            See IDL  xhelp litchamp       uses   common pro      restrictions   Change the value if global variables attribute of a field: vargrid     varname  varunit  vardate  varexp   valmask and time       history   Sebastien Masson  smasson lodyc jussieu fr                          15 6 1999      version    Id            PRO restoreatt  struct     compile_opt idl2  strictarrsubs    common      nomelements   tag_names struct     for i   0  n_tags struct 1 do begin       case strlowcase strmid nomelements i  0  1  of           g :vargrid   strupcase struct i            n :varname   struct i            u :varunit   struct i            e :varexp   struct i            m :valmask   struct i            d :BEGIN              if size struct i type  EQ 7 THEN BEGIN                 vardate   struct i              ENDIF ELSE BEGIN                vardate     time series                 time   struct i              ENDELSE          end          ELSE:BEGIN              ras   report Le nom  nomelements i  ne correspont a aucun element reconnu de la structure   C cf  IDL  xhelp   litchamp           end       endcase    endfor      return end"); 
    273 a[271] = new Array("./ToBeReviewed/PLOTS/DIVERS/rotation.html", "rotation.pro", "", "       file_comments   Rotate two vectors by a specified amount           param X  in required    orignal data point pairs      param Y  in required    orignal data point pairs                 param DEG  in required    degrees to rotate           param NX  out    rotated point pairs        param NY  out    rotated point pairs           history   Jeff Bennett  U of Colorado      version    Id       PRO ROTATION X Y DEG NX NY     compile_opt idl2  strictarrsubs   ang deg dtor   convert to polar coordinates for rotation r   sqrt x x   y y  theta   r 0   get angle in for loop so that zero radii will be left as zero angle for i   0 n_elements r 1 do   if r i  ne 0 then theta i    atan y i x i    range from  pi to  pi    add rotation angle theta   theta   ang    convert back to rectangular coordinates  now rotated nx   r   cos theta  ny   r   sin theta    return end"); 
    274 a[272] = new Array("./ToBeReviewed/PLOTS/DIVERS/saveatt.html", "saveatt.pro", "", "             file_comments   Allows to put in a structure attributes which can be associated with a variable       categories   utilities      returns    A structure of the form:            n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask l:niveau       uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          15 6 1999      version    Id            FUNCTION saveatt     compile_opt idl2  strictarrsubs    common    return   n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask  end"); 
    275 a[273] = new Array("./ToBeReviewed/PLOTS/DIVERS/terminedessin.html", "terminedessin.pro", "", "             file_comments   End the drawing if needed when it is a postscript       categories   utilities  graphic      keyword POST    Make a postscript  Only works if we made one drawing on the page    If we make several drawing  use  ps       keyword SMALL    Vector composed of 3 or 4 elements  applyed to make a drawing on a    small portion of a page or screen  It delimit the zone where the drawing will be done        If there is 4 elements:   then is constituated of coordinates  expressed in cm located from the up and    left corner of the page or the window  in portrait like in lanscape  of the bottom    and left corner and of the up and right corner of the drawing zone        If there is 3 elements:   in this case  we divide the page or the screen in small 0  columns and in small 1  lines    the drawing made in the box numbered small 2  The numerotation starting up and left by    the number 1 and then  following the writing direction    By default  we make the largest drawing we can do  conserving the aspect rapport     exept when REMPLI is activated       keyword _EXTRA    Used to pass your keywords      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          3 6 1999      version    Id            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"); 
    276 a[274] = new Array("./ToBeReviewed/PLOTS/LABEL/label.html", "label.pro", "", "             file_comments   Allows to choose the type of the label we want to use at the time of a contour       categories   graphic      param CAS  in required    Number of the type of the label we want to trace      param MIN  in required     Smallest value for the drawing of the contour       param MAX  in required    Biggest value for the drawing of the contour       keyword INTERVALLE   Value of an interval betwenn two isolines  By default  it is calculated to    draw 20 isolines  In all cases  this keyword must be returnedt have a nice   caption  If levels do not contain regular intervals  put it at  1       keyword NLEVEL   Number of contour to be drawn  By default  20  Active if LABEL 0 or is not specified       param NCONTOUR  out    Number of contour to be drawn        param LEVEL_Z2D  out    Vector containing values of contours we draw       param COLNUMB  out    Vector containing the number of colors which will serve to fill contours       uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr   7 5 98      version     Id            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   a certain number of label from the min to the nearest possible to the   max with a constant step by interval          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 to do same sss than 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   Readinf of intervals   palette in the file 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"); 
    277 a[275] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", "    Copyright  c  1993 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited          file_comments   This function labels axes with dates and times       categories   Plotting       param AXIS  in required       param INDEX  in required       param X  in required       keyword 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       keyword MONTHS   The names of the months  a twelve element string array    If omitted  use Jan  Feb    Dec       keyword 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       uses   LABEL_DATE_COM       restrictions   Only one date axis may be simultaneously active       examples   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      history  DMS  RSI April  1993 Written   DMS  RSI March  1997 Added Time format      Copyright  c  1993 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited       version    Id: label_date pro 134 2006 07 07 10:19:08Z navarro         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"); 
     266a[264] = new Array("./ToBeReviewed/PLOTS/DIVERS/determineminmax.html", "determineminmax.pro", "", "             file_comments   Determine the min and the max of a mask array      categories    Lightening of the writting of plt  pltz and pltt      param TAB  in required    The array whose we determine the min and the max      param MASK  in required    The mask array       keyword MININ    It is a scalar which  if it is not defined  take the value of VRAIMIN      keyword MAXIN    It is a scalar which  if it is not defined  take the value of VRAIMAX      keyword ZEROMIDDLE    Force the middle of the colorbar to be equal   to 0  force max max abs min max  and min max        keyword _EXTRA   used to pass your keywords      keyword USETRI   To force using triangulation        param VRAIMIN  out    The min of the array      param VRAIMAX  out    The max of the array      uses   Common pro      restrictions   Look if the field is constant on the sea      history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98      version    Id: determineminmax pro 142 2006 07 21 12:47:49Z navarro        todo seb: manque les param glam et gphi           PRO determineminmax  tab  mask  vraimin  vraimax  glam  gphi  MAXIN   maxin  MININ   minin  INTERVALLE   intervalle  usetri   usetri  ZEROMIDDLE   zeromiddle  _extra   ex     compile_opt idl2  strictarrsubs    common       Type o fthe vertical grid:   if vargrid EQ  W  then nz   nzw ELSE nz   nzt   liste des points mer   if  size mask 0  EQ 3 then mer   mask    0      ELSE mer   mask   If key_irregular eq 1  we mask also points which are not in the geographic    domain defined by lon1 lon2 lat1 lat2   if keyword_set key_irregular  AND n_elements glam  NE 0 AND n_elements gphi  NE 0 then begin     dom     where glam LT lon1 OR glam GT lon2 OR gphi LT lat1 OR gphi GT lat2      if dom 0  NE  1 then mer dom    0   endif     mer   where mer eq 1      if mer 0  eq  1 then begin     ras   report Il n y a que de la terre sur le dessin      vraimax   0     vraimin   0     maxin   vraimax 1     minin   vraimin 1     usetri   0     return   endif   ma and mi : max and min on ocean points   vraimax   max tab mer  min   vraimin  _extra   ex    sameminmax   testvar var   minin  EQ testvar var   maxin     if n_elements maxin  EQ 0 OR sameminmax then maxin   vraimax   if n_elements minin  EQ 0 OR sameminmax then BEGIN      if keyword_set intervalle  then minin   floor vraimin intervalle intervalle       ELSE minin   vraimin   endif   if vraimin eq vraimax then BEGIN     IF size vraimin   type  EQ 1 THEN vraimin   fix vraimin      question    Warning: constant filed  same value everywhere :     strtrim vraimin  2     Shall we make the plot      answer   report question   default_no   question      if answer then begin       maxin   vraimax 1       minin   vraimin 1     endif ELSE tab    1   ENDIF   IF keyword_set zeromiddle  THEN BEGIN       maxin   max abs minin  maxin        minin    maxin   ENDIF     return end"); 
     267a[265] = new Array("./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html", "givewindowsize.pro", "", "       todo seb       FUNCTION givewindowsize       include commons     compile_opt idl2  strictarrsubs    cm_4ps IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew ENDIF        dimensions   get_screen_size RESOLUTION resolution     coef   floor 1 resolution 0     if NOT keyword_set windowsize_scale  then BEGIN      windowsize_scale   1       IF NOT keyword_set key_forgetold  THEN BEGIN       updateold      ENDIF     ENDIF     coef   windowsize_scale   coef       mipgsz   min page_size  max   mapgsz        xsize   coef    mipgsz key_portrait   mapgsz 1 key_portrait      ysize   coef    mipgsz 1 key_portrait    mapgsz key_portrait       return   xsize  ysize  end"); 
     268a[266] = new Array("./ToBeReviewed/PLOTS/DIVERS/meridienparallele.html", "meridienparallele.pro", "", "             file_comments   Trace some meridians or parallel      categories   graphic      param COUPE The type of drawing we treat      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98      version    Id: meridienparallele pro 142 2006 07 21 12:47:49Z navarro             PRO meridienparallele  coupe     compile_opt idl2  strictarrsubs    common      case coupe of        xy :BEGIN           if lon1 lt 180 and lon2 gt 180 then             plot   180 180 lat1 lat2 noerase color 0          if lon1 lt 0 and lon2 gt 0 then             plot   0 0 lat1 lat2 noerase color 0          if lon1 lt 360 and lon2 gt 360 then             plot   360 360 lat1 lat2 noerase color 0          if lat1 lt 0 and lat2 gt 0 then             plot   lon1 lon2 0 0 noerase color 0       END     endcase     return end"); 
     269a[267] = new Array("./ToBeReviewed/PLOTS/DIVERS/placecolor.html", "placecolor.pro", "", "             file_comments   allows to trace the independently from a graph   By default  trace a color bar of the same type tahn the one present in plt   and pltz  If max  min and divisions are not stipulated  then max sup min inf   and divisions div       categories   graphic      param POS   Vecteur composed by 4 elements giving coordinates of the left bottom    corner and of the right up one  in cm  in which we want to do the color bar      keyword _extra   used to pass your keywords      uses   common pro      restrictions   Only usable for POSTCRIPTs effectuated with plein2dessin      history   Sebastien Masson  smasson lodyc jussieu fr   7 5 98      version    Id: placecolor pro 142 2006 07 21 12:47:49Z navarro             pro placecolor  pos  _extra   ex     include commons     compile_opt idl2  strictarrsubs    cm_4ps    IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew    ENDIF        xsave    x    ysave    y    psave    p      reinitplt   z   invert    pos 1 pos    mipgsz   min page_size  max   mapgsz     if key_portrait eq 1 then begin       pos 0 pos 0 mipgsz         pos 1 pos 1 mapgsz           pos 2 pos 2 mipgsz        pos 3 pos 3 mapgsz        endif else begin       pos 0 pos 0 mapgsz           pos 1 pos 1 mipgsz           pos 2 pos 2 mapgsz           pos 3 pos 3 mipgsz        ENDELSE      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         colnumb   colorbarparam colnumb       clbinf   colorbarparam clbinf        clbsup   colorbarparam clbsup       clbdiv   colorbarparam clbdiv      ENDIF ELSE BEGIN       file   myuniquetmpdir    4colorbar dat        IF file_test file  THEN BEGIN          restore  file                  if size ex   type  EQ 8 then BEGIN              if  where tag_names ex  EQ  MIN 0  NE  1 then clbinf   ex MIN             if  where tag_names ex  EQ  MAX 0  NE  1 then clbsup   ex MAX             if  where tag_names ex  EQ  DIVISIONS 0  NE  1 then clbdiv   ex DIVISIONS          ENDIF            COLORBAR  COLOR   0  DIVISIONS   clbdiv  DISCRET   colnumb               cb_color   0  POSITION   pos  MAX   clbsup               MIN   clbinf  cb_charsize    p charsize               _extra   ex       ENDIF    ENDELSE       x   xsave     y   ysave     p   psave      return end"); 
     270a[268] = new Array("./ToBeReviewed/PLOTS/DIVERS/placedessin.html", "placedessin.pro", "", "             file_comments    Putting into place of the drawing  opening of the window or of the PS      categories    Utilities      param TYPEDESSIN   It is a chain or characteres specifying what procedure is called by PLACEDESSIN:  plt   pltz  or  pltt       keyword LANDSCAPE    Force the page or the window on the screen to be in lenthened position       keyword LCT    Is an integer designating the number of the palette of color we want to use for the plot        keyword MAP    We use it when we want to do a projection    This keyword can be of two types:       MAP P0lat P0lon Rot  For the descrption of these 3 values  see the online help of MAP_SET         MAP: In this case  map is automatically caculated have the value:             map    0   lon1 lon2 2  0    Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo:   IDL  demo   Then choose earth sciences and  mapping    Comment2: By default it  is a cindrical projection which is effectuated  with or without the keyword map     If we want an other projection  MAP must be activated and we have to add the keyword:  nom_projection    For example  for a polar projection centered on the south pole:   IDL  domdef 180 180 90 45   IDL  plt  tab   stereo map 90 0 0       keyword NOCOLORBAR    We active it if we do not want the colorbar      keyword NOFILL    We active it if we only want contours in black and white with a white background       keyword NOERASE    We active it to make a drawing without creating a new frame       keyword SMALL    Vector composed of 3 or 4 elements  applyed to make a drawing on a    small portion of a page or screen  It delimit the zone where the drawing will be done        If there is 4 elements:   then is constituated of coordinates  expressed in cm located from the up and    left corner of the page or the window  in portrait like in lanscape  of the bottom    and left corner and of the up and right corner of the drawing zone        If there is 3 elements:   in this case  we divide the page or the screen in small 0  columns and in small 1  lines    the drawing made in the box numbered small 2  The numerotation starting up and left by    the number 1 and then  following the writing direction    By default  we make the largest drawing we can do  conserving the aspect rapport     exept when REMPLI is activated        keyword PORTRAIT    Force the page or the window to be in standing position       keyword POST    Make a postscript  Only works if we made one drawing on the page    If we make several drawing  use  ps       keyword REMPLI    Force the drawing to occupy the whole space defined by small       keyword WINDOW   Number of the window on which we want to do the graph  Allow to open several windows     By default  we open  IDL0       keyword CB_TITLE    The colorbar s title      keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword ENDPOINTS    keyword specifing that we want to make a vertical cut in diagonal  Then coorinated of extremities    of these one are difined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are    coordinates        keyword VECTEUR   It is a structure composed by 2 elements containing the 2 fields U   and V of values of the zonal and meridian component of the vector of the fields   to draw  These fields can be an array or a structure          For example: vecteur matriceu:lec unsurface matricev:lec vnsurface          Comment: name of elements of vectors are inconsenquential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword DIREC    t   x   y   z   xys   xz   yz   xyz   xt   yt   zt   xyt           xzt   yzt   xyzt  Direction on which do averages       keyword _EXTRA   Used to pass your keywords       keyword COLOR_C    To draw the contour in color instead of in black   with filling in color       param POSFENETRE  out    It is a vector composed by 4 elements containing the position of the frame    containing captions and the graph in normalized coorinates     Comment: To position the drawing  we have to do  p position posfenetre    after the call of the caliber      param POSBAR  out    Like POSFENETRE but for the color bar     Same comment to position the color bar   p position posbar      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          26 4 1999      version    Id: placedessin pro 142 2006 07 21 12:47:49Z navarro             PRO placedessin  typedessin  posfenetre  posbar  BARMARGES   barmarges                      NOCOLORBAR   nocolorbar  NOFILL   nofill  COLOR_c   color_c                      CONTOUR   contour                      VECTEUR   vecteur  PORTRAIT   portrait  LANDSCAPE   landscape                      SMALL   small  MARGES   marges  MAP   map                      REMPLI   REMPLI  POST   post  WINDOW   window                      ENDPOINTS   endpoints  TYPE   type  BASICMARGES   basicmarges                      NOERASE   noerase  LCT   lct  DIREC   direc  CB_TITLE   cb_title  _extra   ex     include common     compile_opt idl2  strictarrsubs    cm_4ps  cm_4mesh   IF NOT keyword_set key_forgetold  THEN BEGIN  updatekwd   ENDIF     1  Determination of the size of margins  unity number of lines or columns    to the left  to the right  up and down    BEWARE in margebar  the last element is the right up corner    instead of the up margin     if n_elements typedessin  EQ 0 then typedessin    autre    if keyword_set basicmarges  then begin     marge   1 6  2  4  3      if keyword_set marges  THEN marge   marge marges     margebar   1 marge 0 1  marge 1 1   marge 2 8   marge 2 6      if keyword_set barmarges  then margebar   margebar barmarges   ENDIF ELSE BEGIN      nocolorbar   keyword_set nocolorbar    keyword_set nofill    keyword_set color_c        case typedessin of        plt :marge   1 6  2  4  3         pltt :marge   1 6 4 type EQ  xt  2  4  4         pltz :marge   1 6  2  4  3        else:marge   1 6  2  4  3      ENDCASE     if keyword_set marges  THEN marge   marge marges     if NOT keyword_set barmarges  then barmarges   replicate 0  4      barmarges 3     barmarges 3      margebar   1 marge 0 1  marge 1 1  2  4 barmarges     marge   marge 0  0  4  0 keyword_set cb_title      IF keyword_set direc  THEN         marge   marge 0  0  2  0 strlowcase direc  NE  t      marge   marge 0  0  2  0 keyword_set contour      marge   marge 0  0  2  0 keyword_set vecteur      if n_elements lon1  NE 0 and n_elements lon2  NE 0         and n_elements lat1  NE 0 and n_elements lat2  NE 0 then begin       if keyword_set type  then           marge   marge 0  3 type EQ  yt  AND lon1 NE lon2  0                            2 type NE  yt  AND lat1 NE lat2 keyword_set endpoints          ELSE marge   marge 0  0  0  2 lat1 NE lat2 keyword_set endpoints      endif     marge   marge 0  0  2 margebar 3  0 1 keyword_set nocolorbar    ENDELSE     Portrait or landscape     IF NOT keyword_set noerase  THEN BEGIN      CASE 1 OF       n_elements portrait  NE 0:key_portrait   portrait       n_elements landscape  NE 0:key_portrait   1 landscape       ELSE:     ENDCASE   ENDIF      What type of aspect rapport  it will be crushed if YXASPECT exist      case typedessin of      plt :yaspect   1 lat2 lat1 lon2 lon1       pltt :yaspect   1       pltz :yaspect    5     ELSE:yaspect   1    endcase     2  calculation of  p position   see calibre pro        IF NOT keyword_set small  then small    1  1  1      if keyword_set map  then rempli   1     calibre  yaspect  marge  margebar  small  posfenetre  posbar  REMPLI   rempli  _extra   ex      p position   posfenetre     3  opening of the graphic window or of the postscript     case 1 of   case of the first drawing on a postcript     keyword_set post  AND  d name ne  PS :openps  _extra   ex   case of the first drawing on a screen     keyword_set post  EQ 0 AND keyword_set noerase  EQ 0         AND  d name ne  PS  AND  d name ne  Z :BEGIN       if not keyword_set window  then window   0   For the using of  ps oups et de  vzoom       if lmgr demo  EQ 0 then BEGIN   Are we in the demo mode          if  journal NE 0 then journal   We close te journal if it is open         homedir   isadirectory io   homedir  title    Bad definition of homedir          def_myuniquetmpdir         journal  myuniquetmpdir idlsave pro    We open a new one         help   recall_commands  output   listecommande   We recuperate the last command         listecommande   strmid strcompress listecommande 1  2          journal  listecommande   We write it in the journal       ENDIF       windsize   givewindowsize        window  window  xsize   windsize 0  ysize   windsize 1   retain   2  _extra   ex   When we used colors which are coded on 24bit  we can not stipulate the background color    of a window thanks to  p background  so we have to to this:            if  d n_colors gt 256 then begin               device  decomposed 1                p background ffffff x               plot 0 0   nodata  xstyle   4  ystyle   4               device  decomposed 0            endif     END     ELSE:   endcase     if n_elements lct  NE 0 then lct  lct  _extra   ex      return end"); 
     271a[269] = new Array("./ToBeReviewed/PLOTS/DIVERS/projsegment.html", "projsegment.pro", "", "             file_comments   project linearly a segment  a vector whose boundaries are  a b  on    a vector whose boundaries are  c d       categories   calculation      param VECTEUR   A vector whose the first element must be the smallest one and the last must be the biggest one       param BORNES    New boundaries of the vector       keyword MP   Activate this keyword to the function send back this a vector of 2    elements which are the m and p of the linear projection y mx p used    to pass from the  a b  segment to the  c d  segment       returns    A vector whose new boudaries are specified by BORNES       examples          IDL  a indgen 9       IDL  print  a             0       1       2       3       4       5       6       7       8     IDL  print  projsegment a 0 80              0      10      20      30      40      50      60      70      80     IDL  print  projsegment a 0 80               0      10      20      30      40      50      60      70      80     IDL  print  projsegment a 80 0               80      70      60      50      40      30      20      10      0      history   Sebastien Masson  smasson lodyc jussieu fr                          24 6 1999      version    Id: projsegment pro 142 2006 07 21 12:47:49Z navarro             FUNCTION projsegment  vecteur  bornes  MP   mp       compile_opt idl2  strictarrsubs      a1   float vecteur 0     b1   float vecteur n_elements vecteur 1     a2   float bornes 0     b2  float  bornes 1     if a1 EQ b1 then return   1    m    b2 a2 b1 a1     p   a2 m a1      if keyword_set mp  then return   m  p  ELSE return  m vecteur p   end"); 
     272a[270] = new Array("./ToBeReviewed/PLOTS/DIVERS/restoreatt.html", "restoreatt.pro", "", "             file_comments   Allows to reattribuate global variables associated with a field    when we give a stucture created by saveatt pro by example       categories    Utilities      param STRUCT  in required    a structure like the one who read litchamp            See IDL  xhelp litchamp       uses   common pro      restrictions   Change the value if global variables attribute of a field: vargrid     varname  varunit  vardate  varexp   valmask and time       history   Sebastien Masson  smasson lodyc jussieu fr                          15 6 1999      version    Id: restoreatt pro 142 2006 07 21 12:47:49Z navarro             PRO restoreatt  struct     compile_opt idl2  strictarrsubs    common      nomelements   tag_names struct     for i   0  n_tags struct 1 do begin       case strlowcase strmid nomelements i  0  1  of           g :vargrid   strupcase struct i            n :varname   struct i            u :varunit   struct i            e :varexp   struct i            m :valmask   struct i            d :BEGIN              if size struct i type  EQ 7 THEN BEGIN                 vardate   struct i              ENDIF ELSE BEGIN                vardate     time series                 time   struct i              ENDELSE          end          ELSE:BEGIN              ras   report Le nom  nomelements i  ne correspont a aucun element reconnu de la structure   C cf  IDL  xhelp   litchamp           end       endcase    endfor      return end"); 
     273a[271] = new Array("./ToBeReviewed/PLOTS/DIVERS/rotation.html", "rotation.pro", "", "       file_comments   Rotate two vectors by a specified amount           param X  in required    orignal data point pairs      param Y  in required    orignal data point pairs                 param DEG  in required    degrees to rotate           param NX  out    rotated point pairs        param NY  out    rotated point pairs           history   Jeff Bennett  U of Colorado      version    Id: rotation pro 142 2006 07 21 12:47:49Z navarro        PRO ROTATION X Y DEG NX NY     compile_opt idl2  strictarrsubs   ang deg dtor   convert to polar coordinates for rotation r   sqrt x x   y y  theta   r 0   get angle in for loop so that zero radii will be left as zero angle for i   0 n_elements r 1 do   if r i  ne 0 then theta i    atan y i x i    range from  pi to  pi    add rotation angle theta   theta   ang    convert back to rectangular coordinates  now rotated nx   r   cos theta  ny   r   sin theta    return end"); 
     274a[272] = new Array("./ToBeReviewed/PLOTS/DIVERS/saveatt.html", "saveatt.pro", "", "             file_comments   Allows to put in a structure attributes which can be associated with a variable       categories   utilities      returns    A structure of the form:            n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask l:niveau       uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          15 6 1999      version    Id: saveatt pro 142 2006 07 21 12:47:49Z navarro             FUNCTION saveatt     compile_opt idl2  strictarrsubs    common    return   n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask  end"); 
     275a[273] = new Array("./ToBeReviewed/PLOTS/DIVERS/terminedessin.html", "terminedessin.pro", "", "             file_comments   End the drawing if needed when it is a postscript       categories   utilities  graphic      keyword POST    Make a postscript  Only works if we made one drawing on the page    If we make several drawing  use  ps       keyword SMALL    Vector composed of 3 or 4 elements  applyed to make a drawing on a    small portion of a page or screen  It delimit the zone where the drawing will be done        If there is 4 elements:   then is constituated of coordinates  expressed in cm located from the up and    left corner of the page or the window  in portrait like in lanscape  of the bottom    and left corner and of the up and right corner of the drawing zone        If there is 3 elements:   in this case  we divide the page or the screen in small 0  columns and in small 1  lines    the drawing made in the box numbered small 2  The numerotation starting up and left by    the number 1 and then  following the writing direction    By default  we make the largest drawing we can do  conserving the aspect rapport     exept when REMPLI is activated       keyword _EXTRA    Used to pass your keywords      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                          3 6 1999      version    Id: terminedessin pro 142 2006 07 21 12:47:49Z navarro             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"); 
     276a[274] = new Array("./ToBeReviewed/PLOTS/LABEL/label.html", "label.pro", "", "             file_comments   Allows to choose the type of the label we want to use at the time of a contour       categories   graphic      param CAS  in required    Number of the type of the label we want to trace      param MIN  in required     Smallest value for the drawing of the contour       param MAX  in required    Biggest value for the drawing of the contour       keyword INTERVALLE   Value of an interval betwenn two isolines  By default  it is calculated to    draw 20 isolines  In all cases  this keyword must be returnedt have a nice   caption  If levels do not contain regular intervals  put it at  1       keyword NLEVEL   Number of contour to be drawn  By default  20  Active if LABEL 0 or is not specified       param NCONTOUR  out    Number of contour to be drawn        param LEVEL_Z2D  out    Vector containing values of contours we draw       param COLNUMB  out    Vector containing the number of colors which will serve to fill contours       uses   common pro      history    Sebastien Masson  smasson lodyc jussieu fr   7 5 98      version     Id: label pro 142 2006 07 21 12:47:49Z navarro             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   a certain number of label from the min to the nearest possible to the   max with a constant step by interval          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 to do same sss than 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   Readinf of intervals   palette in the file 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"); 
     277a[275] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", "    Copyright  c  1993 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited          file_comments   This function labels axes with dates and times       categories   Plotting       param AXIS  in required       param INDEX  in required       param X  in required       keyword 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       keyword MONTHS   The names of the months  a twelve element string array    If omitted  use Jan  Feb    Dec       keyword 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       uses   LABEL_DATE_COM       restrictions   Only one date axis may be simultaneously active       examples   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      history  DMS  RSI April  1993 Written   DMS  RSI March  1997 Added Time format      Copyright  c  1993 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited       version    Id: label_date pro 142 2006 07 21 12:47:49Z navarro         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"); 
    278278a[276] = 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 "); 
    279 a[277] = new Array("./ToBeReviewed/PLOTS/LABEL/lataxe.html", "lataxe.pro", "", "             file_comments   function called by  XYZ TICKFORMAT  see the help to see how to use it  to label axes in latitude       categories   graphic       param AXIS    It is the axis number: 0 for X axis  1 for Y axis  2 for Z axis       param INDEX   It is the tick mark index which starts at 0       param VALUE   It is the default tick mark value  a floating point number       returns   A string  used automatically to label      history   Sebastien Masson  smasson lodyc jussieu fr                                                    14 10 1999 format of labels      version    Id            FUNCTION lataxe  axis  index  value     We put back value in the 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 of labels:    case 1 of       lat EQ round lat :fmt    i4        10 lat EQ round 10 lat :fmt    f6 1        ELSE:fmt    f7 2     endcase   we write the 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 "); 
    280 a[278] = new Array("./ToBeReviewed/PLOTS/LABEL/lonaxe.html", "lonaxe.pro", "", "             file_comments   function called by  XYZ TICKFORMAT  see the help to see how to use it  to label axes in longitude       categories   graphic       param AXIS    It is the axis number: 0 for X axis  1 for Y axis  2 for Z axis       param INDEX   It is the tick mark index which starts at 0       param VALUE   It is the default tick mark value  a floating point number       returns   A string  used automatically to label      history   Sebastien Masson  smasson lodyc jussieu fr                                                    14 10 1999 format of labels      version    Id            FUNCTION lonaxe  axis  index  value     We put back value in the segment  0 360      compile_opt idl2  strictarrsubs      lon value mod 360    if lon lt 0 then lon lon 360   format of labels:    case 1 of       lon EQ round lon :fmt    i4        10 lon EQ round 10 lon :fmt    f6 1        ELSE:fmt    f7 2     endcase   we write the label    if lon lt 180 then nom string lon      format fmt E     if lon gt 180 then nom string 360 lon  format fmt W     if lon eq 180 then nom string lon      format fmt       return  nom end "); 
    281 a[279] = new Array("./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html", "ajoutvect.pro", "", "             file_comments   Overprint vectors in a field traced by plt       categories   graphic      param VECTEUR  in required    It is a structure with 2 elements containing we 2 matrixes U and V of    values of the zonal and meridian component of the fiel of vectors to    be traced         For ex:         vecteur matriceu:lec unsurface matricev:lec vnsurface          rq:the name of elements of  vector does not have any importance          vecteur u:lec unsurface v:lec vnsurface  goes well too       keyword UNVECTSUR   It is a scalar n or an array with 2 elements  n1 n2    In the first case  we will trace a vector on n following x and y    In the second case  we will trace a vector on n1 following x and a    vector n2 following n2     Comments: To trace all vectors following y and one vector on two    following x  put unvectsur 2 1       keyword VECTMIN  in required    Minimum norme of vectors to be traced       keyword VECTMAX  in required    Maximum norme of vectors to be traced       keyword _EXTRA   Used to pass your keywords       uses   common pro       history   Sebastien Masson  smasson lodyc jussieu fr   10 3 1999                         11 6 1999 compatibilite avec NAN et la lecture                         des structures       version    Id              pro ajoutvect vecteur  vectlegende  UNVECTSUR unvectsur VECTMIN vectmin  VECTMAX vectmax  _EXTRA   ex     compile_opt idl2  strictarrsubs    common    tempsun   systime 1            For key_performance        u   litchamp vecteur 0     u   checkfield u   plt  TYPE    xy   NOQUESTION     v   litchamp vecteur 1     v   checkfield v   plt  TYPE    xy   NOQUESTION        We recuperate possible informations on fields      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     We find common points between u and v      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 of u and v on the appropriated domain         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     We reshape u and v to make sure that none dimension has been erased          if ny EQ 1 then begin          u   reform u  nx  ny           v   reform v  nx  ny        endif     construction of u and v at points 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 of the mask and of longitude and latitude arrays    We recuperate the complete grid to establish a big mask extensive    in the four directions to cover points for which a land point has    been considerated  do a small drawing          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     We mask u and v et v the long of coasts  the place where we    can not calculate the average       extention of the 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     Put back of a big value on all points for which we can do the calculation       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     trace only one vector one two      if keyword_set unvectsur  then BEGIN     indx is a vector containing number of columns to be selected    indy is a vector containing number of lines to be selected        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   From indx and indy  we will construct an array which will give indexes   of intersections points of columns specified by indx        indicereduit   indx replicate 1 n_elements indy nx replicate 1 n_elements indx indy   We reduce arrays which will be passed to vecteur        u   u indicereduit        v   v indicereduit        tabnorme   tabnorme indicereduit       endif           if keyword_set inverse  then begin       rien   u       u   v       v   rien    endif     Drawing of vectors       vecteur  u  v  tabnorme  indice2d  indicereduit  missing 1e5  _extra   ex     We complete the caption       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  "); 
    282 a[280] = new Array("./ToBeReviewed/PLOTS/VECTEUR/vecteur.html", "vecteur.pro", "", "FUNCTION cv_cm2normal  angle     Give the lenth in normal coordinates of a trait oriented of an angle   by rapport at the x axis and which must do 1 cm on the drawing    Angle can be an array           compile_opt idl2  strictarrsubs    common   What is the lenth in normal coordinates of a trait which will do 1 cm   on the paper an which is parallel to 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     If the aspect rapport of the window is not equal to 1  the lenth in   normalized coordinates of  a trait of 1 cm vary following the polar   angle of this 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     normalize the vector       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              file_comments   Trace vectors  even if they are on a deformed grid  on any projection    In this way  all vectors have a comparable norme on the drawing  to be   clear  a vector which measure 1 cm measure it  no matter the projection   and is position on the sphere       categories    graphic       param COMPOSANTEU  in required    It is the u component of the vector to be traced  This 2d array has the    same dimension that reduitindice2d  see further        param COMPOSANTEV  in required    It is the v component of the vector to be traced  This 2d array has the    same dimension that reduitindice2d  see further        param INDICE2D   in required    It in an index allowing to to pass from an jpi or jpj array to the zoom    on which we do the drawing       param REDUITINDICE2D  in required    It is an index allowing to pass from an array defined by indice2d to the    array for which we really have vectors to be traced  to be clear  it is    for example when we trace only one vector on two       keyword CMREF   The lenth in cm that must measure the arrow normed normeref  By default     it is ajusted t othe drawing and included between  5 and 1 5 cm       keyword MISSING   The value of a missing value  Do not use this keyword  Fixed at 1e5 by    ajoutvect pro            keyword NORMEREF    The norme of the reference arrow       keyword VECTCOLOR   The color of the arrow  Black by default  color 0        keyword VECTTHICK   The thick of the arrow  1 by default       keyword VECTREFPOS   Vector composed of 2 elements specifing the position on DATA coordinates    from de begining of the reference vector  By default at the right bottom    of the drawing       keyword VECTREFFORMAT   The format to be used to specify the norme of the reference vector       keyword NOVECTREF   To delete the display of the reference vector        keyword _EXTRA   Used to pass your keywords       uses    common pro      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       version    Id             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            For 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     Stage 1:      Given that the directions and the sense that the vector has on the sphere     we have to try to determinate this direction and the sense that the vector    will have on the screen once it will have been projected      In theory: on the sphere  a vector in a given point has for direction the    tangent at the circle passing by the center of the Earth and by the vector     So  find the direction once the projection is done  it is find the tangent   to the curve representing the projection of the circle on the 2d plan at the    point representing the projection of the starting point of the shere on the    2d plan       In practice we do no know the definition of the curve given by the projection    of a circle so find its tangente in a point      What we do:   In a 3d cartesian reference          a  We find coorinates of the point T  starting of the arrow  situed          on the sphere          b  To each point T  we determine local directions defined by the grid         on this point and on which coordinates  u v  of the vector refer to          These local directions are defined by gradients of glam and gphi  Once         we have obtain these directions  we considare them like orthogonal and         by norming them  we build an orthonormal reference  nu nv  on which         coordinates  u v  of the vector refer to  In the starting 3d cartesian         reference  the vector is defined by:         V u nu v nv          where V  nu and nv are 3d vectors and u and v are scalars          c  To approximate the tangente to the circle by the chord defined by         the beginning and the ending of the arrow  we will normalize V  and         then divide it by 100          d  This allows us to determine coordinates of extremities of the chord         in the 3d cartesian reference  We pass them in spherical coordinates in         order to recuperate latitude and longitude position of these points on         the sphere          e  We pass coordinates of these points in normalized coordinates  then         in polar coordinates in order to find the angle and the direction they         dertermine on the drawing        Stage 1  a        coordinates of the point T  beginning of the arrow  in spherical coordinates     glam   glamt indice2d reduitindice2d     gphi   gphit indice2d reduitindice2d      Coordinates of the point T  beginning of the arrow  in the cartesian reference    For the sphere  we use a sphere with a radius of 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      Stage 1  b      Construction of a vector nu  resp  nv  vectr normed carried by the axis of   points u i j  and u i 1 j   resp v i j  and v i j 1  which define  for each   point on the sphere  local directions associated with u and v  These vectors   define a local orthonormal reference     These vectors are built in a cartesian reference  cv_coord  We have choose a    unity radius of the Earth  unit      definition of 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    coordinates of points of the grid u in cartesian     ux   reform r 0    nxgd  nygd     uy   reform r 1    nxgd  nygd     uz   reform r 2    nxgd  nygd    calculation of nu     nux   ux shift ux  1  0     nuy   uy shift uy  1  0     nuz   uz shift uz  1  0    conditions at extremities     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 of the grid    nux   nux reduitindice2d     nuy   nuy reduitindice2d     nuz   nuz reduitindice2d    definition of 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    coordinates of points of the grid in cartesian     vx   reform r 0    nxgd  nygd     vy   reform r 1    nxgd  nygd     vz   reform r 2    nxgd  nygd    calcul of nv     nvx   vx shift vx  0  1     nvy   vy shift vy  0  1     nvz   vz shift vz  0  1    conditions at extremities    nvx  0    nvx  1     nvy  0    nvy  1     nvz  0    nvz  1    reduction of the grid    nvx   nvx reduitindice2d     nvy   nvy reduitindice2d     nvz   nvz reduitindice2d      normalization      normalise  nux  nuy  nuz    normalise  nvx  nvy  nvz     Stage 1  c      coordinates of the vector V in the cartesian reference      direcx   zu nux   zv nvx    direcy   zu nuy   zv nvy    direcz   zu nuz   zv nvz   normalization of the vector V    normalise  direcx  direcy  direcz   on divide by 100    direcx   direcx 100     direcy   direcy 100     direcz   direcz 100      Stege 1  d    coordinates of the point of the arrow in the cartesian reference      x1   x0   direcx    y1   y0   direcy    z1   z0   direcz    coordinates of the point of the arrow in spherical coordinates      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       modification of glams  Everything take place at the level of the line   of changing of date  BEWARE  do not cut arrow which goes out of the   window    test: If it goes out of the frame  but  thanks to   360  it come in    we modify it      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        Stage 1  e       r   convert_coord glam gphi data to_normal      x0   r 0                      normal coordinates of the beginning of the array     y0   r 1                              r   convert_coord glam1 gphi1 data to_normal      x1   r 0                      normal coordinates of the ending of the array  Before scaling     y1   r 1                           tests to avoid that arrows be drawing out of the domain       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     Following projections  there may are points at NaN when we pass in normal coordinates     We delete these 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      We define the vector direction in the normalize reference       dirx   x1 x0    diry   y1 y0    We pass in polar coordinates to recuperate the angle which wasb the goal of all the first stage        dirpol   cv_coord from_rect   transpose   dirx   diry     to_polar     dirpol   msk dirpol 0        Stage 2     Now we take care of the norme      Automatic putting at the scale       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     We modify the array norme to an element having the value cm be represented    by a trait of lenght 1 cm on the paper  Norme contain the norme of vectors    we want to draw       norme   1 1 cm norme cv_cm2normal dirpol        Stage 3   Now that we have the angle and the norme  we recuperate coordinates in    rectangular and we draw arrows       r   cv_coord from_polar   transpose   dirpol   norme     to_rect     composantex   r 0       composantey   r 1         x1   x0 composantex    y1   y0 composantey     Drawing      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      Draw an arrow at the right bottom of the drawing as a caption       if NOT keyword_set novectref  then BEGIN       dx   cmref cv_cm2normal 0    Lenght of the vector of reference in normalzed coordinates        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     "); 
    283 a[281] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", "          file_comments   Produce a two dimensional velocity field plot      A directed arrow is drawn at each point showing the direction and    magnitude of the field                      categories   Plotting  two dimensional         param U  in required    The X component of the two dimensional field      U must be a two dimensional array       param V  in required    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       param X  in optional    Optional abcissae values   X must be a vector with a length    equal to the first dimension of U and V       param Y  in optional    Optional ordinate values   Y must be a vector with a length   equal to the first dimension of U and V       keyword COLOR   The color index used for the plot       keyword 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       keyword LENGTH   Length factor   The default of 1 0 makes the longest  U V    vector the length of a cell       keyword MISSING    Missing data value   Vectors with a LENGTH greater   than MISSING are ignored       keyword 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        keyword CLIP       keyword NOCLIP      keyword _EXTRA   Used to pass your keywords       restrictions    Plotting on the selected device is performed   System   variables concerning plotting are changed    Note:   All other keywords are passed directly to the PLOT procedure  and may be used to set option such as TITLE  POSITION    NOERASE  etc       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      Copyright  c  1983 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited       version    Id: velovect pro 134 2006 07 07 10:19:08Z navarro         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"); 
    284 a[282] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", "             file_comments   Manage axes for the different drawings created by plt    pltz and pltt      categories    Graphic environment      param COUPE   It is a string designating the type of cut to which the axes we create    must report  For example:  xy xt       param TEMPSMIN  in required    In the case where we do cut containing the time dimension  we have    to specify the beginning of the time s axis in julian days       param TEMPSMAX  in required    In the case where we do cut containing the time dimension  we have    to specify the end of the time s axis in julian days       keyword SIN    activated when we trace in sinus of the latitude      keyword SEPDATE   string separating the diff rent constituents of the date  By default     it is a return to the linewhen we do a  yt   zt  or a  t     In the other cases  it is a blank        keyword 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       keyword _EXTRA    used to pass your keywords       uses   common pro      restrictions   It modify  x  and  y       history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                         Eric Guilyardi types x y z   amelioration de                         l axe temporel      version    Id            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     Management of ticks of the time axis in the case of TEMPSMIN    and TEMPSMAX are definied      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   Same year but several monthes             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   We check that labels are betwenn TEMPSMIN and TEMPSMAX              ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1              nticks   n_elements ticknom    Particular case where we are overlap two monthes             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    Same year and same month             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    Several years          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    We check that labels are betwenn TEMPSMIN and TEMPSMAX           ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1           nticks   n_elements ticknom    Particular case where we are overlap two monthes          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    Particular case where we are overlap two monthes            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 of axes parameters case by case      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   number of ticks by default             plot   0   0   noerase   nodata  xtick_get   xaxe   We increase this number to it be around 10              ticks   n_elements xaxe 1             ticks   ticks 1  2  4  8              ticks   ticks sort abs ticks 10 0    We recuperate the x axis for this new number of 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   Number of ticks by default             plot   0   0   nodata   noerase  xstyle   5  ystyle   5  xtick_get   xaxe   We increase this number to it be around 10              ticks   n_elements xaxe 1             ticks   ticks 1  2  4  8              ticks   ticks sort abs ticks 10 0    We recuperate the x axis for this new number of 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"); 
    285 a[283] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", "             file_comments   Provide caption      categories   graphic  annex      param MI  in required    The min of the drawing       param MA  in required    The max of the plot      param COUPE   Charactere containing two letters giving the type of the cut   for example:  xz       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword ENDPOINTS   Used when we do vertical cuts in diagonal       keyword _EXTRA   used to pass your keywords       uses   common pro      restrictions   The use of the global variable langage allows to change the language and the caption easily       history    Sebastien Masson  smasson lodyc jussieu fr   14 8 98                         Eric Guilyardi  ericg lodyc jussieu fr  GB version  11 6 99      version    Id            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 and possible complement of  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   it is a 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     Shapping of subdomain  s dimensions  auquel s applique la legende     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      Management of the date  auquel s applique la legende     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 on the caes where the caption is applied  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"); 
    286 a[284] = new Array("./ToBeReviewed/PLOTS/plotsym.html", "plotsym.pro", "", "       file_comments   function to make plotting symbols much easier        categories   Graphic       Keyword circle    circle symbol       Keyword TRIANGLE   triangle symbol       Keyword DIAMOND    diamond symbold       Keyword BOX   box symbol       Keyword LINE   line symbol       Keyword SCALE   scales the symbol       Keyword ANGLE   angle the symbol should be rotated       Keyword _EXTRA   extra keywords for usersym   These are thick  color and fill      history   Written by:   Ronn Kling   Ronn Kling Consulting   7038 Westmoreland Dr    Warrenton  VA 20187   klingrl juno com   copyright 1999  all rights reserved      version    Id        function plotsym  circle circle  triangle triangle  diamond diamond                      angle angle  box box  line line  scale scale                      _extra extra     compile_opt idl2  strictarrsubs   if not keyword_set scale  then scale 1 0 if not keyword_set angle  then angle 0 0  if keyword_set circle  then begin   theta   findgen 30 29 360  endif else if keyword_set triangle  then begin   theta    30 90 210   30  endif else if keyword_set diamond  then begin   theta    0 90 180 270 0  endif else if keyword_set box  then begin   theta    315 45 135 225 315  endif else if keyword_set line  then begin   theta    180 0  endif  theta   theta   angle x   cos theta    dtor    scale y   sin theta    dtor    scale  usersym  x y  _extra extra return 8 end"); 
    287 a[285] = new Array("./ToBeReviewed/PLOTS/reinitplt.html", "reinitplt.pro", "", "             file_comments   This procedure will reinitialise all or a selection    ofthe system plot variables      categories   plot Utility         keyword X   clear the appropriate variable      keyword Y   clear the appropriate variable        keyword Z    clear the appropriate variable       keyword P   clear the appropriate variable      keyword ALL    Clear all  this is equivalent to  x y z p      keyword INVERT   Invert the logic  Clear all unselected variables    Therefore  clearplt all invert  does nothing       uses   common pro       restrictions   The sytem plot variables are changed       history   Written by: Trevor Harris  Physics Dept  University of Adelaide   July  1990      Sebastien Masson 7 5 98      version    Id            pro reinitplt  all all x x y y z z p p  invert invert       compile_opt idl2  strictarrsubs    clearx   0  cleary   0  clearz   0  clearp   0  if  keyword_set x  then clearx   1  if  keyword_set y  then cleary   1  if  keyword_set z  then clearz   1  if  keyword_set p  then clearp   1  if  keyword_set all                or  not keyword_set x  and not keyword_set y  and                   not keyword_set z  and not keyword_set p  then begin      clearx   1  cleary   1  clearz   1  clearp   1  endif   if  keyword_set invert  then begin  clearx   not clearx  cleary   not cleary  clearz   not clearz  clearp   not clearp  endif   if  clearx  then begin                  x charsize 0                  x GRIDSTYLE 0                  X MARGIN 10 3             X MINOR 0                  X OMARGIN 0 0                   x region 0           X RANGE 0                  x STYLE 5                   x tick 1                  x TICKFORMAT                   x TICKLEN 0                  x tickname                   x ticks 0                  X TICKV 0 X TICKV 1   x title                   x TYPE 0  endif  if  cleary  then begin                  y charsize 0                  y GRIDSTYLE 0                  Y MARGIN 10 3             Y MINOR 0                  Y OMARGIN 0 0                   y region 0           Y RANGE 0                  y STYLE 5                   y tick 1                  y TICKFORMAT                   y TICKLEN 0                  y tickname                   y ticks 0                  Y TICKV 0 Y TICKV 1   y title                   y TYPE 0  endif  if  clearz  then begin                  z charsize 0                  z GRIDSTYLE 0                  Z MARGIN 10 3             Z MINOR 0                  Z OMARGIN 0 0                   z region 0           Z RANGE 0                  z STYLE 1                   z tick 1                  z TICKFORMAT                   z TICKLEN 0                  z tickname                   z ticks 0                  Z TICKV 0 Z TICKV 1   z title                   z TYPE 0  endif  if  clearp  then begin  p BACKGROUND d n_colors 1    255  p CHARSIZE 1   p CHARTHICK 0   p LINESTYLE 0   p MULTI replicate 0 5   p NOERASE 0   p POSITION 0   p region 0                   p title   p subtitle   p ticklen 0 02                  p thick 0 1                  p color 0  endif  return  end      "); 
    288 a[286] = new Array("./ToBeReviewed/PLOTS/style.html", "style.pro", "", "             file_comments    Choose the way to trace isolines       categories   graphic      param LABSTYLE  in required    Number to which the style of drawing choosen refer to       param LEVEL_Z2D  in required    Vector containing values of isolignes to be traced       param LINESTYLE  out    Vector used to define the isocontour s style         Comment: remenber:  Index Linestyle   0 Solid   1 Dotted   2 Dashed   3 Dash Dot   4 Dash Dot Dot Dot   5 Long Dashes        param THICK  out    Vector defining the thick of the isoline       history   Sebastien Masson  smasson lodyc jussieu fr       version    Id            pro style labstyle level_z2d linestyle thick     compile_opt idl2  strictarrsubs      case labstyle of       0: begin  series: Two thin continuous lines  one boldface continuous line          thick 1 1 2           linestyle 0           return       end       1: begin  series: Before the middle of levels: thin dash  Then thin continuous trait    If the middle of the drawing is drawn  it is in boldface continuous trait           impair n_elements level_z2d 2 fix n_elements level_z2d 2           a replicate 0 fix n_elements level_z2d 2           b replicate 1 fix n_elements level_z2d 2           c replicate 2 fix n_elements level_z2d 2                    if impair then begin             thick b 2 b              linestyle c 0 a           endif else begin             thick 0              linestyle c a           endelse          return       end       2: begin  series: Before the sill  defined by answering to a question : thin dash    Then thin continuous trait  If the sill is drawn  it is in boldface continuous trait           seuil xquestion Quelle est la limite tirets trait continu   0           seuil   float seuil           rien where level_z2d lt seuil n           a replicate 0 n_elements level_z2d n           c replicate 2 n                    if seuil eq level_z2d n  then begin             thick replicate 1 n 2 replicate 1 n_elements level_z2d 1 n              linestyle c a           endif else begin             thick 0              linestyle c a           endelse          return       end       3: begin          n   n_elements level_z2d           seuil   level_z2d 1 n 2            thick   intarr n           thick indgen n 4 4    1          thick indgen n 4 4 1    1          thick indgen n 4 4 2    2          thick indgen n 4 4 3    1           linestyle   intarr n           linestyle indgen n 4 4    3          linestyle indgen n 4 4 1    0          linestyle indgen n 4 4 2    0          linestyle indgen n 4 4 3    0           labels   intarr n           labels indgen n 2 2    1          labels n 2    0           return       end       4: begin   Boldface continuous trait           seuil   1 e 6          thick replicate 5   n_elements level_z2d           linestyle 0           rien where abs level_z2d max abs level_z2d  LT seuil           if rien 0  NE  1 then thick rien 0    3       end       else: begin          ras   report Le numero de labstyle demande n existe pas           stop       end    endcase    return end"); 
    289 a[287] = new Array("./ToBeReviewed/PLOTS/symbols.html", "symbols.pro", "", "       file_comments   Create custom plotting symbols       param NSYM  in required                      1   open circle                  2   filled circle                  3   arrow pointing right                  4   arrow pointing left                  5   arrow pointing up                  6   arrow pointing down                  7   arrow pointing up and left  45 degrees    8   arrow pointing down and left   9   arrow pointing down and right    10   arrow pointing up and right    11 through 18 are bold versions of 3 through 10   19   horizontal line   20   box   21   diamond   22   triangle   30   filled box   31   filled diamond   32   filled triangle       param SCALE  in required    size of symbols        keyword COLOR   color of symbols      restrictions   The desired symbol is stored in the user buffer and    will be plotted if  P PSYM   8       history   Jeff Bennett  U of Colorado  198       version    Id      pro symbols nsym scale color col     compile_opt idl2  strictarrsubs   on_error 2 fill   0 case 1 of       nsym le 2 :   begin                          circles                        for large scales increase number of points for res                        if scale ge 4 then a   findgen 25  else                         a   findgen 13                        a   a    3 14159   6         0   12 or 24  pi 6                       xarr   cos a                        yarr   sin a                        if nsym eq 2 then fill   1                     end       nsym ge 3 nsym le 18 :   begin            arrow heads                       xarr   fltarr 5                        yarr   xarr                       xarr 1    10                        xarr 2    6                        yarr 2    2                         nsyms greater than 10 should be filled arrows                       if nsym gt 10 then begin                          xarr 3    6                            xarr 4    10                           yarr 3     2                           fill   1                       endif else begin                          xarr 3    10                           xarr 4    6                           yarr 4     2                        endelse                       case 1 of                           nsym eq 3 : dummy   0b                           nsym eq 4 : xarr    1 xarr                           nsym eq 11 nsym eq 12 : begin                             xarr   extrac xarr 0 11                              yarr   extrac yarr 0 11                              yarr 6    0 5                             xarr 7    6                             yarr 7    0 5                             xarr 8    6                             yarr 8     0 5                             yarr 9     0 5                             if nsym eq 12 then begin                                rotation xarr yarr 180 nx ny                                xarr   nx                                yarr   ny                             endif                                                      end                           nsym eq 5 nsym eq 13 : begin                             temp   xarr                             xarr   yarr                             yarr   temp                                                      end                           nsym eq 6 nsym eq 14 : begin                             temp    1 xarr                             xarr   yarr                             yarr   temp                                                      end                           nsym ge 7 nsym le 10                                nsym ge 15 nsym le 18 : begin                             case 1 of                                   nsym eq 7 nsym eq 15 : deg   45                                   nsym eq 8 nsym eq 16 : deg   135                                   nsym eq 9 nsym eq 17 : deg   225                                   nsym eq 10 nsym eq 18 : deg   315                             endcase                             rotation xarr yarr deg nx ny                             xarr   nx                             yarr   ny                                                   end    end nsym ge 7                       endcase                                    end     nsym between 3 and 18       nsym eq 20 nsym eq 21 nsym eq 30 nsym eq 31 :  begin                       xarr   fltarr 5    3                       yarr   xarr                       xarr 1     3                        xarr 2     3                        yarr 2     3                        yarr 3     3                        if  nsym eq 21 nsym eq 31  then begin                          rotation xarr yarr 45 nx ny                          nx   0 70   nx      shrink the x direction                          xarr   nx                          yarr   ny                       endif                       if nsym ge 30 then fill   1                                    end     nsym 20 21 30 31       nsym eq 22 nsym eq 32 :  begin   side length 6  0 at centroid                       yarr   fltarr 4    6 4                        xarr   fltarr 4    6 2                        xarr 1    6 2                        xarr 2    0                        yarr 2    6 sqrt 3 2    6 4                        if nsym eq 32 then fill   1                                     end      else:                          begin                       xarr   fltarr 2    1                       yarr   xarr   0                        xarr 1     1                                      end endcase   xarr   xarr   scale yarr   yarr   scale    set symbol buffer if keyword_set col  then usersym xarr yarr fill fill color col else     usersym xarr yarr fill fill   return end"); 
     279a[277] = new Array("./ToBeReviewed/PLOTS/LABEL/lataxe.html", "lataxe.pro", "", "             file_comments   function called by  XYZ TICKFORMAT  see the help to see how to use it  to label axes in latitude       categories   graphic       param AXIS    It is the axis number: 0 for X axis  1 for Y axis  2 for Z axis       param INDEX   It is the tick mark index which starts at 0       param VALUE   It is the default tick mark value  a floating point number       returns   A string  used automatically to label      history   Sebastien Masson  smasson lodyc jussieu fr                                                    14 10 1999 format of labels      version    Id: lataxe pro 142 2006 07 21 12:47:49Z navarro             FUNCTION lataxe  axis  index  value     We put back value in the 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 of labels:    case 1 of       lat EQ round lat :fmt    i4        10 lat EQ round 10 lat :fmt    f6 1        ELSE:fmt    f7 2     endcase   we write the 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 "); 
     280a[278] = new Array("./ToBeReviewed/PLOTS/LABEL/lonaxe.html", "lonaxe.pro", "", "             file_comments   function called by  XYZ TICKFORMAT  see the help to see how to use it  to label axes in longitude       categories   graphic       param AXIS    It is the axis number: 0 for X axis  1 for Y axis  2 for Z axis       param INDEX   It is the tick mark index which starts at 0       param VALUE   It is the default tick mark value  a floating point number       returns   A string  used automatically to label      history   Sebastien Masson  smasson lodyc jussieu fr                                                    14 10 1999 format of labels      version    Id: lonaxe pro 142 2006 07 21 12:47:49Z navarro             FUNCTION lonaxe  axis  index  value     We put back value in the segment  0 360      compile_opt idl2  strictarrsubs      lon value mod 360    if lon lt 0 then lon lon 360   format of labels:    case 1 of       lon EQ round lon :fmt    i4        10 lon EQ round 10 lon :fmt    f6 1        ELSE:fmt    f7 2     endcase   we write the label    if lon lt 180 then nom string lon      format fmt E     if lon gt 180 then nom string 360 lon  format fmt W     if lon eq 180 then nom string lon      format fmt       return  nom end "); 
     281a[279] = new Array("./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html", "ajoutvect.pro", "", "             file_comments   Overprint vectors in a field traced by plt       categories   graphic      param VECTEUR  in required    It is a structure with 2 elements containing we 2 matrixes U and V of    values of the zonal and meridian component of the fiel of vectors to    be traced         For ex:         vecteur matriceu:lec unsurface matricev:lec vnsurface          rq:the name of elements of  vector does not have any importance          vecteur u:lec unsurface v:lec vnsurface  goes well too       keyword UNVECTSUR   It is a scalar n or an array with 2 elements  n1 n2    In the first case  we will trace a vector on n following x and y    In the second case  we will trace a vector on n1 following x and a    vector n2 following n2     Comments: To trace all vectors following y and one vector on two    following x  put unvectsur 2 1       keyword VECTMIN  in required    Minimum norme of vectors to be traced       keyword VECTMAX  in required    Maximum norme of vectors to be traced       keyword _EXTRA   Used to pass your keywords       uses   common pro       history   Sebastien Masson  smasson lodyc jussieu fr   10 3 1999                         11 6 1999 compatibilite avec NAN et la lecture                         des structures       version    Id: ajoutvect pro 142 2006 07 21 12:47:49Z navarro               pro ajoutvect vecteur  vectlegende  UNVECTSUR unvectsur VECTMIN vectmin  VECTMAX vectmax  _EXTRA   ex     compile_opt idl2  strictarrsubs    common    tempsun   systime 1            For key_performance        u   litchamp vecteur 0     u   checkfield u   plt  TYPE    xy   NOQUESTION     v   litchamp vecteur 1     v   checkfield v   plt  TYPE    xy   NOQUESTION        We recuperate possible informations on fields      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     We find common points between u and v      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 of u and v on the appropriated domain         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     We reshape u and v to make sure that none dimension has been erased          if ny EQ 1 then begin          u   reform u  nx  ny           v   reform v  nx  ny        endif     construction of u and v at points 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 of the mask and of longitude and latitude arrays    We recuperate the complete grid to establish a big mask extensive    in the four directions to cover points for which a land point has    been considerated  do a small drawing          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     We mask u and v et v the long of coasts  the place where we    can not calculate the average       extention of the 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     Put back of a big value on all points for which we can do the calculation       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     trace only one vector one two      if keyword_set unvectsur  then BEGIN     indx is a vector containing number of columns to be selected    indy is a vector containing number of lines to be selected        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   From indx and indy  we will construct an array which will give indexes   of intersections points of columns specified by indx        indicereduit   indx replicate 1 n_elements indy nx replicate 1 n_elements indx indy   We reduce arrays which will be passed to vecteur        u   u indicereduit        v   v indicereduit        tabnorme   tabnorme indicereduit       endif           if keyword_set inverse  then begin       rien   u       u   v       v   rien    endif     Drawing of vectors       vecteur  u  v  tabnorme  indice2d  indicereduit  missing 1e5  _extra   ex     We complete the caption       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  "); 
     282a[280] = new Array("./ToBeReviewed/PLOTS/VECTEUR/vecteur.html", "vecteur.pro", "", "FUNCTION cv_cm2normal  angle     Give the lenth in normal coordinates of a trait oriented of an angle   by rapport at the x axis and which must do 1 cm on the drawing    Angle can be an array           compile_opt idl2  strictarrsubs    common   What is the lenth in normal coordinates of a trait which will do 1 cm   on the paper an which is parallel to 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     If the aspect rapport of the window is not equal to 1  the lenth in   normalized coordinates of  a trait of 1 cm vary following the polar   angle of this 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     normalize the vector       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              file_comments   Trace vectors  even if they are on a deformed grid  on any projection    In this way  all vectors have a comparable norme on the drawing  to be   clear  a vector which measure 1 cm measure it  no matter the projection   and is position on the sphere       categories    graphic       param COMPOSANTEU  in required    It is the u component of the vector to be traced  This 2d array has the    same dimension that reduitindice2d  see further        param COMPOSANTEV  in required    It is the v component of the vector to be traced  This 2d array has the    same dimension that reduitindice2d  see further        param INDICE2D   in required    It in an index allowing to to pass from an jpi or jpj array to the zoom    on which we do the drawing       param REDUITINDICE2D  in required    It is an index allowing to pass from an array defined by indice2d to the    array for which we really have vectors to be traced  to be clear  it is    for example when we trace only one vector on two       keyword CMREF   The lenth in cm that must measure the arrow normed normeref  By default     it is ajusted t othe drawing and included between  5 and 1 5 cm       keyword MISSING   The value of a missing value  Do not use this keyword  Fixed at 1e5 by    ajoutvect pro            keyword NORMEREF    The norme of the reference arrow       keyword VECTCOLOR   The color of the arrow  Black by default  color 0        keyword VECTTHICK   The thick of the arrow  1 by default       keyword VECTREFPOS   Vector composed of 2 elements specifing the position on DATA coordinates    from de begining of the reference vector  By default at the right bottom    of the drawing       keyword VECTREFFORMAT   The format to be used to specify the norme of the reference vector       keyword NOVECTREF   To delete the display of the reference vector        keyword _EXTRA   Used to pass your keywords       uses    common pro      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       version    Id: vecteur pro 142 2006 07 21 12:47:49Z navarro              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            For 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     Stage 1:      Given that the directions and the sense that the vector has on the sphere     we have to try to determinate this direction and the sense that the vector    will have on the screen once it will have been projected      In theory: on the sphere  a vector in a given point has for direction the    tangent at the circle passing by the center of the Earth and by the vector     So  find the direction once the projection is done  it is find the tangent   to the curve representing the projection of the circle on the 2d plan at the    point representing the projection of the starting point of the shere on the    2d plan       In practice we do no know the definition of the curve given by the projection    of a circle so find its tangente in a point      What we do:   In a 3d cartesian reference          a  We find coorinates of the point T  starting of the arrow  situed          on the sphere          b  To each point T  we determine local directions defined by the grid         on this point and on which coordinates  u v  of the vector refer to          These local directions are defined by gradients of glam and gphi  Once         we have obtain these directions  we considare them like orthogonal and         by norming them  we build an orthonormal reference  nu nv  on which         coordinates  u v  of the vector refer to  In the starting 3d cartesian         reference  the vector is defined by:         V u nu v nv          where V  nu and nv are 3d vectors and u and v are scalars          c  To approximate the tangente to the circle by the chord defined by         the beginning and the ending of the arrow  we will normalize V  and         then divide it by 100          d  This allows us to determine coordinates of extremities of the chord         in the 3d cartesian reference  We pass them in spherical coordinates in         order to recuperate latitude and longitude position of these points on         the sphere          e  We pass coordinates of these points in normalized coordinates  then         in polar coordinates in order to find the angle and the direction they         dertermine on the drawing        Stage 1  a        coordinates of the point T  beginning of the arrow  in spherical coordinates     glam   glamt indice2d reduitindice2d     gphi   gphit indice2d reduitindice2d      Coordinates of the point T  beginning of the arrow  in the cartesian reference    For the sphere  we use a sphere with a radius of 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      Stage 1  b      Construction of a vector nu  resp  nv  vectr normed carried by the axis of   points u i j  and u i 1 j   resp v i j  and v i j 1  which define  for each   point on the sphere  local directions associated with u and v  These vectors   define a local orthonormal reference     These vectors are built in a cartesian reference  cv_coord  We have choose a    unity radius of the Earth  unit      definition of 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    coordinates of points of the grid u in cartesian     ux   reform r 0    nxgd  nygd     uy   reform r 1    nxgd  nygd     uz   reform r 2    nxgd  nygd    calculation of nu     nux   ux shift ux  1  0     nuy   uy shift uy  1  0     nuz   uz shift uz  1  0    conditions at extremities     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 of the grid    nux   nux reduitindice2d     nuy   nuy reduitindice2d     nuz   nuz reduitindice2d    definition of 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    coordinates of points of the grid in cartesian     vx   reform r 0    nxgd  nygd     vy   reform r 1    nxgd  nygd     vz   reform r 2    nxgd  nygd    calcul of nv     nvx   vx shift vx  0  1     nvy   vy shift vy  0  1     nvz   vz shift vz  0  1    conditions at extremities    nvx  0    nvx  1     nvy  0    nvy  1     nvz  0    nvz  1    reduction of the grid    nvx   nvx reduitindice2d     nvy   nvy reduitindice2d     nvz   nvz reduitindice2d      normalization      normalise  nux  nuy  nuz    normalise  nvx  nvy  nvz     Stage 1  c      coordinates of the vector V in the cartesian reference      direcx   zu nux   zv nvx    direcy   zu nuy   zv nvy    direcz   zu nuz   zv nvz   normalization of the vector V    normalise  direcx  direcy  direcz   on divide by 100    direcx   direcx 100     direcy   direcy 100     direcz   direcz 100      Stege 1  d    coordinates of the point of the arrow in the cartesian reference      x1   x0   direcx    y1   y0   direcy    z1   z0   direcz    coordinates of the point of the arrow in spherical coordinates      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       modification of glams  Everything take place at the level of the line   of changing of date  BEWARE  do not cut arrow which goes out of the   window    test: If it goes out of the frame  but  thanks to   360  it come in    we modify it      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        Stage 1  e       r   convert_coord glam gphi data to_normal      x0   r 0                      normal coordinates of the beginning of the array     y0   r 1                              r   convert_coord glam1 gphi1 data to_normal      x1   r 0                      normal coordinates of the ending of the array  Before scaling     y1   r 1                           tests to avoid that arrows be drawing out of the domain       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     Following projections  there may are points at NaN when we pass in normal coordinates     We delete these 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      We define the vector direction in the normalize reference       dirx   x1 x0    diry   y1 y0    We pass in polar coordinates to recuperate the angle which wasb the goal of all the first stage        dirpol   cv_coord from_rect   transpose   dirx   diry     to_polar     dirpol   msk dirpol 0        Stage 2     Now we take care of the norme      Automatic putting at the scale       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     We modify the array norme to an element having the value cm be represented    by a trait of lenght 1 cm on the paper  Norme contain the norme of vectors    we want to draw       norme   1 1 cm norme cv_cm2normal dirpol        Stage 3   Now that we have the angle and the norme  we recuperate coordinates in    rectangular and we draw arrows       r   cv_coord from_polar   transpose   dirpol   norme     to_rect     composantex   r 0       composantey   r 1         x1   x0 composantex    y1   y0 composantey     Drawing      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      Draw an arrow at the right bottom of the drawing as a caption       if NOT keyword_set novectref  then BEGIN       dx   cmref cv_cm2normal 0    Lenght of the vector of reference in normalzed coordinates        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     "); 
     283a[281] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", "          file_comments   Produce a two dimensional velocity field plot      A directed arrow is drawn at each point showing the direction and    magnitude of the field                      categories   Plotting  two dimensional         param U  in required    The X component of the two dimensional field      U must be a two dimensional array       param V  in required    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       param X  in optional    Optional abcissae values   X must be a vector with a length    equal to the first dimension of U and V       param Y  in optional    Optional ordinate values   Y must be a vector with a length   equal to the first dimension of U and V       keyword COLOR   The color index used for the plot       keyword 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       keyword LENGTH   Length factor   The default of 1 0 makes the longest  U V    vector the length of a cell       keyword MISSING    Missing data value   Vectors with a LENGTH greater   than MISSING are ignored       keyword 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        keyword CLIP       keyword NOCLIP      keyword _EXTRA   Used to pass your keywords       restrictions    Plotting on the selected device is performed   System   variables concerning plotting are changed    Note:   All other keywords are passed directly to the PLOT procedure  and may be used to set option such as TITLE  POSITION    NOERASE  etc       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      Copyright  c  1983 1998  Research Systems  Inc   All rights reserved   Unauthorized reproduction prohibited       version    Id: velovect pro 142 2006 07 21 12:47:49Z navarro         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"); 
     284a[282] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", "             file_comments   Manage axes for the different drawings created by plt    pltz and pltt      categories    Graphic environment      param COUPE   It is a string designating the type of cut to which the axes we create    must report  For example:  xy xt       param TEMPSMIN  in required    In the case where we do cut containing the time dimension  we have    to specify the beginning of the time s axis in julian days       param TEMPSMAX  in required    In the case where we do cut containing the time dimension  we have    to specify the end of the time s axis in julian days       keyword SIN    activated when we trace in sinus of the latitude      keyword SEPDATE   string separating the diff rent constituents of the date  By default     it is a return to the linewhen we do a  yt   zt  or a  t     In the other cases  it is a blank        keyword 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       keyword _EXTRA    used to pass your keywords       uses   common pro      restrictions   It modify  x  and  y       history   Sebastien Masson  smasson lodyc jussieu fr                          11 12 98                         Eric Guilyardi types x y z   amelioration de                         l axe temporel      version    Id: axe pro 142 2006 07 21 12:47:49Z navarro             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     Management of ticks of the time axis in the case of TEMPSMIN    and TEMPSMAX are definied      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   Same year but several monthes             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   We check that labels are betwenn TEMPSMIN and TEMPSMAX              ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1              nticks   n_elements ticknom    Particular case where we are overlap two monthes             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    Same year and same month             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    Several years          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    We check that labels are betwenn TEMPSMIN and TEMPSMAX           ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE  1           nticks   n_elements ticknom    Particular case where we are overlap two monthes          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    Particular case where we are overlap two monthes            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 of axes parameters case by case      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   number of ticks by default             plot   0   0   noerase   nodata  xtick_get   xaxe   We increase this number to it be around 10              ticks   n_elements xaxe 1             ticks   ticks 1  2  4  8              ticks   ticks sort abs ticks 10 0    We recuperate the x axis for this new number of 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   Number of ticks by default             plot   0   0   nodata   noerase  xstyle   5  ystyle   5  xtick_get   xaxe   We increase this number to it be around 10              ticks   n_elements xaxe 1             ticks   ticks 1  2  4  8              ticks   ticks sort abs ticks 10 0    We recuperate the x axis for this new number of 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"); 
     285a[283] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", "             file_comments   Provide caption      categories   graphic  annex      param MI  in required    The min of the drawing       param MA  in required    The max of the plot      param COUPE   Charactere containing two letters giving the type of the cut   for example:  xz       keyword CONTOUR    If we want to trace contours of a different field than the one    whose we have the colored drawing  by examlpe E P in color and QSR in contours     It must be a field respecting same caracteristics than the argument number one of plt       keyword ENDPOINTS   Used when we do vertical cuts in diagonal       keyword _EXTRA   used to pass your keywords       uses   common pro      restrictions   The use of the global variable langage allows to change the language and the caption easily       history    Sebastien Masson  smasson lodyc jussieu fr   14 8 98                         Eric Guilyardi  ericg lodyc jussieu fr  GB version  11 6 99      version    Id: legende pro 142 2006 07 21 12:47:49Z navarro             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 and possible complement of  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   it is a 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     Shapping of subdomain  s dimensions       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      Management of the 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 on the caes where the caption is applied         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"); 
     286a[284] = new Array("./ToBeReviewed/PLOTS/plotsym.html", "plotsym.pro", "", "       file_comments   function to make plotting symbols much easier        categories   Graphic       Keyword circle    circle symbol       Keyword TRIANGLE   triangle symbol       Keyword DIAMOND    diamond symbold       Keyword BOX   box symbol       Keyword LINE   line symbol       Keyword SCALE   scales the symbol       Keyword ANGLE   angle the symbol should be rotated       Keyword _EXTRA   extra keywords for usersym   These are thick  color and fill      history   Written by:   Ronn Kling   Ronn Kling Consulting   7038 Westmoreland Dr    Warrenton  VA 20187   klingrl juno com   copyright 1999  all rights reserved      version    Id: plotsym pro 142 2006 07 21 12:47:49Z navarro         function plotsym  circle circle  triangle triangle  diamond diamond                      angle angle  box box  line line  scale scale                      _extra extra     compile_opt idl2  strictarrsubs   if not keyword_set scale  then scale 1 0 if not keyword_set angle  then angle 0 0  if keyword_set circle  then begin   theta   findgen 30 29 360  endif else if keyword_set triangle  then begin   theta    30 90 210   30  endif else if keyword_set diamond  then begin   theta    0 90 180 270 0  endif else if keyword_set box  then begin   theta    315 45 135 225 315  endif else if keyword_set line  then begin   theta    180 0  endif  theta   theta   angle x   cos theta    dtor    scale y   sin theta    dtor    scale  usersym  x y  _extra extra return 8 end"); 
     287a[285] = new Array("./ToBeReviewed/PLOTS/reinitplt.html", "reinitplt.pro", "", "             file_comments   This procedure will reinitialise all or a selection    ofthe system plot variables      categories   plot Utility         keyword X   clear the appropriate variable      keyword Y   clear the appropriate variable        keyword Z    clear the appropriate variable       keyword P   clear the appropriate variable      keyword ALL    Clear all  this is equivalent to  x y z p      keyword INVERT   Invert the logic  Clear all unselected variables    Therefore  clearplt all invert  does nothing       uses   common pro       restrictions   The sytem plot variables are changed       history   Written by: Trevor Harris  Physics Dept  University of Adelaide   July  1990      Sebastien Masson 7 5 98      version    Id: reinitplt pro 142 2006 07 21 12:47:49Z navarro             pro reinitplt  all all x x y y z z p p  invert invert       compile_opt idl2  strictarrsubs    clearx   0  cleary   0  clearz   0  clearp   0  if  keyword_set x  then clearx   1  if  keyword_set y  then cleary   1  if  keyword_set z  then clearz   1  if  keyword_set p  then clearp   1  if  keyword_set all                or  not keyword_set x  and not keyword_set y  and                   not keyword_set z  and not keyword_set p  then begin      clearx   1  cleary   1  clearz   1  clearp   1  endif   if  keyword_set invert  then begin  clearx   not clearx  cleary   not cleary  clearz   not clearz  clearp   not clearp  endif   if  clearx  then begin                  x charsize 0                  x GRIDSTYLE 0                  X MARGIN 10 3             X MINOR 0                  X OMARGIN 0 0                   x region 0           X RANGE 0                  x STYLE 5                   x tick 1                  x TICKFORMAT                   x TICKLEN 0                  x tickname                   x ticks 0                  X TICKV 0 X TICKV 1   x title                   x TYPE 0  endif  if  cleary  then begin                  y charsize 0                  y GRIDSTYLE 0                  Y MARGIN 10 3             Y MINOR 0                  Y OMARGIN 0 0                   y region 0           Y RANGE 0                  y STYLE 5                   y tick 1                  y TICKFORMAT                   y TICKLEN 0                  y tickname                   y ticks 0                  Y TICKV 0 Y TICKV 1   y title                   y TYPE 0  endif  if  clearz  then begin                  z charsize 0                  z GRIDSTYLE 0                  Z MARGIN 10 3             Z MINOR 0                  Z OMARGIN 0 0                   z region 0           Z RANGE 0                  z STYLE 1                   z tick 1                  z TICKFORMAT                   z TICKLEN 0                  z tickname                   z ticks 0                  Z TICKV 0 Z TICKV 1   z title                   z TYPE 0  endif  if  clearp  then begin  p BACKGROUND d n_colors 1    255  p CHARSIZE 1   p CHARTHICK 0   p LINESTYLE 0   p MULTI replicate 0 5   p NOERASE 0   p POSITION 0   p region 0                   p title   p subtitle   p ticklen 0 02                  p thick 0 1                  p color 0  endif  return  end      "); 
     288a[286] = new Array("./ToBeReviewed/PLOTS/style.html", "style.pro", "", "             file_comments    Choose the way to trace isolines       categories   graphic      param LABSTYLE  in required    Number to which the style of drawing choosen refer to       param LEVEL_Z2D  in required    Vector containing values of isolignes to be traced       param LINESTYLE  out    Vector used to define the isocontour s style         Comment: remenber:  Index Linestyle   0 Solid   1 Dotted   2 Dashed   3 Dash Dot   4 Dash Dot Dot Dot   5 Long Dashes        param THICK  out    Vector defining the thick of the isoline       history   Sebastien Masson  smasson lodyc jussieu fr       version    Id: style pro 142 2006 07 21 12:47:49Z navarro             pro style labstyle level_z2d linestyle thick     compile_opt idl2  strictarrsubs      case labstyle of       0: begin  series: Two thin continuous lines  one boldface continuous line          thick 1 1 2           linestyle 0           return       end       1: begin  series: Before the middle of levels: thin dash  Then thin continuous trait    If the middle of the drawing is drawn  it is in boldface continuous trait           impair n_elements level_z2d 2 fix n_elements level_z2d 2           a replicate 0 fix n_elements level_z2d 2           b replicate 1 fix n_elements level_z2d 2           c replicate 2 fix n_elements level_z2d 2                    if impair then begin             thick b 2 b              linestyle c 0 a           endif else begin             thick 0              linestyle c a           endelse          return       end       2: begin  series: Before the sill  defined by answering to a question : thin dash    Then thin continuous trait  If the sill is drawn  it is in boldface continuous trait           seuil xquestion Quelle est la limite tirets trait continu   0           seuil   float seuil           rien where level_z2d lt seuil n           a replicate 0 n_elements level_z2d n           c replicate 2 n                    if seuil eq level_z2d n  then begin             thick replicate 1 n 2 replicate 1 n_elements level_z2d 1 n              linestyle c a           endif else begin             thick 0              linestyle c a           endelse          return       end       3: begin          n   n_elements level_z2d           seuil   level_z2d 1 n 2            thick   intarr n           thick indgen n 4 4    1          thick indgen n 4 4 1    1          thick indgen n 4 4 2    2          thick indgen n 4 4 3    1           linestyle   intarr n           linestyle indgen n 4 4    3          linestyle indgen n 4 4 1    0          linestyle indgen n 4 4 2    0          linestyle indgen n 4 4 3    0           labels   intarr n           labels indgen n 2 2    1          labels n 2    0           return       end       4: begin   Boldface continuous trait           seuil   1 e 6          thick replicate 5   n_elements level_z2d           linestyle 0           rien where abs level_z2d max abs level_z2d  LT seuil           if rien 0  NE  1 then thick rien 0    3       end       else: begin          ras   report Le numero de labstyle demande n existe pas           stop       end    endcase    return end"); 
     289a[287] = new Array("./ToBeReviewed/PLOTS/symbols.html", "symbols.pro", "", "       file_comments   Create custom plotting symbols       param NSYM  in required                      1   open circle                  2   filled circle                  3   arrow pointing right                  4   arrow pointing left                  5   arrow pointing up                  6   arrow pointing down                  7   arrow pointing up and left  45 degrees    8   arrow pointing down and left   9   arrow pointing down and right    10   arrow pointing up and right    11 through 18 are bold versions of 3 through 10   19   horizontal line   20   box   21   diamond   22   triangle   30   filled box   31   filled diamond   32   filled triangle       param SCALE  in required    size of symbols        keyword COLOR   color of symbols      restrictions   The desired symbol is stored in the user buffer and    will be plotted if  P PSYM   8       history   Jeff Bennett  U of Colorado  198       version    Id: symbols pro 142 2006 07 21 12:47:49Z navarro       pro symbols nsym scale color col     compile_opt idl2  strictarrsubs   on_error 2 fill   0 case 1 of       nsym le 2 :   begin                          circles                        for large scales increase number of points for res                        if scale ge 4 then a   findgen 25  else                         a   findgen 13                        a   a    3 14159   6         0   12 or 24  pi 6                       xarr   cos a                        yarr   sin a                        if nsym eq 2 then fill   1                     end       nsym ge 3 nsym le 18 :   begin            arrow heads                       xarr   fltarr 5                        yarr   xarr                       xarr 1    10                        xarr 2    6                        yarr 2    2                         nsyms greater than 10 should be filled arrows                       if nsym gt 10 then begin                          xarr 3    6                            xarr 4    10                           yarr 3     2                           fill   1                       endif else begin                          xarr 3    10                           xarr 4    6                           yarr 4     2                        endelse                       case 1 of                           nsym eq 3 : dummy   0b                           nsym eq 4 : xarr    1 xarr                           nsym eq 11 nsym eq 12 : begin                             xarr   extrac xarr 0 11                              yarr   extrac yarr 0 11                              yarr 6    0 5                             xarr 7    6                             yarr 7    0 5                             xarr 8    6                             yarr 8     0 5                             yarr 9     0 5                             if nsym eq 12 then begin                                rotation xarr yarr 180 nx ny                                xarr   nx                                yarr   ny                             endif                                                      end                           nsym eq 5 nsym eq 13 : begin                             temp   xarr                             xarr   yarr                             yarr   temp                                                      end                           nsym eq 6 nsym eq 14 : begin                             temp    1 xarr                             xarr   yarr                             yarr   temp                                                      end                           nsym ge 7 nsym le 10                                nsym ge 15 nsym le 18 : begin                             case 1 of                                   nsym eq 7 nsym eq 15 : deg   45                                   nsym eq 8 nsym eq 16 : deg   135                                   nsym eq 9 nsym eq 17 : deg   225                                   nsym eq 10 nsym eq 18 : deg   315                             endcase                             rotation xarr yarr deg nx ny                             xarr   nx                             yarr   ny                                                   end    end nsym ge 7                       endcase                                    end     nsym between 3 and 18       nsym eq 20 nsym eq 21 nsym eq 30 nsym eq 31 :  begin                       xarr   fltarr 5    3                       yarr   xarr                       xarr 1     3                        xarr 2     3                        yarr 2     3                        yarr 3     3                        if  nsym eq 21 nsym eq 31  then begin                          rotation xarr yarr 45 nx ny                          nx   0 70   nx      shrink the x direction                          xarr   nx                          yarr   ny                       endif                       if nsym ge 30 then fill   1                                    end     nsym 20 21 30 31       nsym eq 22 nsym eq 32 :  begin   side length 6  0 at centroid                       yarr   fltarr 4    6 4                        xarr   fltarr 4    6 2                        xarr 1    6 2                        xarr 2    0                        yarr 2    6 sqrt 3 2    6 4                        if nsym eq 32 then fill   1                                     end      else:                          begin                       xarr   fltarr 2    1                       yarr   xarr   0                        xarr 1     1                                      end endcase   xarr   xarr   scale yarr   yarr   scale    set symbol buffer if keyword_set col  then usersym xarr yarr fill fill color col else     usersym xarr yarr fill fill   return end"); 
    290290a[288] = new Array("./ToBeReviewed/POSTSCRIPT/calibre.html", "calibre.pro", "", "          NAME: calibre     PURPOSE:a partir d un rapport d aspect et des valeurs  en ligne de   characteres  des differentes marges  calcul posfenetre et posbar qui   servent a placer le dessin et la barre de couleur grace a    p position sur une feuille ou   sur une sortie ecran dont la fenetre a les memes proportions     CATEGORY: positionnement du graphe     CALLING SEQUENCE:       calibre  rapportyx marge margebar  smalldraw posfenetre  posbar      INPUTS:  rapportyx: rapport d echelle entre la longueur de l axe des  y et celle des x  par ex pour une carte xy          rapportyx lat2 lat1 lon2 lon1     marge: vecteur de 4 elements contenant la taille des marges a gauche    a droite  en bas et en haut devant entourer le graphe  tout est   mesure en lignes de characteres    margebar: vecteur de 4 elements contenant la taille des marges a gauche    a droite  en bas et  ATTENTION  le dernier element est cette fois ci   la position de coin en haut a droite  devant entourer la barre de   couleur  tout est mesure en lignes de characteres           smalldraw: 2 possiblites               un vecteur de 4 elements donnant  en portrait ou   en landscape  la position de cadre ds lequel doit rentrer le   dessin  cette position est donne par les coordonnes des 2 coins du   cadre: en bas a gauche et en haut a droite  elle s exprime tjs    pour un postscript ou une sortie ecran  en cm  l origine etant le   coin en bas a gauche                un vecteur de 3 elements donnant le nombre de colonnes a   faire de le dessin  le nombre de lignes et enfin le numero de la   case que doit occuper le dessin  cf matlab  par ex pour faire 6   dessin en 2 colonnes et 3 lignes et occuper la 4 eme case  small 2 3 4      KEYWORD PARAMETERS:    REMPLI:oblige le dessin a occuper l espace maximum definit   par smalldraw sans resperter le rapport y sur x     YXASPECT: force le rapport y sur x a prendre la valeur   rapportyx yxaspect  ce mot cle est utile ds deux cas:      1  yxaspect 1 : oblige rapportyx a etre bien respecte sinon           calibre se reserve le droit de changer un peu celui ci dans           le cas ou le rapport d aspect de small dessin est trop           different de celui de smalldraw      2  yxaspect n : multiplie par n le rapport d aspect donne par           defaut par ex ds plt  rapportyx est calcule pour que le           repere soit orthonorme  pour avoir un repere ou l axe des y           est 2 fois plus dilate que celui des y YXASPECT 2           PORTRAIT et LANDSCAPE: mots cles plus utilises mais tjs fonctionnels     OUTPUTS:         posfenetre: un vecteur de 4 elements contenant la position de         cadre contenant les legendes   le graphe en coordonnes         normalises  Rq: pour positionner le dessin il faut apres         l appelle de calibre faire  p position posfenetre           posbar: cf posfentre mais pour la barre de couleur  meme         remarque pour positionner la barre de couleur   p position posbar     COMMON BLOCKS:  common pro      SIDE EFFECTS:     RESTRICTIONS:     EXAMPLE:     MODIFICATION HISTORY: Sebastien Masson  smasson lodyc jussieu fr   11 12 98         pro calibre  rapportyx  marge  margebar  smalldraw  posfenetre  posbar                  REMPLI   rempli  YXASPECT   yxaspect  PORTRAIT   portrait                  LANDSCAPE   lanscape  _extra   ex       compile_opt idl2  strictarrsubs    cm_4ps   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF        tempsun   systime 1            pour key_performance      if keyword_set portrait  then key_portrait 1    if keyword_set landscape  then key_portrait 0    if keyword_set yxaspect  then begin       rapportyx rapportyx yxaspect        test2 0    endif else begin       yxaspect 1        test2 1     ENDELSE        mipgsz   min page_size  max   mapgsz      choix de Landscape ou Portrait      if n_elements key_portrait  eq 0  then begin       if rapportyx ge 1 then key_portrait 1       if rapportyx lt 1 then key_portrait 0    endif     si smalldraw est compte comme ds matlab      if n_elements smalldraw  EQ 3  then begin       if n_elements page_margins  EQ 0 then page_margins    1  1  1  1        smalldraw   long smalldraw        nbrecol   smalldraw 0        nbrelig   smalldraw 1        numero   smalldraw 2 1       numlig   numero nbrecol       numcol   numero numlig nbrecol       bas   mipgsz key_portrait mapgsz 1 key_portrait         cote   mapgsz key_portrait mipgsz 1 key_portrait         poscol   page_margins 0 findgen nbrecol 1 1 bas page_margins 0 page_margins 1 nbrecol        poslig   cote page_margins 3 findgen nbrelig 1 1 cote page_margins 2 page_margins 3 nbrelig        smalldraw    poscol numcol  poslig numlig 1  poscol numcol 1  poslig numlig     endif     determination de la taille des characteres  p charsize       nombre_de_mots_ds_titre   60      p charsize 1 smalldraw 2 smalldraw 0 d x_px_cm          nombre_de_mots_ds_titre   d y_ch_size     if  p charsize gt 1 then  p charsize 1     transfert de marge en cm      cm 1 d x_px_cm    marge 1  marge    d y_ch_size    p charsize   cm    margebar 1  margebar    d y_ch_size    p charsize   cm     definition de la portion de feuille ou on dessine      if key_portrait eq 0 then begin       big smalldraw 2 smalldraw 0        small smalldraw 3 smalldraw 1     endif else begin       small smalldraw 2 smalldraw 0        big smalldraw 3 smalldraw 1     endelse    if key_portrait eq 0 then       rapportmax 1 small marge 3 marge 1 big marge 2 marge 0       else rapportmax 1 small marge 2 marge 0 big marge 3 marge 1      si yxaspect n est pas specifie on modifie la valeur de rapportyx pour que   ca colle un peu plus aux proportions de la feuille      if rapportyx le rapportmax then begin       if test2 then begin          rap 1 rapportmax rapportyx          if rap ge 5  and rap lt 6  then rapportyx rapportyx 1 5          if rap ge 6  and rap lt 7  then rapportyx rapportyx 2           if rap ge 7  and rap lt 8  then rapportyx rapportyx 2 5          if rap ge 8  then rapportyx rapportyx 3        endif    endif else begin       if test2 then begin          rap 1 rapportmax rapportyx          if rap lt 1 5  and rap ge 1 6  then rapportyx rapportyx 1 5          if rap lt 1 6  and rap ge 1 7  then rapportyx rapportyx 2           if rap lt 1 7  and rap ge 1 8  then rapportyx rapportyx 2 5          if rap lt 1 8  then rapportyx rapportyx 3        endif    endelse     dans le cas ou on fait un Landscape:      if key_portrait eq 0 then begin              if keyword_set rempli  then begin          xs big          ys small       endif else begin          if rapportyx le rapportmax then begin             xs big             ys 1 big marge 0 marge 1 rapportyx marge 2 marge 3              if ys gt small then begin                xs 1 small marge 2 marge 3 rapportyx marge 0 marge 1                 ys small             endif          endif else begin             xs 1 small marge 2 marge 3 rapportyx marge 0 marge 1              ys small             if xs gt big then begin                xs big                ys 1 big marge 0 marge 1 rapportyx marge 2 marge 3              endif          endelse       endelse       xoff 1 small ys 2 smalldraw 1        yoff 1 big xs 2 xs mapgsz smalldraw 2        a 1 mapgsz yoff mapgsz       b 1 xoff mipgsz       c a 1 xs mapgsz       d b 1 ys mipgsz    endif       dans le cas ou on fait un portrait:      else begin              if keyword_set rempli  then begin          xs small          ys big       endif else begin          if rapportyx le rapportmax then begin             xs small             ys 1 small marge 0 marge 1 rapportyx marge 2 marge 3              if ys gt big then begin                xs 1 big marge 2 marge 3 rapportyx marge 0 marge 1                 ys big             endif          endif else begin             xs 1 big marge 2 marge 3 rapportyx marge 0 marge 1              ys big             if xs gt small then begin                xs small                ys 1 small marge 0 marge 1 rapportyx marge 2 marge 3              endif          endelse       endelse       xoff 1 small xs 2 smalldraw 0        yoff 1 big ys 2 smalldraw 1        a 1 xoff mipgsz       b 1 yoff mapgsz       c a 1 xs mipgsz       d b 1 ys mapgsz       xset   xoff       yset   yoff    endelse      bas mapgsz 1 key_portrait mipgsz key_portrait    cote mipgsz 1 key_portrait mapgsz key_portrait    posfenetre a b c d  marge 0 bas  marge 2 cote                              marge 1 bas marge 3 cote      posbar a b c d  margebar 0 bas  margebar 2 cote                          margebar 1 bas ys margebar 3 cote        if keyword_set key_performance  THEN print   temps calibre  systime 1 tempsun     IF NOT keyword_set key_forgetold  THEN BEGIN     updateold   ENDIF        return end"); 
    291291a[289] = new Array("./ToBeReviewed/POSTSCRIPT/chcolps.html", "chcolps.pro", "", "PRO format_colortable_hexa  table     compile_opt idl2  strictarrsubs        tvlct  r  g  b   get      z   strarr 256      y   strarr 256      for k 0 255 do z k 00 strtrim string r k  format    Z 2      for k 0 255 do y k y k strmid z k strlen z k 2 2       for k 0 255 do z k 00 strtrim string g k  format    Z 2      for k 0 255 do y k y k strmid z k strlen z k 2 2       for k 0 255 do z k 00 strtrim string b k  format    Z 2      for k 0 255 do y k y k strmid z k strlen z k 2 2           table    strlowcase y   END   PRO build_table  tableout     Fabrique le bloc de colortable       compile_opt idl2  strictarrsubs        format_colortable_hexa  table       tableout   strarr 25       tableout 0     COLORTAB  def       END    PRO chcolps  n1  n2  file  PALIT1   palit1  PALIT2   palit2     Modifie les couleurs d un fichier postscript     Creation : G  Roullet 1999       recupere les palettes       compile_opt idl2  strictarrsubs       lct  n1     IF keyword_set palit1  THEN palit  palit1     tvlct  red  green  blue   get      lct  n2     IF keyword_set palit2  THEN palit  palit2     tvlct  red1  green1  blue1   get           filein   file     fileout   file new           openr  numin  filein   get_lun     openw  numout  fileout   get_lun     ligne         nl   0     colortab   0     Scan le fichier       WHILE NOT eof numin  DO BEGIN            readf  numin  ligne  format    A            nl   nl 1     Replace setrgbcolor statements             pos   strpos ligne   setrgbcolor            IF pos NE  1 THEN BEGIN                  r   round float strmid ligne  pos 18  6 255                  g   round float strmid ligne  pos 12  6 255                  b   round float strmid ligne  pos 6  6 255                            ind   where r EQ red AND g EQ green AND b EQ blue                  ind   ind 0                  IF ind 0  NE  1 THEN BEGIN                        r1   red1 ind 255                        g1   green1 ind 255                        b1   blue1 ind 255                        color   string r1  g1  b1  format    3 F5 3 : X                        strput  ligne  color  pos 18                 ENDIF ELSE BEGIN                        print   erreur ligne :  nl                       dist   abs r red abs g green abs b blue                        ind    where dist EQ min dist 0                        ind   ind 0                         print   je trouve              long r  g  b                         print   je remplace par    red ind  green ind  blue ind                        r1   red1 ind 255                        g1   green1 ind 255                        b1   blue1 ind 255                        color   string r1  g1  b1  format    3 F5 3 : X                        strput  ligne  color  pos 18                 ENDELSE            ENDIF                 Replace COLORTAB             pos   strpos ligne   COLORTAB            IF pos NE  1 THEN BEGIN                  build_table  table                 n   0                 colortab   1           ENDIF             IF colortab THEN BEGIN                 ligne   table n                  n   n 1                 IF n EQ 24 THEN colortab   0           ENDIF      Ecrit le fichier de sorti             printf  numout  ligne  format    A      ENDWHILE      close  numin     close  numout     free_lun  numin     free_lun  numout      spawn   gs  fileout  END  "); 
     
    294294a[292] = new Array("./ToBeReviewed/STATISTICS/a_timecorrelate.html", "a_timecorrelate.pro", "", "    NAME:         A_TIMECORRELATE     PURPOSE:         Same function as A_CORRELATE but accept array  until 4         dimension  for input and do the autocorrelation or the         autocovariance along the time dimension which must be the last         one of the input array            This function computes the autocorrelation Px L  or autocovariance         Rx L  of a sample population X as a function of the lag  L      CATEGORY:         Statistics      CALLING SEQUENCE:         Result   a_timecorrelate X  Lag      INPUTS:         X:    an Array which last dimension is the time dimension os         size n          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 autocovariance                        is computed            DOUBLE:        If set to a non zero value  computations are done in                        double precision arithmetic      EXAMPLE         Define an n element sample population            x    3 73  3 67  3 77  3 83  4 67  5 87  6 70  6 97  6 40  5 57            Compute the autocorrelation of X for LAG    3  0  1  3  4  8           lag    3  0  1  3  4  8            result   a_correlate x  lag            The result should be:            0 0146185  1 00000  0 810879  0 0146185   0 325279   0 151684      PROCEDURE:                               n L 1                            sigma   X k Xmean X k L Xmean                             k 0     correlation X L                               n 1                                                sigma   X k Xmean 2                              k 0                                                   n L 1                           sigma   X k Xmean X k L Xmean                            k 0     covariance X L                                        n       Where Xmean is the Time mean of the sample population     x x t 0 x t 1 x t n 1        REFERENCE:         INTRODUCTION TO STATISTICAL TIME SERIES         Wayne A  Fuller         ISBN 0 471 28715 6     MODIFICATION HISTORY:         24 2 2000 Sebastien Masson  smasson lodyc jussieu fr          Based on the A_CORRELATE procedure of IDL    FUNCTION TimeAuto_Cov  X  M  nT  Double   Double  zero2nan   zero2nan  Sample autocovariance function     compile_opt idl2  strictarrsubs      TimeDim   size X   n_dimensions     Xmean   TOTAL X  TimeDim  Double   Double    nT    if double then one   1 0d ELSE one   1 0    Xmean   Xmean replicate one  nT   M         case TimeDim of       1:res   TOTAL X 0:nT   M   1L    Xmean     X M:nT   1L    Xmean                        TimeDim  Double   Double        2:res   TOTAL X  0:nT   M   1L    Xmean                           X  M:nT   1L    Xmean                          TimeDim  Double   Double        3:res   TOTAL X    0:nT   M   1L    Xmean                           X    M:nT   1L    Xmean                          TimeDim  Double   Double        4:res   TOTAL X      0:nT   M   1L    Xmean                           X      M:nT   1L    Xmean                          TimeDim  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 A_TimeCorrelate  X  Lag  COVARIANCE   Covariance  DOUBLE   Double     compile_opt idl2  strictarrsubs     Compute the sample autocorrelation or autocovariance of  Xt  Xt l   as a function of the lag  l      ON_ERROR  2     XDim   SIZE X   dimensions     XNDim   SIZE X   n_dimensions     nT   XDim XNDim 1                                   Check length     if nT lt 2 then       MESSAGE   Time axis of X array 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    SIZE X   type  eq 5          if n_elements lag  EQ 0 then lag   0    nLag   N_ELEMENTS Lag      if nLag eq 1 then Lag    Lag   Create a 1 element vector      case XNDim of       1:if Double eq 0 then Auto   FLTARR nLag  else Auto   DBLARR nLag        2:if Double eq 0 then Auto   FLTARR XDim 0  nLag  else Auto   DBLARR XDim 0  nLag        3:if Double eq 0 then Auto   FLTARR XDim 0  XDim 1  nLag          else Auto   DBLARR XDim 0  XDim 1  nLag        4:if Double eq 0 then Auto   FLTARR XDim 0  XDim 1  XDim 2  nLag          else Auto   DBLARR XDim 0  XDim 1  XDim 2  nLag     endcase     if KEYWORD_SET Covariance  eq 0 then begin  Compute Autocorrelation        for k   0  nLag 1 do          case XNDim of          1:Auto k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double                TimeAuto_Cov X  0L  nT  Double   Double   zero2nan           2:Auto  k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double                TimeAuto_Cov X  0L  nT  Double   Double   zero2nan           3:Auto    k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double                TimeAuto_Cov X  0L  nT  Double   Double   zero2nan           4:Auto      k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double                TimeAuto_Cov X  0L  nT  Double   Double   zero2nan        endcase    endif else begin              Compute Autocovariance        for k   0  nLag 1 do           case XNDim of          1:Auto k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double    nT          2:Auto  k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double    nT          3:Auto    k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double    nT          4:Auto      k    TimeAuto_Cov X  ABS Lag k  nT  Double   Double    nT       endcase    endelse     if Double eq 0 then RETURN  FLOAT Auto  else       RETURN  Auto  END"); 
    295295a[293] = 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   "); 
    296 a[294] = new Array("./ToBeReviewed/STRING/chkeywd.html", "chkeywd.pro", "", "             file_comments   In a string containing an order to executewith EXECUTE by example     We change the value of one of keywords    More generally  in a string  we look for the caracter chain:   keywdname      and we change the value of       categories   string  keywords         param STRINGIN  in required    it is a string      param KEYWDNAME  in required    it is a string designating the name of keyword to look for       param KEYWDVALUE  in required     The new value of the keyword to considerate in STRINGIN      keyword SEPARATOR   To look for the keyword  we look for the first sign   which follow    the position of keywdname  By default  we substitute the string    before the comma  With the keyword SEPARATOR we can modify the cut    of the string  SEPARATOR give a caractere before the one we have to    look for the comma which delimit the keyword in the string     see examples       keyword AFTER   To look for the keyword  we look for the first sign   which follow    the position of keywdname  By default  we substitute the string    before the comma  With the keyword AFTER we can modify the cut    of the string  AFTER give a caractere after the one we have to    look for the comma which delimit the keyword in the string     see examples       returns    stringout stringin modified if keywdname has been found in stringin      uses    common pro      restrictions   If keywdvalue is an array  it will be convert in a vector       restrictions   Beware  this function has loops  ifs ad cases everywhere  So it can    not be used by big keywords  with a lot of elements which are big    arrays  The input keyword must not contain Complex floatings  structure     Double precision complex  Pointer  Object reference  Unsigned Integer     Unsigned Longword Integer  64 bit Integer or Unsigned 64 bit Integer          examples       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      history   Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999                        24 11 1999: adaptation for keywords starting by         version    Id            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   change a keyword starting by  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    change a keyword sarting by 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"); 
    297 a[295] = new Array("./ToBeReviewed/STRING/delchr.html", "delchr.pro", "", "         file_comments   Delete all occurrences of a character from a text string        categories      param OLD  in required    original text string        param C  in required    character to delete       keyword HELP      returns   new   resulting string        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       version    Id           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"); 
    298 a[296] = new Array("./ToBeReviewed/STRING/getfile.html", "getfile.pro", "", "         file_comments   Read a text file into a string array       param filein  in required    text file name        Keyword ERROR    err  error flag: 0 ok  1 file not opened    2 no lines in file                keyword QUIET    means give no error message                keyword LINES    n  Number of lines to read  def all    Much faster if number of lines is known    Automatic for IDL 5 6 or later                keyword FIND    search te file in the all  path directories  use   find pro       keyword HELP       returns       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       version    Id           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/chkeywd.html", "chkeywd.pro", "", "             file_comments   In a string containing an order to executewith EXECUTE by example     We change the value of one of keywords    More generally  in a string  we look for the caracter chain:   keywdname      and we change the value of       categories   string  keywords         param STRINGIN  in required    it is a string      param KEYWDNAME  in required    it is a string designating the name of keyword to look for       param KEYWDVALUE  in required     The new value of the keyword to considerate in STRINGIN      keyword SEPARATOR   To look for the keyword  we look for the first sign   which follow    the position of keywdname  By default  we substitute the string    before the comma  With the keyword SEPARATOR we can modify the cut    of the string  SEPARATOR give a caractere before the one we have to    look for the comma which delimit the keyword in the string     see examples       keyword AFTER   To look for the keyword  we look for the first sign   which follow    the position of keywdname  By default  we substitute the string    before the comma  With the keyword AFTER we can modify the cut    of the string  AFTER give a caractere after the one we have to    look for the comma which delimit the keyword in the string     see examples       returns    stringout stringin modified if keywdname has been found in stringin      uses    common pro      restrictions   If keywdvalue is an array  it will be convert in a vector       restrictions   Beware  this function has loops  ifs ad cases everywhere  So it can    not be used by big keywords  with a lot of elements which are big    arrays  The input keyword must not contain Complex floatings  structure     Double precision complex  Pointer  Object reference  Unsigned Integer     Unsigned Longword Integer  64 bit Integer or Unsigned 64 bit Integer          examples       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      history   Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999                        24 11 1999: adaptation for keywords starting by         version    Id: chkeywd pro 142 2006 07 21 12:47:49Z navarro             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   change a keyword starting by  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    change a keyword sarting by 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"); 
     297a[295] = new Array("./ToBeReviewed/STRING/delchr.html", "delchr.pro", "", "         file_comments   Delete all occurrences of a character from a text string        categories      param OLD  in required    original text string        param C  in required    character to delete       keyword HELP      returns   new   resulting string        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       version    Id: delchr pro 142 2006 07 21 12:47:49Z navarro            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"); 
     298a[296] = new Array("./ToBeReviewed/STRING/getfile.html", "getfile.pro", "", "         file_comments   Read a text file into a string array       param filein  in required    text file name        Keyword ERROR    err  error flag: 0 ok  1 file not opened    2 no lines in file                keyword QUIET    means give no error message                keyword LINES    n  Number of lines to read  def all    Much faster if number of lines is known    Automatic for IDL 5 6 or later                keyword FIND    search te file in the all  path directories  use   find pro       keyword HELP       returns       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       version    Id: getfile pro 142 2006 07 21 12:47:49Z navarro            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"); 
    299299a[297] = new Array("./ToBeReviewed/STRING/getwrd.html", "getwrd.pro", "", "         file_comments   Return the n th word from a text string        categories      param TXTSTR  in required    text string to extract from    The first element is used if txt is an array       param NTH  in required    word number to get  first   0   def       param MTH  in required    optional last word number to get       keyword LOCATION     l   Return word n string location                keyword DELIMITER     d  Set word delimiter  def   space   tab                keyword 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       keyword NOTRIM   suppresses whitespace trimming on ends        keyword NWORDS     n  Returns number of words in string        returns wrd   returned word or words       uses   getwrd_com       restrictions   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"); 
    300 a[298] = new Array("./ToBeReviewed/STRING/isnumber.html", "isnumber.pro", "", "         file_comments   Determine if a text string is a valid number       categories      param TXT0  in required    text string to test       param X  in required       keyword HELP      returns         x   optionaly returned numeric value if valid            i   test flag:                                               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        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       version    Id           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"); 
     300a[298] = new Array("./ToBeReviewed/STRING/isnumber.html", "isnumber.pro", "", "         file_comments   Determine if a text string is a valid number       categories      param TXT0  in required    text string to test       param X  in required       keyword HELP      returns         x   optionaly returned numeric value if valid            i   test flag:                                               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        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       version    Id: isnumber pro 142 2006 07 21 12:47:49Z navarro            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"); 
    301301a[299] = 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      todo seb       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 "); 
    302 a[300] = new Array("./ToBeReviewed/STRING/nwrds.html", "nwrds.pro", "", "         file_comments   Return the number of words in the given text string        categories      param TXTSTR     text string to examine       keyword DELIMITER     d   Set delimiter character  def   space        keyword HELP      returns   n   number of words found        restrictions   See also getwrd        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       version    Id             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"); 
    303 a[301] = new Array("./ToBeReviewed/STRING/putfile.html", "putfile.pro", "", "         file_comments   Write a text file from a string array        categories     INPUTS:    param FILE  in required      text file name       param S  in required      string array       keyword ERROR    err  error flag: 0 ok  1 invalid string array        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       version    Id           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"); 
    304 a[302] = new Array("./ToBeReviewed/STRING/str_size.html", "str_size.pro", "", "       file_comments   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       categories   Graphics Programs  Widgets       param STRING  in required    This is the string that you want to make a specifed   target size or width       param TARGETWIDTH  in optional    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 INITSIZE     This is the initial size of the string  Default is 1 0       keyword 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       returns    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       examples   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       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      version    Id: str_size pro 134 2006 07 07 10:19:08Z navarro        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"); 
    305 a[303] = 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         file_comments   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       categories   Utility      param STRVAL  IN REQUIRED    String set up as keywords  Keywords require a little special treatment  Such as   plot findgen 100 _extra stringToStructure title testing       RETURNS    This function returns the string as an anonymous structure  If an   error was found then this function returns a structure with a null field       examples         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      history         Written by:         RLK  Ronn Kling Consulting          ronn rlkling com         www rlkling com                 May  1999      version    Id       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 "); 
    306 a[304] = new Array("./ToBeReviewed/STRING/strkeywd.html", "strkeywd.pro", "", "             file_comments   Translate a sturcture in a string able to be used to specify keywords    in the calling of a function when we use EXECUTE  see example       categories        param STRUCT   a structure      returns   a string composed like following:   For each element of the structure  we write a part of the string as:             name_of_the_element content_of_the_element       restrictions   If an element of the structure contain an array  it will be convert in a vector       restrictions   Beware  this function has loops  ifs ad cases everywhere  So it can    not be used by big keywords  with a lot of elements which are big    arrays  The input keyword must not contain Complex floatings  structure     Double precision complex  Pointer  Object reference  Unsigned Integer     Unsigned Longword Integer  64 bit Integer or Unsigned 64 bit Integer       examples   We create a 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    We put this structure as a string         IDL  a strkeywd b          IDL  print  a         AGE_CAPITAINE 35  OK 111  YEAR 1997 1998 1999    Now we can use the string a to pass keywords in a function thanks to 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       history   Sebastien Masson  smasson lodyc jussieu fr                         11 10 1999      version    Id            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"); 
    307 a[305] = new Array("./ToBeReviewed/STRING/strrepl.html", "strrepl.pro", "", "         file_comments    replace one  or more  character s string s  in a string      categories   string routines      param STR  in required    the string to be changed      param RCHAR  in required    replacement character string      returns   another string      restrictions    Known shortcoming: if index is an array  it must contain all   valid elements  only the first entry is checked       examples            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      history          mgs  02 Jun 1998: VERSION 1 00          sebastien Masson  smlod ipsl jussieu fr       version    Id: strrepl pro 134 2006 07 07 10:19:08Z navarro         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"); 
    308 a[306] = new Array("./ToBeReviewed/STRING/strright.html", "strright.pro", "", "         file_comments   return right subportion from a string      categories   string handling        param S  in required    the string to be searched      param LASTN  in required    the number of characters to be returned  Default   is 1  If NLAST is ge strlen STRING  the complete string   is returned       returns   The portion of LASTN characters of S counted from the back       examples   if  strright path  ne   then path   path          history          mgs  19 Nov 1997: VERSION 1 00      version    Id: strright pro 134 2006 07 07 10:19:08Z navarro         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"); 
    309 a[307] = new Array("./ToBeReviewed/STRING/strsci.html", "strsci.pro", "", "         file_comments   Given a number  returns a string of that          B   number in scientific notation format   e g  A x 10         categories   String Utilities      param DATA  in required    A floating point or integer number to be   converted into a power of 10       keyword 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         keyword 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         keyword MANTISSA_ONLY   return only mantissa of the string      keyword SHORT   return 10 0 as  1  and 10 1 as  10       keyword TRIM   don t insert blanks  i e  return Ax10 B       restrictions   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       examples          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         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      version    Id: strsci pro 134 2006 07 07 10:19:08Z navarro         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"); 
    310 a[308] = new Array("./ToBeReviewed/STRING/strtok.html", "strtok.pro", "", "         file_comments   Retrieve portion of string up to token        categories   text strings      param STRING  in required    String to be split   Contains text after    in  out   token on output        param TOKEN  in required    Token to use in splitting old              keyword TRIM    set to remove leading blanks from old    before returning       keyword HELP   print useful message and exit        returns   new     portion of string up to token               out   old     portion of old after token                  out  in      restrictions   Input parameter old is modified    Token may be one or more characters    If token is not found  returns old and sets old to         examples         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       history          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     Thanks:         To D  Linder who wrote GETTOK  part of the goddard library          upon which this is based      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       version    Id: strtok pro 134 2006 07 07 10:19:08Z navarro       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 "); 
    311 a[309] = new Array("./ToBeReviewed/STRING/strwhere.html", "strwhere.pro", "", "         file_comments   return position  array  for occurence of a character in a string      categories   string tools      param STR  in required    the string      param SCHAR  in required    the character to look for      returns COUNT  out optional    The number of matches that were found       The function returns an index array similar to the     result of the where function      examples          ind   strwhere abcabcabc a               returns   0  3  6        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       version    Id: strwhere pro 134 2006 07 07 10:19:08Z navarro         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    "); 
    312 a[310] = new Array("./ToBeReviewed/STRING/tostr.html", "tostr.pro", "", "             file_comments   Convert an input in a string       categories       param INPUT  in required    input can not contain or be of the type of:       Complex floating  structure  Double precision complex  Pointer  Object     reference  Unsigned Integer  Unsigned Longword Integer  64 bit     Integer  Unsigned 64 bit Integer       returns   a string      restrictions   If keywdvalue is an array  it will be convert in a vector       restrictions   Beware  this function has loops  ifs ad cases everywhere  So it can    not be used by big keywords  with a lot of elements which are big    arrays        examples      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       history   Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999      version    Id            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"); 
     302a[300] = new Array("./ToBeReviewed/STRING/nwrds.html", "nwrds.pro", "", "         file_comments   Return the number of words in the given text string        categories      param TXTSTR     text string to examine       keyword DELIMITER     d   Set delimiter character  def   space        keyword HELP      returns   n   number of words found        restrictions   See also getwrd        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       version    Id: nwrds pro 142 2006 07 21 12:47:49Z navarro              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"); 
     303a[301] = new Array("./ToBeReviewed/STRING/putfile.html", "putfile.pro", "", "         file_comments   Write a text file from a string array        categories     INPUTS:    param FILE  in required      text file name       param S  in required      string array       keyword ERROR    err  error flag: 0 ok  1 invalid string array        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       version    Id: putfile pro 142 2006 07 21 12:47:49Z navarro            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"); 
     304a[302] = new Array("./ToBeReviewed/STRING/str_size.html", "str_size.pro", "", "       file_comments   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       categories   Graphics Programs  Widgets       param STRING  in required    This is the string that you want to make a specifed   target size or width       param TARGETWIDTH  in optional    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 INITSIZE     This is the initial size of the string  Default is 1 0       keyword 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       returns    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       examples   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       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      version    Id: str_size pro 142 2006 07 21 12:47:49Z navarro        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"); 
     305a[303] = 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         file_comments   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       categories   Utility      param STRVAL  IN REQUIRED    String set up as keywords  Keywords require a little special treatment  Such as   plot findgen 100 _extra stringToStructure title testing       RETURNS    This function returns the string as an anonymous structure  If an   error was found then this function returns a structure with a null field       examples         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      history         Written by:         RLK  Ronn Kling Consulting          ronn rlkling com         www rlkling com                 May  1999      version    Id: string2struct pro 142 2006 07 21 12:47:49Z navarro        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 "); 
     306a[304] = new Array("./ToBeReviewed/STRING/strkeywd.html", "strkeywd.pro", "", "             file_comments   Translate a sturcture in a string able to be used to specify keywords    in the calling of a function when we use EXECUTE  see example       categories        param STRUCT   a structure      returns   a string composed like following:   For each element of the structure  we write a part of the string as:             name_of_the_element content_of_the_element       restrictions   If an element of the structure contain an array  it will be convert in a vector       restrictions   Beware  this function has loops  ifs ad cases everywhere  So it can    not be used by big keywords  with a lot of elements which are big    arrays  The input keyword must not contain Complex floatings  structure     Double precision complex  Pointer  Object reference  Unsigned Integer     Unsigned Longword Integer  64 bit Integer or Unsigned 64 bit Integer       examples   We create a 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    We put this structure as a string         IDL  a strkeywd b          IDL  print  a         AGE_CAPITAINE 35  OK 111  YEAR 1997 1998 1999    Now we can use the string a to pass keywords in a function thanks to 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       history   Sebastien Masson  smasson lodyc jussieu fr                         11 10 1999      version    Id: strkeywd pro 142 2006 07 21 12:47:49Z navarro             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"); 
     307a[305] = new Array("./ToBeReviewed/STRING/strrepl.html", "strrepl.pro", "", "         file_comments    replace one  or more  character s string s  in a string      categories   string routines      param STR  in required    the string to be changed      param RCHAR  in required    replacement character string      returns   another string      restrictions    Known shortcoming: if index is an array  it must contain all   valid elements  only the first entry is checked       examples            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      history          mgs  02 Jun 1998: VERSION 1 00          sebastien Masson  smlod ipsl jussieu fr       version    Id: strrepl pro 142 2006 07 21 12:47:49Z navarro         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"); 
     308a[306] = new Array("./ToBeReviewed/STRING/strright.html", "strright.pro", "", "         file_comments   return right subportion from a string      categories   string handling        param S  in required    the string to be searched      param LASTN  in required    the number of characters to be returned  Default   is 1  If NLAST is ge strlen STRING  the complete string   is returned       returns   The portion of LASTN characters of S counted from the back       examples   if  strright path  ne   then path   path          history          mgs  19 Nov 1997: VERSION 1 00      version    Id: strright pro 142 2006 07 21 12:47:49Z navarro         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"); 
     309a[307] = new Array("./ToBeReviewed/STRING/strsci.html", "strsci.pro", "", "         file_comments   Given a number  returns a string of that          B   number in scientific notation format   e g  A x 10         categories   String Utilities      param DATA  in required    A floating point or integer number to be   converted into a power of 10       keyword 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         keyword 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         keyword MANTISSA_ONLY   return only mantissa of the string      keyword SHORT   return 10 0 as  1  and 10 1 as  10       keyword TRIM   don t insert blanks  i e  return Ax10 B       restrictions   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       examples          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         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      version    Id: strsci pro 142 2006 07 21 12:47:49Z navarro         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"); 
     310a[308] = new Array("./ToBeReviewed/STRING/strtok.html", "strtok.pro", "", "         file_comments   Retrieve portion of string up to token        categories   text strings      param STRING  in required    String to be split   Contains text after    in  out   token on output        param TOKEN  in required    Token to use in splitting old              keyword TRIM    set to remove leading blanks from old    before returning       keyword HELP   print useful message and exit        returns   new     portion of string up to token               out   old     portion of old after token                  out  in      restrictions   Input parameter old is modified    Token may be one or more characters    If token is not found  returns old and sets old to         examples         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       history          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     Thanks:         To D  Linder who wrote GETTOK  part of the goddard library          upon which this is based      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       version    Id: strtok pro 142 2006 07 21 12:47:49Z navarro       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 "); 
     311a[309] = new Array("./ToBeReviewed/STRING/strwhere.html", "strwhere.pro", "", "         file_comments   return position  array  for occurence of a character in a string      categories   string tools      param STR  in required    the string      param SCHAR  in required    the character to look for      returns COUNT  out optional    The number of matches that were found       The function returns an index array similar to the     result of the where function      examples          ind   strwhere abcabcabc a               returns   0  3  6        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       version    Id: strwhere pro 142 2006 07 21 12:47:49Z navarro         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    "); 
     312a[310] = new Array("./ToBeReviewed/STRING/tostr.html", "tostr.pro", "", "             file_comments   Convert an input in a string       categories       param INPUT  in required    input can not contain or be of the type of:       Complex floating  structure  Double precision complex  Pointer  Object     reference  Unsigned Integer  Unsigned Longword Integer  64 bit     Integer  Unsigned 64 bit Integer       returns   a string      restrictions   If keywdvalue is an array  it will be convert in a vector       restrictions   Beware  this function has loops  ifs ad cases everywhere  So it can    not be used by big keywords  with a lot of elements which are big    arrays        examples      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       history   Sebastien Masson  smasson lodyc jussieu fr                         18 10 1999      version    Id: tostr pro 142 2006 07 21 12:47:49Z navarro             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"); 
    313313a[311] = new Array("./ToBeReviewed/STRUCTURE/chkstru.html", "chkstru.pro", "", "   Id: chkstru pro 134 2006 07 07 10:19:08Z navarro         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  "); 
    314314a[312] = 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"); 
Note: See TracChangeset for help on using the changeset viewer.